Czym dokładnie jest Java EE?

162

Robię Java SE od kilku lat i przechodzę do Java EE. Jednak mam pewne problemy ze zrozumieniem niektórych aspektów Java EE.

  1. Czy Java EE to tylko specyfikacja? Co mam na myśli to: czy EJB Java EE?

  2. Czy EJB / Spring to różne implementacje Java EE?

Przykro mi, że pytam, ale mam pewne trudności ze zrozumieniem, czym jest Java EE.

Czy ktoś mógłby wyjaśnić, czym jest Java EE? A EJB?

Frank Zimmer
źródło
2
Powinieneś jednak podzielić to pytanie na dwa pytania, jedno jest duplikatem, a drugie, jak sądzę, nie ma tam odpowiedzi.
Kheldar
2
Właściwie, czy czytałeś wiki tagów [java-ee] ?
Paŭlo Ebermann
także: who-implement-the-
spec

Odpowiedzi:

187

Czy Java EE to tylko specyfikacja? Co mam na myśli to: czy EJB Java EE?

Java EE jest rzeczywiście abstrakcyjną specyfikacją. Każdy jest otwarty na opracowanie i zapewnienie działającej implementacji specyfikacji. Te konkretne implementacje są tak zwane serwery aplikacyjne, jak JBoss Application Server , TomEE , GlassFish , Liberty , WebLogic , itd Istnieją również serwletów pojemniki, które realizują tylko JSP / Servlet część ogromnego Java EE API, takich jak Tomcat , Jetty , itp.

My, programiści Java EE, należy napisać kod wykorzystujący specyfikacji (tj importować tylko javax.* zajęcia w naszym kodzie zamiast klas konkretnej implementacji takich jak org.jboss.wildfly.*, com.sun.glassfish.*itp) i wtedy będziemy w stanie uruchomić naszego kodu na dowolnej implementacji (a więc, na dowolny Serwer aplikacji). Jeśli znasz JDBC, jest to w zasadzie ta sama koncepcja, co sposób działania sterowników JDBC. Zobacz także ao Najprościej mówiąc, czym jest fabryka?

Pakiet Java EE SDK do pobrania z Oracle.com zawiera w zasadzie serwer GlassFish wraz z całą dokumentacją i przykładami, a opcjonalnie także środowisko NetBeans IDE. Nie potrzebujesz go, jeśli chcesz mieć inny serwer i / lub IDE.

EJB jest częścią specyfikacji Java EE. Spójrz, jest w API Java EE . Pełnoprawne serwery aplikacji Java EE obsługują to od razu, ale proste kontenery JSP / Servlet nie.

Zobacz też:


Czy EJB / Spring to różne implementacje Java EE?

Nie, jak powiedziałem, EJB jest częścią Java EE. Spring to samodzielny framework, który zastępuje i ulepsza wiele części Java EE. Spring niekoniecznie wymaga do działania Java EE. Podstawowy kontener serwletów, taki jak Tomcat, jest już wystarczający. Mówiąc najprościej, Spring jest konkurentem Java EE. Np. „Spring” (samodzielny) konkuruje z EJB / JTA, Spring MVC konkuruje z JSF / JAX-RS, Spring DI / IoC / AOP konkuruje z CDI, Spring Security konkuruje z JAAS / JASPIC itp.

W dawnych czasach J2EE / EJB2 interfejs API EJB2 był okropny we wdrażaniu i utrzymywaniu. Wiosna była wtedy znacznie lepszą alternatywą dla EJB2. Ale od czasu EJB3 (Java EE 5) interfejs API EJB został znacznie ulepszony na podstawie wniosków wyciągniętych ze Springa. Od czasu CDI (Java EE 6) nie ma powodu, aby ponownie przyjrzeć się kolejnej platformie, takiej jak Spring, aby ułatwić programistom tworzenie m.in. warstwy usług.

Tylko wtedy, gdy używasz podstawowego kontenera serwletów, takiego jak Tomcat, i nie możesz przejść na serwer Java EE, Spring jest bardziej atrakcyjny, ponieważ łatwiej jest zainstalować Spring na Tomcat. Nie jest możliwe zainstalowanie np. Kontenera EJB na Tomcat bez modyfikowania samego serwera, po prostu wymyślałbyś TomEE na nowo.

Zobacz też:

BalusC
źródło
2
Można więc powiedzieć, że Java EE definiuje, jakie wsparcie powinno istnieć dla działania typowej aplikacji JEE?
James P.
4
@James: Tak. Prawie wszystko w Java EE API jest abstrakcyjne. Java SE API ma również kilka części abstrakcyjnych, np. JDBC, JAXP, JAXB itp.
BalusC
3
„Naprawdę nie ma powodu, aby ponownie przyjrzeć się kolejnemu frameworkowi, jak Spring, aby ułatwić programistom”. -> Naprawdę cenne informacje.
jacktrades
@BalusC: Cześć, Czy oficjalny link Sun Java EE… jest uszkodzony, jeśli podasz podobny link, będzie to pomocne dla kogoś.
Abdul Rahman
Do uruchomienia pełnego frameworka Springa wystarczyłby kontener serwletów, kontener serwletów to [serwer WWW + kontener WWW (implementuje api serwletu)], gdzie do uruchomienia Java EE potrzebny jest serwer aplikacji, taki jak Glassfish. Pojemnik serwletów nie wystarczy. Kontener serwletów jest podzbiorem serwera aplikacji. Jak to rozumiem?
nadmierna zmiana
11

Java Enterprise Edition (Java EE) to ogólna specyfikacja, która odwołuje się do wielu innych, bardziej szczegółowych specyfikacji, z których jedną z ważniejszych jest Enterprise JavaBeans (EJB).

Przeczytaj to - wyjaśnia różnicę między Java EE i Spring

Dzięki...

Prabath Siriwardena
źródło
4
  • Źródło - Java 2 Platform, Enterprise Edition (J2EE) definiuje standard tworzenia wielowarstwowych aplikacji korporacyjnych opartych na komponentach. J2EE upraszcza tworzenie aplikacji korporacyjnych, które są przenośne, skalowalne i łatwo integrują się ze starszymi aplikacjami i danymi.

  • Źródło - technologia Enterprise JavaBeans (EJB) to architektura komponentów po stronie serwera dla platformy Java Platform, Enterprise Edition (Java EE). Technologia EJB umożliwia szybkie i uproszczone tworzenie rozproszonych, transakcyjnych, bezpiecznych i przenośnych aplikacji opartych na technologii Java.

  • Czy Java EE to tylko specyfikacja? Co mam na myśli to: czy EJB Java EE?

    • Java EE to specyfikacja.

    • EJB to architektura komponentów po stronie serwera dla Java EE

  • Czy EJB / Spring to różne implementacje Java EE?

    • Zarówno EJB, jak i Spring to różne ramy zgodne z Java EE.
Srikanth Venkatesh
źródło
6
Cytowanie starożytnego tekstu (2005) ze starożytnej wersji specyfikacji (J2EE) może nie być zbyt przydatne. OP specjalnie poprosił o Java EE, która jest współczesnym wcieleniem J2EE.
Arjan Tijms
-5

Mówiąc prościej - JavaEE to platforma.

Składa się z wielu specyfikacji, które są tylko interfejsami API. Konkretne implementacje tych interfejsów API to tak zwane „implementacje referencyjne”

  1. EJB to tylko jedna specyfikacja w ramach platformy JavaEE
  2. Nie, Spring to framework aplikacji, który umożliwia / ma wsparcie przy tworzeniu aplikacji JavaEE

EJB to Enterprise Java Beans

Programista
źródło
4
Ta odpowiedź nie dodaje nic do poprzednich odpowiedzi. Co więcej, nie jest dokładna: tylko jedna konkretna implementacja jest odniesieniem, a inne nie. Mniejszy: Spring integruje się z JavaEE, ale może bez niego działać.
Tair
@tair Tak, tylko 1 konkretna implementacja jest traktowana jako „odniesienie”, np. JPA ma wiele implementacji, ale RI jest tylko EclipseLink. Kiedy wspomniałem o RI, miałem na myśli różne interfejsy API. Myślę, że źle zrozumiałeś moją odpowiedź powyżej. Ponadto tak, Spring integruje się z JavaEE, o czym wspomniałem powyżej.
SoftwareDeveloper