Java EE – co to jest?
Java EE to platforma zbudowana na bazie Java SE, która zapewnia interfejs API i środowisko wykonawcze do tworzenia i uruchamiania wielkoskalowych, wielowarstwowych, skalowalnych, niezawodnych i bezpiecznych aplikacji sieciowych. Takie aplikacje nazywane są aplikacjami korporacyjnymi, ponieważ rozwiązują problemy, z którymi borykają się duże firmy. Jednakże duże korporacje i agencje rządowe nie są jedynymi, które mogą czerpać korzyści z takich aplikacji i korzyści, jakie zapewnia Java EE. Rozwiązania oferowane przez platformę Java EE są przydatne, a czasem po prostu niezbędne, zarówno dla indywidualnych programistów, jak i małych organizacji.Rozwój Java EE
Java EE jest rozwijany w ramach procesu Java Community Process (JCP), utworzonego w 1998 roku. Umożliwia zainteresowanym uczestniczenie w kształtowaniu przyszłych wersji specyfikacji platformy językowej Java. Podstawą tego procesu jest JSR (JavaSpecification Request), formalne dokumenty opisujące specyfikacje i technologie, które mają zostać dodane do platformy Java. Takie prośby składają członkowie społeczności - zwykli programiści i firmy. Do tych ostatnich zaliczają się Oracle, Red Hat, IBM, Apache i wiele innych. Te. chłopaki proponują do rozważenia nowe funkcje i gadżety, które chcieliby uwzględnić w Javie. A następnie przeprowadzają głosowanie, na podstawie którego zapada decyzja, co uwzględnić w kolejnej wersji. Historia wersji Java EE wygląda następująco:- J2EE 1.2 (grudzień 1999)
- J2EE 1.3 (wrzesień 2001)
- J2EE 1.4 (listopad 2003)
- Java EE 5 (maj 2006)
- Java EE 6 (grudzień 2009)
- Java EE 7 (maj)
- Java EE 8 (sierpień 2017 r.)
- Dżakarta EE 8 (wrzesień 2019)
Architektura aplikacji Java EE
Krótkie wprowadzenie. Aby ułatwić zrozumienie, porozmawiajmy o strukturze aplikacji Java EE i niektórych terminach, których będziemy używać dalej. Aplikacje Java EE mają strukturę, która ma dwie kluczowe cechy:- Po pierwsze, wielopoziomowe. Aplikacje Java EE są wielowarstwowe i omówimy to bardziej szczegółowo później;
- po drugie, zagnieżdżanie. Istnieje serwer Java EE (lub serwer aplikacji) z umieszczonymi w nim kontenerami komponentów. W tych pojemnikach mieszczą się komponenty (bingo!).
Poziomy aplikacji
Aplikacje wielowarstwowe to aplikacje podzielone według zasad funkcjonalnych na izolowane moduły (poziomy, warstwy). Zazwyczaj (także w kontekście rozwoju Java EE) aplikacje korporacyjne dzieli się na trzy poziomy:- klient;
- średni poziom;
- poziom dostępu do danych.
-
Warstwa klienta to aplikacja żądająca danych z serwera Java EE (warstwa środkowa). Serwer z kolei przetwarza żądanie klienta i zwraca na nie odpowiedź. Aplikacją kliencką może być przeglądarka, samodzielna aplikacja (mobilna lub stacjonarna) lub inna aplikacja serwerowa bez interfejsu graficznego.
-
Poziom środkowy dzieli się z kolei na poziom sieciowy i poziom logiki biznesowej.
-
Warstwa sieciowa składa się z komponentów zapewniających interakcję pomiędzy klientami a warstwą logiki biznesowej.
Na poziomie sieci wykorzystywane są następujące technologie Java EE:
- Technologia JavaServer Faces (JSF);
- Strony serwera Java (JSP);
- Język wyrażeń (EL);
- serwlety;
- Konteksty i wstrzykiwanie zależności dla Java EE (CDI).
-
Warstwa logiki biznesowej składa się z komponentów implementujących całą logikę biznesową aplikacji. Logika biznesowa to kod zapewniający funkcjonalność pokrywającą potrzeby określonego obszaru biznesowego (branża finansowa, bankowość, e-commerce). Poziom ten można uznać za rdzeń całego systemu.
Technologie stosowane na tym poziomie:
- Korporacyjne komponenty JavaBeans (EJB);
- Usługi sieciowe JAX-RS RESTful;
- Jednostki API trwałości Java;
- Usługa wiadomości Java.
-
-
Poziom dostępu do danych. Poziom ten nazywany jest czasem poziomem systemów informatycznych przedsiębiorstwa (EIS). EIS składa się z różnych serwerów baz danych, systemów planowania zasobów przedsiębiorstwa ERP (Enterprise Resource Planning) i innych źródeł danych. Warstwa logiki biznesowej uzyskuje dostęp do tej warstwy w celu uzyskania danych.
Na tym poziomie można znaleźć technologie takie jak:
- Interfejs API łączności z bazą danych Java (JDBC);
- API trwałości Java;
- Architektura złącza Java EE;
- Interfejs API transakcji Java (JTA).
Serwery aplikacji, kontenery, komponenty
Przyjrzyjmy się definicji Java EE z Wikipedii. Java EE to zbiór specyfikacji i dokumentacji z nią związanej dla języka Java, opisującej architekturę platformy serwerowej dla zadań średnich i dużych przedsiębiorstw. Aby lepiej zrozumieć, co w tym kontekście oznacza „zestaw specyfikacji”, przeprowadźmy analogię z interfejsem Java. Sam interfejs Java jest pozbawiony funkcjonalności. Po prostu definiuje jakąś umowę, zgodnie z którą jakaś funkcjonalność jest realizowana. Ale inne klasy implementują interfejs. Co więcej, jeden interfejs może mieć kilka implementacji, z których każda może różnić się od siebie pewnymi szczegółami. Specyfikacja jest dokładnie taka sama. Naked Java EE to tylko zestaw specyfikacji. Specyfikacje te są wdrażane przez różne serwery Java EE. Serwer Java EE to aplikacja serwerowa, która implementuje interfejsy API platformy Java EE i udostępnia standardowe usługi Java EE. Serwery Java EE są czasami nazywane serwerami aplikacji. Dane serwera mogą zawierać komponenty aplikacji, z których każdy odpowiada swojemu poziomowi w wielopoziomowej hierarchii. Serwer Java EE udostępnia tym komponentom różne usługi w formie kontenera. Kontenery stanowią interfejs pomiędzy hostowanymi przez nie komponentami a niskopoziomową, niezależną od platformy funkcjonalnością obsługującą dany komponent. Kontenery zapewniają określone usługi komponentom, które hostują. Na przykład zarządzanie cyklem życia oprogramowania, wstrzykiwanie zależności, współbieżność itp. Kontenery ukrywają złożoność techniczną i zwiększają przenośność. W Java EE istnieją cztery różne typy kontenerów :-
Kontenery apletów są implementowane przez większość przeglądarek. Tworząc aplety, możesz skoncentrować się na wizualnej stronie aplikacji, podczas gdy kontener zapewnia bezpieczne środowisko.
-
Kontener klienta aplikacji (ACC) zawiera zestaw klas Java, bibliotek i innych plików potrzebnych do implementowania takich funkcji, jak wstrzykiwanie, zarządzanie bezpieczeństwem i usługi nazewnictwa w aplikacjach Java SE.
-
Kontener sieciowy zapewnia podstawowe usługi zarządzania i wykonywania komponentów sieciowych (serwlety, komponenty EJB Lite, strony JSP, filtry, odbiorniki, strony JSF i usługi sieciowe). Odpowiada za tworzenie instancji, inicjowanie i wywoływanie serwletów oraz obsługę protokołów HTTP i HTTPS. Kontener ten służy do udostępniania stron internetowych przeglądarkom klienckim.
-
Kontener EJB (Enterprise Java Bean) odpowiada za zarządzanie i wykonywanie komponentów modelu EJB, które zawierają warstwę logiki biznesowej aplikacji. Tworzy nowe jednostki komponentu EJB, zarządza ich cyklem życia i zapewnia usługi, takie jak transakcje, bezpieczeństwo, współbieżność, dystrybucja, nazewnictwo lub możliwości wywoływania asynchronicznego.
-
Aplety to aplikacje z graficznym interfejsem użytkownika (GUI), które działają w przeglądarce. Wykorzystują bogate API Swing do tworzenia potężnych interfejsów użytkownika.
-
Aplikacje to programy działające po stronie klienta. Zazwyczaj są to graficzne interfejsy użytkownika (GUI) i służą do przetwarzania wsadowego.
-
Aplikacje internetowe (składające się z serwletów i ich filtrów, detektorów zdarzeń sieciowych, stron JSP i JSF) - działają w kontenerze sieciowym i odpowiadają na żądania HTTP od klientów sieciowych. Serwlety obsługują także punkty końcowe usług internetowych SOAP i RESTful.
-
Aplikacje korporacyjne (zbudowane w oparciu o Enterprise Java Beans, Java Message Service, Java Transaction API, wywołania asynchroniczne, usługi czasowe) działają w kontenerze EJB. EJB zarządzane przez kontener obsługują transakcyjną logikę biznesową. Można uzyskać do nich dostęp lokalnie lub zdalnie poprzez RMI (lub HTTP w przypadku usług sieciowych SOAP i RESTful).
Technologie
Więc uporządkowaliśmy architekturę. Ogólna struktura powinna być jasna. W procesie opisywania komponentów architektonicznych poruszyliśmy niektóre technologie Java EE takie jak EJB, JSP itp. Przyjrzyjmy się im bliżej. Poniższa tabela przedstawia technologie stosowane głównie na poziomie klienta:Technologia | Zamiar |
---|---|
Serwlety | Klasy Java, które dynamicznie przetwarzają żądania klientów i generują odpowiedzi (zazwyczaj strony HTML). |
Twarze serwerów Java (JSF) | Framework do tworzenia aplikacji internetowych z interfejsem użytkownika. Umożliwia dołączanie komponentów interfejsu użytkownika (na przykład pól i przycisków) na stronie, przekształcanie i sprawdzanie tych komponentów oraz przechowywanie tych danych w magazynie po stronie serwera. |
Serwer Java stawia czoła technologii Facelets | Jest to podtyp aplikacji JSF, który wykorzystuje strony XHTML zamiast stron JSP |
Strony serwera Java (JSP) | Dokumenty tekstowe kompilowane w serwlety. Umożliwia dodawanie treści dynamicznych do stron statycznych (takich jak strony HTML) |
Standardowa biblioteka znaczników Java Server Pages (JSTL) | Biblioteka znaczników, która zawiera podstawową funkcjonalność w kontekście stron JSP. |
Język wyrażeń | Zestaw standardowych znaczników używanych na stronach JSP i Facelets w celu uzyskania dostępu do komponentów Java EE. |
Konteksty i wstrzykiwanie zależności dla Java EE (CDI) | Reprezentuje zestaw usług świadczonych przez kontenery Java EE do zarządzania cyklem życia komponentów, a także bezpiecznego wstrzykiwania komponentów do obiektów klienckich. |
Komponenty fasoli Java | Obiekty pełniące funkcję tymczasowego magazynu danych dla stron aplikacji. |
Technologia | Zamiar |
---|---|
Komponenty Enterprise Java Beans (ang. Enterprise Beans). | Komponenty EJB to zarządzane komponenty bean zawierające podstawową funkcjonalność aplikacji. |
JAX-RS RESTful usługi sieciowe | Jest to interfejs API do tworzenia usług sieciowych zgodnych ze stylem architektonicznym REST. |
Punkty końcowe usług internetowych JAX-WS | API do tworzenia i korzystania z usług sieciowych SOAP. |
Jednostki Java Persistence API (JPA). | Interfejs API umożliwiający dostęp do danych w magazynach danych i konwertowanie tych danych na obiekty języka programowania Java i odwrotnie. |
Fasola zarządzana przez Java EE | Zarządzane komponenty bean, które zapewniają logikę biznesową aplikacji, ale nie wymagają funkcji transakcyjnych ani zabezpieczeń EJB. |
Usługa wiadomości Java | Interfejs API Java Message Service (JMS) to standard przesyłania wiadomości, który umożliwia komponentom aplikacji Java EE tworzenie, wysyłanie, odbieranie i odczytywanie wiadomości. Zapewnia to rozproszoną, niezawodną i asynchroniczną komunikację pomiędzy komponentami. |
Technologia | Zamiar |
---|---|
Interfejs API łączności z bazą danych Java (JDBC) | Niskopoziomowy interfejs API umożliwiający dostęp i pobieranie danych z magazynów danych. Typowym zastosowaniem JDBC jest pisanie zapytań SQL do określonej bazy danych. |
Interfejs API trwałości Java | Interfejs API umożliwiający dostęp do danych w magazynach danych i konwertowanie tych danych na obiekty języka programowania Java i odwrotnie. Znacznie wyższy poziom API w porównaniu do JDBC. Ukrywa całą złożoność JDBC przed programistą pod maską. |
Architektura złącza Java EE | API do łączenia innych zasobów korporacyjnych, takich jak:
|
Interfejs API transakcji Java (JTA) | Interfejs API do definiowania transakcji i zarządzania nimi, w tym transakcji rozproszonych i transakcji obejmujących wiele magazynów danych. |
GO TO FULL VERSION