2012-10-08 11 views

Odpowiedz

5

Serwery aplikacyjne, takie jak serwery Java EE i kontenery OSGI, używają niestandardowego programu ładującego klasy do dynamicznego aktualizowania i usuwania oprogramowania.

Inne niestandardowe classloaders są wykorzystywane do wspierania zastrzyki kod dynamiczny (od Javy 5.0 Instrumentation jest preferowany)

+0

Inne niestandardowe classloaders są wykorzystywane do wspierania kod dynamiczny zastrzyki "Czy to coś w rodzaju zależnych pojemników iniekcyjnych? – Mayumi

+0

Zmieniają kod w czasie wykonywania, nawet zmieniając klasy systemowe. –

4

Typowe przypadki to:

  • klas Instrument/obciążenie przy starcie.

  • Załaduj zaszyfrowane klasy.

  • Zdalne ładowanie klasy.

2

To nie jest coś, co można prawdopodobnie kiedykolwiek napisać samemu, ale można skorzystać z jednego w ramach niektórych złożonych struktur - na przykład wtrysk zależności często jest implementowany za pomocą ClassLoaders. Innym popularnym zastosowaniem programów ładujących klasy niestandardowej jest testowanie jednostkowe: niestandardowy program ładujący klasy może być użyty do zastąpienia klas ładowanych przez testowaną jednostkę wersjami "fałszywymi", które reagują w kontrolowany sposób (na przykład, aby symulować błędy, które w przeciwnym razie byłyby trudne do utworzenia).

1

Szczerze mówiąc, trudno wyobrazić sobie ekosystem Java bez niestandardowych programów ładujących klasy. Wiele luźno powiązanych architektur opiera się na modułach ładujących klasy. Proponuję spędzić kilka godzin z JSPF (Java Simple Plugin Framework), ponieważ tylko niektóre praktyczne doświadczenia będą dla ciebie naprawdę cenne. JSPF jest dość prosty i pozwala nie tylko zrozumieć potencjalne przypadki, kiedy niestandardowe programy ładujące klasy są potrzebne, ale także poczuć moc takiego rozwiązania.

próbować podążać prosty plan:

  • zdefiniować interfejs (a zamówienia)
  • zapewnić realizację jako samodzielny moduł/słoik
  • Zastosowanie JSPF a wcześniej zdefiniowany kontrakt odkryć dostępne realizacji (s)
  • Zrobić kilka przydatnych rzeczy z odkrytą implementacją
  • Zrozum, że masz luźno połączony system
  • Dowiedz się, jak classloaders są rzeczywiście wykorzystywane w tym przykładzie

Proszę również przejrzeć poniższe linki:

Powiązane problemy