Dlaczego biblioteki nie mogą działać poza środowiskiem serwera aplikacji?
Właściwie mogą. Większość bibliotek może być bezpośrednio używana samodzielnie (w Javie SE) lub dołączona do pliku .war (prawie zawsze jest to Tomcat). Niektóre części Java EE, takie jak JPA, mają wyraźne sekcje w swoich specyfikacjach, które mówią, jak powinny działać i być używane w Java SE.
Jeśli już, chodzi nie tyle o samo środowisko serwera aplikacji, ile o obecność wszystkich innych bibliotek i łączący je kod integracji.
Z tego powodu adnotacje będą skanowane tylko raz dla wszystkich klas, a nie każdej biblioteki (EJB, JPA itp.), Która będzie skanować w kółko. Również z tego powodu adnotacje CDI można zastosować do fasoli EJB, a menedżerów jednostek JPA można do nich wstrzyknąć.
Dlaczego potrzebuję czegoś masywnego jako JBoss tylko do skompilowania prostego kodu do wysłania e-maila?
Jest kilka rzeczy nieprawidłowych w tym pytaniu:
- Do kompilacji potrzebujesz tylko jar API, który ma mniej niż 1 MB dla profilu internetowego i nieco ponad 1 MB dla pełnego profilu.
- Do biegania potrzebujesz oczywiście implementacji, ale „masowość” to zawyżanie rzeczy. Na przykład OpenJDK ma około 75 MB, a TomEE (implementacja profilu internetowego zawierająca obsługę poczty) ma tylko 25 MB. Nawet GlassFish (implementacja pełnego profilu) ma tylko 53 MB.
- Mail działa doskonale z Java SE (a tym samym z Tomcat), a także przy użyciu samodzielnych mail.jar i Activation.jar .
Dlaczego biblioteki Java EE nie są „standardowe” i są dołączane do zwykłego pobierania maszyny JVM i / lub zestawu SDK?
Java EE była w pewnym sensie jedną z pierwszych prób podzielenia i tak już ogromnego JDK na porcje, które są łatwiejsze do zarządzania i pobierania. Ludzie już narzekają, że klasy graficzne (AWT, Swing) i aplety są wewnątrz środowiska JRE, podczas gdy jedyne, co robią, to uruchamianie niektórych poleceń na serwerze bezgłowym. Czy chcesz również uwzględnić wszystkie biblioteki Java EE w standardowym JDK?
Wraz z ostatecznym wydaniem obsługi modułowości będziemy mieli tylko małe podstawowe środowisko JRE z wieloma rzeczami, które można oddzielnie zainstalować jako pakiety. Być może pewnego dnia wiele lub nawet wszystkie klasy, które teraz tworzą Java EE, będą również takim pakietem. Czas pokaże.
Dlaczego jest tak wiele ofert Java EE, skoro tak naprawdę są tylko dwie główne odmiany standardowej Java (Oracle JVM / SDK | OpenJDK JVM / JDK)?
Istnieje więcej niż tylko dwie odmiany Java SE. Jest przynajmniej IBM JDK, poprzedni BEA (JRocket, który jest łączony z Oracle / Sun z powodu przejęcia), różne inne implementacje open source i mnóstwo implementacji do użytku wbudowanego.
Powodem, dla którego Java SE i EE są specyfikacjami, jest to, że wielu dostawców i organizacji może je wdrożyć, a tym samym sprzyja konkurencji i zmniejsza ryzyko uzależnienia od dostawcy.
Nie inaczej jest w przypadku kompilatorów C i C ++, w przypadku których masz wiele konkurencyjnych ofert, a wszystkie są zgodne ze standardem C ++.
Dlaczego wersja biblioteki Java EE nie jest zsynchronizowana ze standardowymi wydaniami bibliotek Java (Java EE 6 kontra Java 7)
Java EE jest oparta na Javie SE, więc pozostaje w tyle. Wersje jednak odpowiadają. Java EE 5 wymaga Java SE 5. Java EE 6 wymaga Java SE 6 i tak dalej. Tyle, że głównie wtedy, gdy Java SE X jest aktualna, Java EE X-1 jest aktualna.