Dżakarta EE - Jakarta EE

Dżakarta EE
Dżakarta EE logo szkuner kolor ułożony domyślnie
Oprogramowanie odtwarzacza Jawa
Języki programowania) Jawa
Aplikacje) Serwer aplikacji
Status Aktywny
Licencja Licencja Publiczna Eclipse lub Powszechna Licencja Publiczna GNU z wyjątkiem Classpath

Jakarta EE , dawniej Java Platform, Enterprise Edition ( Java EE ) i Java 2 Platform, Enterprise Edition ( J2EE ) to zestaw specyfikacji rozszerzający Java SE o specyfikacje funkcji korporacyjnych, takich jak przetwarzanie rozproszone i usługi internetowe . Aplikacje Jakarta EE są uruchamiane na referencyjnych środowiskach uruchomieniowych , które mogą być mikrousługami lub serwerami aplikacji , które obsługują transakcje, bezpieczeństwo, skalowalność, współbieżność i zarządzanie wdrażanymi komponentami.

Jakarta EE jest zdefiniowana przez swoją specyfikację . Specyfikacja definiuje API (interfejs programowania aplikacji) i ich interakcje. Podobnie jak w przypadku innych specyfikacji Java Community Process , dostawcy muszą spełnić określone wymagania zgodności, aby zadeklarować swoje produkty jako zgodne z Dżakartą EE .

Przykładami kontekstów, w których wykorzystywane są odwołujące się środowiska wykonawcze Jakarta EE, to: e-commerce , księgowość, bankowe systemy informatyczne.

Historia

Platforma była znana jako Java 2 Platform, Enterprise Edition lub J2EE od wersji 1.2, aż do zmiany nazwy na Java Platform, Enterprise Edition lub Java EE w wersji 1.5.

Java EE była utrzymywana przez Oracle w ramach Java Community Process . 12 września 2017 r. firma Oracle Corporation ogłosiła, że ​​zgłosi Java EE do Eclipse Foundation . Projekt najwyższego poziomu Eclipse został nazwany Eclipse Enterprise for Java (EE4J). Fundacja Eclipse nie mogła zgodzić się z Oracle w sprawie używania znaków towarowych javax i Java. Oracle jest właścicielem znaku towarowego dla nazwy „Java” i zmienił nazwę platformy Java EE na Jakarta EE. Nie należy mylić nazwy z dawnym Projektem Jakarta, który wspierał wiele obecnych i byłych projektów Java w Apache Software Foundation .

  • J2EE 1.2 (12 grudnia 1999)
  • J2EE 1.3 (24 września 2001)
  • J2EE 1.4 (11 listopada 2003)
  • Java EE 5 (11 maja 2006)
  • Java EE 6 (10 grudnia 2009)
  • Java EE 7 (28 maja 2013), ale 5 kwietnia 2013 zgodnie ze specyfikacją. 12 czerwca 2013 był planowaną datą rozpoczęcia
  • Java EE 8 (31 sierpnia 2017 r.)
  • Jakarta EE 8 (10 września 2019) - w pełni kompatybilna z Java EE 8
  • Jakarta EE 9 (22 listopada 2020 r.) - zmiana przestrzeni nazw javax.* na jakarta.*.
  • Dżakarta EE 9.1 (25 maja 2021) – obsługa JDK 11

Specyfikacje

Jakarta EE zawiera kilka specyfikacji, które służą różnym celom, takim jak generowanie stron internetowych, odczytywanie i zapisywanie z bazy danych w sposób transakcyjny, zarządzanie kolejkami rozproszonymi.

Interfejsy API Jakarta EE obejmują kilka technologii rozszerzających funkcjonalność podstawowych interfejsów API Java SE , takich jak Jakarta Enterprise Beans , konektory , serwlety , Jakarta Server Pages i kilka technologii usług internetowych .

Specyfikacje internetowe

  • Jakarta Servlet : określa sposób zarządzania żądaniami HTTP w sposób synchroniczny lub asynchroniczny. Jest to niski poziom i opierają się na nim inne specyfikacje Jakarta EE;
  • Jakarta WebSocket: specyfikacja API, która definiuje zestaw interfejsów API do obsługi połączeń WebSocket ;
  • Jakarta Faces : technologia konstruowania interfejsów użytkownika z komponentów;
  • Jakarta Expression Language ( EL ) to prosty język, który został pierwotnie zaprojektowany w celu zaspokojenia specyficznych potrzeb programistów aplikacji internetowych. Jest używany w szczególności w Jakarta Faces do wiązania komponentów z (podstawowymi) ziarnami oraz w Contexts i Dependency Injection z nazwanymi ziarnami, ale można go używać na całej platformie.

Specyfikacje usług internetowych

Specyfikacje dla przedsiębiorstw

  • Jakarta Contexts and Dependency Injection ( CDI ) to specyfikacja zapewniająca kontener wstrzykiwania zależności ;
  • Specyfikacja Jakarta Enterprise Beans ( EJB ) definiuje zestaw lekkich interfejsów API, które kontener obiektów (kontener EJB) będzie obsługiwał w celu dostarczania transakcji (przy użyciu JTA ), zdalnych wywołań procedur (przy użyciu RMI lub RMI-IIOP ), kontroli współbieżności , zależności wstrzykiwanie i kontrola dostępu do obiektów biznesowych. Ten pakiet zawiera klasy i interfejsy Jakarta Enterprise Beans, które definiują umowy między komponentem bean przedsiębiorstwa a jego klientami oraz między nim a kontenerem ejb.
  • Jakarta Persistence ( JPA ) to specyfikacje dotyczące mapowania obiektowo-relacyjnego między tabelami relacyjnych baz danych a klasami Java.
  • Jakarta Transactions ( JTA ) zawiera interfejsy i adnotacje do interakcji z obsługą transakcji oferowaną przez Jakarta EE. Mimo że ten interfejs API abstrahuje od szczegółów naprawdę niskiego poziomu, interfejsy są również uważane za nieco niskopoziomowe i zakłada się, że przeciętny programista aplikacji w Jakarta EE albo polega na przejrzystej obsłudze transakcji przez abstrakcje EJB wyższego poziomu, albo używa adnotacje dostarczane przez ten interfejs API w połączeniu z komponentami zarządzanymi przez CDI.
  • Jakarta Messaging ( JMS ) zapewnia programom Java typowy sposób tworzenia, wysyłania, odbierania i odczytywania komunikatów korporacyjnego systemu przesyłania wiadomości.

Inne specyfikacje

  • Walidacja: Ten pakiet zawiera adnotacje i interfejsy do obsługi walidacji deklaratywnej oferowanej przez interfejs API walidacji Bean . Walidacja ziaren zapewnia ujednolicony sposób wprowadzania ograniczeń dotyczących ziaren (np. klas modeli JPA), które można wymuszać między warstwami. W Jakarta EE JPA honoruje ograniczenia walidacji ziaren w warstwie trwałości, podczas gdy JSF robi to w warstwie widoku.
  • Jakarta Batch zapewnia środki do przetwarzania wsadowego w aplikacjach w celu uruchamiania długotrwałych zadań w tle, które mogą obejmować duże ilości danych i które mogą wymagać okresowego wykonywania.
  • Jakarta Connectors to oparte na Javie narzędzie do łączenia serwerów aplikacji i systemów informatycznych przedsiębiorstw ( EIS ) w ramach integracji aplikacji korporacyjnych ( EAI ). Jest to interfejs API niskiego poziomu przeznaczony dla dostawców, z którymi przeciętny programista aplikacji zazwyczaj nie ma kontaktu.

Profil internetowy

Próbując ograniczyć rozmiar kontenerów internetowych, zarówno pod względem fizycznym, jak i koncepcyjnym, stworzono profil internetowy, podzbiór specyfikacji Jakarta EE. Profil internetowy Jakarta EE obejmuje:

Specyfikacja Java EE 6 Java EE 7 Java EE 8
Dżakarta EE 8
Dżakarta EE 9
Serwlet Dżakarta 3,0 3.1 4.0 5.0
Strony serwera Dżakarty ( JSP ) 2.2 2,3 2,3 3,0
Jakarta Expression Language ( EL ) 2.2 3,0 3,0 4.0
Obsługa debugowania Dżakarty dla innych języków (JSR-45) 1,0 1,0 1,0 2,0
Standardowa biblioteka tagów Dżakarty ( JSTL ) 1.2 1.2 1.2 2,0
Twarze Dżakarty ( JSF ) 2,0 2.2 2,3 3,0
Jakarta RESTful Web Services ( JAX-RS ) 1,1 2,0 2,1 3,0
Dżakarta WebSocket ( WebSocket ) Nie dotyczy 1,0 1,1 2,0
Dżakarta Przetwarzanie JSON ( JSON-P ) Nie dotyczy 1,0 1,1 2,0
Dżakarta Wiązanie JSON Nie dotyczy Nie dotyczy 1,1 2,0
Adnotacje z Dżakarty ( JSR 250 ) 1,1 1.2 1,3 2,0
Jakarta Enterprise Fasola ( EJB ) 3.1 Lite 3.2 Lite 3.2 Lite 4.0 Lite
Transakcje w Dżakarcie ( JTA ) 1,1 1.2 1.2 2,0
Trwałość w Dżakarcie ( WZP ) 2,0 2,1 2.2 3,0
Walidacja fasoli z Dżakarty 1,0 1,1 2,0 3,0
Fasola zarządzana z Dżakarty 1,0 1,0 1,0 2,0
Przechwytywacze w Dżakarcie 1,1 1.2 1.2 2,0
Konteksty Dżakarty i wstrzykiwanie zależności ( CDI ) 1,0 1,1 2,0 3,0
Wstrzykiwanie zależności w Dżakarcie 1,0 1,0 1,0 2,0
Bezpieczeństwo w Dżakarcie Nie dotyczy Nie dotyczy 1,0 2,0
Uwierzytelnianie w Dżakarcie Nie dotyczy 1,0 1,1 2,0

Certyfikowane referencyjne środowiska wykonawcze

Chociaż z definicji wszystkie implementacje Jakarta EE zapewniają ten sam podstawowy poziom technologii (mianowicie specyfikację Jakarta EE i powiązane interfejsy API), mogą się one znacznie różnić pod względem dodatkowych funkcji (takich jak złącza , klastrowanie , odporność na awarie , wysoka dostępność , bezpieczeństwo , itp.), zainstalowany rozmiar, rozmiar pamięci, czas uruchamiania itp.


Dżakarta EE

Odwoływanie się do środowiska wykonawczego Deweloper Produkty zgodne z platformą Dżakarta EE 9 Produkty zgodne z profilem internetowym Dżakarta EE 9 Produkty zgodne z platformą Jakarta EE 8 Produkty zgodne z profilem internetowym Jakarta EE 8 Koncesjonowanie
Szklana ryba Zaćmienie Tak 6.0.0 Tak 6.0.0 Tak 5.1.0 Tak 5.1.0 Darmowe oprogramowanie
Otwarta Wolność IBM Tak 21.0.0.3-beta Tak 21.0.0.2-beta Tak 19.0.0.6, 20.0.0.3 Tak 19.0.0.6, 20.0.0.3 Darmowe oprogramowanie
IBM WebSphere Liberty IBM Nie Nie Tak 20.0.0.3 Tak 20.0.0.3 Zastrzeżone oprogramowanie
Dzika Mucha czerwony kapelusz Nie Tak 23.0.0 Tak 18.0.0 Tak 18.0.0 Darmowe oprogramowanie
Platforma aplikacji dla przedsiębiorstw Red Hat JBoss czerwony kapelusz Nie Nie Tak 7.3.0 Tak 7.3.0 Darmowe oprogramowanie
Dla mnie Apache Nie Tak 10.0.x Nie Tak 9.x Darmowe oprogramowanie
Serwer Payara Usługi Payara Ograniczone Nie Nie Tak 5.22.0, 5.23.0 Tak 5.23.0 Darmowe oprogramowanie
Serwer aplikacji Thunisoft Technologia informacyjna Pekinu Thunisoft Nie Nie Tak 2,8 Nie Zastrzeżone oprogramowanie
JEZUS TmaxSoft Nie Nie Tak 8,5 Nie Zastrzeżone oprogramowanie
Serwer aplikacji InforSuite Oprogramowanie pośredniczące Shandong Cvicse Nie Nie Tak 10 Nie Zastrzeżone oprogramowanie

Java EE

Odwoływanie się do środowiska wykonawczego Deweloper Certyfikat Java EE 8 – Pełny Certyfikat Java EE 8 – Internet Certyfikat Java EE 7 – Pełny Certyfikat Java EE 7 – Internet Certyfikat Java EE 6 — pełna
oficjalna strona Oracle dotycząca zgodności z Java EE.
Certyfikat Java EE 6 – Internet Certyfikat Java EE 5 Certyfikat J2EE 1.4 Koncesjonowanie
Serwer GlassFish Open Source Edition Wyrocznia Tak v5.0 Tak v5.0 Tak v4.x Tak v4.x Tak v3.x i nowsze Tak v3.x profil sieciowy Tak v2.1.x Darmowe oprogramowanie
Serwer Oracle GlassFish Wyrocznia Tak v3 w oparciu o serwer aplikacji GlassFish typu open source Tak Serwer aplikacji Sun Java System v9.0 Tak Serwer aplikacji Sun Java System v8.2 Zastrzeżone oprogramowanie
Serwer Oracle WebLogic Wyrocznia Tak 14.1.1 Tak 12.2.1 Tak v12c Tak v10.3.5.0 Tak v9 Zastrzeżone oprogramowanie
Dzika Mucha czerwony kapelusz Tak v14.x Tak v14.x Tak v8.1 Tak v8.0.0. Ostateczny Tak v7.1 Tak v6.0 i v7.0 Tak v5.1 Tak v4.x Darmowe oprogramowanie
Platforma aplikacji JBoss dla przedsiębiorstw czerwony kapelusz Tak v7.2 Tak v7.0 Tak v7.0 Tak v6.0 Tak v5 Zastrzeżone oprogramowanie
Serwer aplikacji IBM WebSphere IBM Tak v9.x Tak v9.x Tak v8 Tak v7 tak Zastrzeżone oprogramowanie
IBM WebSphere Application Server Liberty IBM Tak v18.0.0.2 Tak v18.0.0.2 Tak v8.5.5.6 Tak v8.5.5.6 Tak v8.5.5 Zastrzeżone oprogramowanie
Otwarta Wolność IBM Tak v18.0.0.2 Tak v18.0.0.2 Darmowe oprogramowanie
IBM WebSphere Application Server Community Edition IBM Tak v3.0 Tak v2.1 Zastrzeżone oprogramowanie
Apache Geronimo Apache Tak v3.0-beta-1 Tak v2.0 Tak v1.0 Darmowe oprogramowanie
JEZUS TmaxSoft Tak v8 Tak v7 Tak v6 Tak v5 Zastrzeżone oprogramowanie
Serwer aplikacji Cosminexus Hitachi Tak v10.0 Tak v9 Zastrzeżone oprogramowanie
Serwer aplikacji Fujitsu Interstage Fujitsu Tak v12.0 Tak v1 Azure/v10.1 tak Zastrzeżone oprogramowanie
WebOTX NEC tak tak Zastrzeżone oprogramowanie
Serwer aplikacji BES Baolande Tak v9.5
Apache TomEE Apache Nr 7 (podobny do Java EE 7, ale nie certyfikowany) tak Darmowe oprogramowanie
Serwer żywiczny Caucho Tak v4.0 tak Zastrzeżone oprogramowanie
Siwpas OW2 Tak v6.0 Darmowe oprogramowanie
JONAS OW2 Tak v5.3 rc1 tak tak Darmowe oprogramowanie
SAP NetWeaver SOK ROŚLINNY Tak v2.x tak tak Zastrzeżone oprogramowanie
Kontenery Oracle dla Java EE Wyrocznia tak Zastrzeżone oprogramowanie
Serwer sieciowy Oracle iPlanet Wyrocznia Tak Serwer WWW systemu Sun Java Zastrzeżone oprogramowanie
Serwer aplikacji Oracle 10g Wyrocznia tak Zastrzeżone oprogramowanie
Serwer Pramati Technologie Pramati Tak v5.0 Zastrzeżone oprogramowanie
Trójwidłowy T4 Trifork tak Zastrzeżone oprogramowanie
Serwer aplikacji Sybase Enterprise Sybase tak Zastrzeżone oprogramowanie

Próbka kodu

Poniższy przykład kodu pokazuje, w jaki sposób różne technologie w Java EE 7 są używane razem do tworzenia formularza internetowego do edycji użytkownika.

W Jakarta EE (internetowy) interfejs użytkownika można zbudować przy użyciu Jakarta Servlet , Jakarta Server Pages ( JSP ) lub Jakarta Server Faces ( JSF ) z Facelets . Poniższy przykład wykorzystuje Faces i Facelets . Nie pokazano wyraźnie, że komponenty wejściowe używają interfejsu API Jakarta EE Bean Validation pod osłonami do sprawdzania poprawności ograniczeń.

<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://xmlns.jcp.org/jsf/html" xmlns:f="http://xmlns.jcp.org/jsf/core">

    <f:metadata>
        <f:viewParam name="user_id" value="#{userEdit.user}" converter="#{userConvertor}" />
    </f:metadata>

    <h:body>

        <h:messages />

        <h:form>
            <h:panelGrid columns="2">
                <h:outputLabel for="firstName" value="First name" />
                <h:inputText id="firstName" value="#{userEdit.user.firstName}" label="First name" />

                <h:outputLabel for="lastName" value="Last name" />
                <h:inputText id="lastName" value="#{userEdit.user.lastName}" label="Last name" />

                <h:commandButton action="#{userEdit.saveUser}" value="Save" />
            </h:panelGrid>
        </h:form>

    </h:body>
</html>

Przykładowa klasa Backing Bean

Aby wspomóc ten widok, Jakarta EE używa koncepcji zwanej „fasolką wspierającą”. Poniższy przykład używa Contexts and Dependency Injection (CDI) i Jakarta Enterprise Beans ( EJB ).

@Named
@ViewScoped
public class UserEdit {

    private User user;

    @Inject
    private UserDAO userDAO;

    public String saveUser() {
        userDAO.save(this.user);
        addFlashMessage("User " + this.user.getId() + " saved");

        return "users.xhtml?faces-redirect=true";
    }

    public void setUser(User user) {
        this.user = user;
    }

    public User getUser() {
        return user;
    }
}

Przykładowa klasa obiektu dostępu do danych

Aby wdrożyć logikę biznesową, Jakarta Enterprise Beans ( EJB ) to dedykowana technologia w Dżakarcie EE. Do rzeczywistej trwałości można użyć JDBC lub Jakarta Persistence (JPA). Poniższy przykład używa EJB i JPA. Nie wykazano wyraźnie, że JTA jest używane pod osłonami przez EJB do kontrolowania zachowań transakcyjnych.

@Stateless
public class UserDAO {

    @PersistenceContext
    private EntityManager entityManager;

    public void save(User user) {
        entityManager.persist(user);
    }

    public void update(User user) {
        entityManager.merge(user);
    }

    public List<User> getAll() {
        return entityManager.createNamedQuery("User.getAll", User.class)
                            .getResultList();
    }

}

Przykładowa klasa Entity

Do definiowania klas encji/modeli firma Jakarta EE udostępnia interfejs Jakarta Persistence ( JPA ), a do wyrażania ograniczeń na tych encjach udostępnia interfejs API sprawdzania poprawności ziaren (Bean Validation API). Poniższy przykład wykorzystuje obie te technologie.

@Entity
public class User {

    @Id
    @GeneratedValue(strategy = IDENTITY)
    private Integer id;

    @Size(min = 2, message="First name too short")
    private String firstName;

    @Size(min = 2, message="Last name too short")
    private String lastName;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getFirstName() {
        return firstName;
    }

    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }

    public String getLastName() {
        return lastName;
    }

    public void setLastName(String lastName) {
        this.lastName = lastName;
    }

}

Zobacz też

Bibliografia

Zewnętrzne linki