JavaRush /Blog Java /Random-PL /Przerwa kawowa #119. Wprowadzenie do Java Enterprise Edit...

Przerwa kawowa #119. Wprowadzenie do Java Enterprise Edition (Java EE)

Opublikowano w grupie Random-PL
Źródło: Dev.to Java Enterprise Edition (Java EE) to zbiór specyfikacji i dokumentacji języka Java opisujący architekturę platformy serwerowej do rozwiązywania problemów średnich i dużych przedsiębiorstw. Przerwa kawowa #118.  Wprowadzenie do Java Enterprise Edition (Java EE) - 1Ucząc się Java EE, spotkasz się z następującymi terminami:
  • Serwer aplikacji to konkretna implementacja abstrakcyjnych specyfikacji Java EE. Przykłady: Serwer Payara (Glassfish), IBM OpenLiberty i JBoss Wildfly.

  • Żądanie specyfikacji Java (JSR) to formalna prośba skierowana do społeczności Java o dodanie i ulepszenie technologii. Jest to podmiot standaryzujący API na platformie technologicznej Java i służący do grupowania API w bloki, takie jak JAX-RS (Java API for RESTful Web Services). Dla każdego JSR zawsze istnieje domyślna implementacja referencyjna.

  • Implementacja referencyjna to konkretna implementacja/implementacja abstrakcyjnego JSR. Na przykład referencyjna implementacja JAX-RS nosi nazwę Jersey. Sama Java EE jest JSR. Zatem serwer aplikacji jest zbiorem różnych implementacji referencyjnych Java EE JSR. Java EE to JSR 366, a jedną z jej referencyjnych implementacji jest Glassfish 5.

  • Jakarta EE to nowa nazwa Java EE obowiązująca od 2018 roku. Obecnie Oracle przekazało platformę Java pod zarządzanie Fundacji Eclipse .

Podstawy JavaEE

W Java EE istnieją trzy kluczowe interfejsy API:
  1. Interfejs API trwałości Java (JPA). Odpowiada za przechowywanie i pobieranie informacji z relacyjnych baz danych, które można rozszerzyć o współpracę z bazami NoSQL. To jest warstwa danych w aplikacji.

  2. Wstrzykiwanie kontekstu i zależności (API CDI). Jest to ustandaryzowany sposób ograniczenia sprzężeń w zastosowaniach. Zarządza różnymi interakcjami komponentów, aby zapewnić swobodne oddzielenie.

  3. API Java dla usług sieciowych RESTful (JAX-RS). Udostępnia zasoby poprzez HTTP jako usługi sieciowe.

API kontekstu i wstrzykiwania zależności

Wstrzykiwanie zależności to specjalna forma kontroli inwersji (strategia oprogramowania, w której poszczególne komponenty otrzymują swoje zależności). To uzewnętrznia zależność w aplikacji w celu utworzenia komponentów o niskim sprzężeniu.

Cechy CDI

  • Wstrzykiwanie zależności (Typesafe) umożliwia deklarowanie zależności od typów, dzięki czemu kompilator wychwytuje błędy w czasie wykonywania.

  • Konteksty cyklu życia to możliwość powiązania interakcji cyklu życia i komponentów stanowych z dobrze zdefiniowanymi, ale rozszerzalnymi komponentami cyklu życia.

  • Przechwytywacze umożliwiają przechwytywanie żądań dostępu do określonej metody.

  • Zdarzenia są sposobem na tworzenie wysoce oddzielonych aplikacji. Zdarzenia można uruchamiać, gdy metoda Observers nasłuchuje uruchomionych zdarzeń.

  • Interfejs dostawcy usług (SPI) to zestaw technik, interfejsów API i interfejsów, których można używać jako rozszerzeń, na przykład w bibliotece Apache.

Niektóre koncepcje API CDI:

  • CDI Bean Discovery to mechanizm, w którym struktura wstrzykiwania zależności analizuje i odkrywa komponenty bean, aby kontrolować domyślny sposób wykrywania komponentów bean, czyli ziaren z adnotacjami, takimi jak @Annotated. Istnieją trzy typy trybu wykrywania komponentów bean: WSZYSTKIE (w tym komponenty bean bez adnotacji), ANNOTATED i NONE.

  • Kontener CDI to metoda fabryczna, w której klasy Java wchodzą i wychodzą z ich funkcjonalnością i możliwościami. To jest aplikacja zarządzająca fasolą.

  • Instancje fasoli i kontekstu. Bean to szablon tworzony przez programistę. Instancja kontekstowa to instancja komponentu Bean utworzona i zarządzana przez kontener CDI.

API trwałości Java

JPA służy do mapowania obiektów na tabele relacyjnej bazy danych. Interfejs API Java Persistence jest zgodny z zasadami manifestu ORM. Manifest ORM (Manifest mapowania relacyjnego obiektu):
  • Obiekty, a nie tabele: programiści piszą obiekty, a nie tabele.

  • Wygoda, a nie ignorancja: ORM powinien być wygodny. Programiści powinni posiadać minimalną wiedzę na temat relacyjnych baz danych. ORM nie jest sposobem na ukrycie niewiedzy, ale wygodą.

  • Dyskretny i przejrzysty: ORM powinien zapewniać programistom kontrolę nad zawartością bazy danych i pełną kontrolę nad tym, co jest zapisywane. Starsze dane, nowe obiekty: ORM umożliwi Ci tworzenie nowych obiektów ze starszych danych, czyli rekonstrukcję dotychczasowej bazy danych na obiekty Java.

  • Wystarczająco, ale nie za dużo: ORM zapewni wszystkie narzędzia do rozwiązywania typowych problemów wynikających z niedopasowania impedancji (termin używany w odniesieniu do problemów, które powstają w wyniku różnic pomiędzy modelem bazy danych a językiem programowania). ORM nie powinien być zbyt ciężki.

  • Lokalność i mobilność: Dane są lokalne, ale musi istnieć możliwość przeniesienia trwałego stanu aplikacji do różnych części aplikacji.

  • Standardowy interfejs API, implementacja z możliwością podłączenia: polegaj na standardowym interfejsie API, ale w razie potrzeby możesz zmieniać implementacje.

Niektóre ważne koncepcje JPA: Jednostka JPA
  • Najbardziej modułowym komponentem obiektów JPA jest zwykły, stary obiekt Java (POJO). Każdy obiekt musi mieć unikalny identyfikator.

  • Jednostki JPA zazwyczaj używają adnotacji, takich jak @MappedSuperClass, co pozwala na użycie nadklas zawierających wspólne pola encji. Adnotacja @AttributeOverride służy do zastępowania jednostek nadklasy. @Column służy do konfigurowania mapowań baz danych. Adnotacji @Transient można używać w przypadku pól w klasie encji, które nie powinny być mapowane na bazę danych.

  • Typ dostępu to proces, za pomocą którego dostawca trwałości uzyskuje dostęp do stanów w jednostce. Dostęp do pól ma miejsce, gdy dostawca uzyskuje dostęp do pól klasy bezpośrednio poprzez odbicie. Dostęp do właściwości ma miejsce, gdy w celu uzyskania dostępu do stanów używane są metody właściwości Java Bean, czyli używane są metody pobierające i ustawiające. Aby skorzystać z dostępu do właściwości, moduł pobierający musi być opatrzony adnotacją @Id. Typ dostępu mieszanego wykorzystuje dostęp do obu pól i właściwości w tej samej klasie encji za pomocą adnotacji @Access.

API Java dla usług sieciowych RESTful

Ograniczenia architektury REST:
  1. Klient i serwer są od siebie niezależni.

  2. Bezstanowy: każde indywidualne żądanie docierające do serwera jest autonomiczne i niepowtarzalne. Serwer nie przyjmuje żadnych założeń z poprzedniego żądania.

  3. Buforowanie: system musi obsługiwać buforowanie na różnych poziomach, aby poprawić wydajność i skalowalność.

  4. Ujednolicony interfejs oznacza, że ​​klient musi mieć wspólny, ujednolicony interfejs, aby uzyskać dostęp do zasobów na serwerze, a także wchodzić w interakcję z zasobami na serwerze. System wielowarstwowy: Serwer można zaimplementować w różnych warstwach, dzięki czemu klient nie musi się martwić o system wielowarstwowy, taki jak serwer obsługujący równoważenie obciążenia.

Kilka ogólnych pojęć związanych z JAX-RS:
  • Metoda HTTP GET: żądanie zasobu lub zasobów. Metoda żądania GET jest idempotentna, co oznacza, że ​​wielokrotne wysyłanie tego samego żądania do metody nie powinno zmieniać stanu zasobu ani danych na serwerze.

  • Metoda HTTP POST: Żądanie POST służy do tworzenia nowych zasobów na serwerze. Powoduje to zmianę zestawu danych na serwerze. POST zwykle ma treść, w której publikowany lub dołączany jest ładunek lub cokolwiek, co chcemy utworzyć na serwerze.

  • Metoda HTTP PUT: używana semantycznie do aktualizacji zasobów na serwerze.

  • Metoda HTTP DELETE: Używana do usuwania zasobów na serwerze.

  • Typy treści. Istnieje kilka typów treści, które można wykorzystać i utworzyć za pomocą metod zapytań: XML, CSV, EXCEL, TEXT i JSON.

  • JAX-RS ma koncepcję pisania treści wiadomości. Są to konstrukcje API służące do konwersji typów Java na typ oczekiwany przez klienta. Adnotacji @Produces można użyć do określenia typu, na który konwertowana jest odpowiedź obiektu Java.

  • Adnotacja @Consumes informuje środowisko wykonawcze JAX-RS o typie treści zużywanej przez daną metodę zasobu. Środowisko wykonawcze JAX-RS następnie konwertuje treść JSON przekazaną jako ładunek na obiekt Java, którego typ jest taki sam jak parametr metody.

  • Mapowanie wyjątków JAX-RS: konstrukcja API używana do mapowania wyjątków na odpowiedzi HTTP. Adnotacja @Provider służy do programowego rejestrowania mechanizmu rozpoznawania wyjątków w środowisku wykonawczym JAX-RS.

To jest bardzo proste wprowadzenie do Java EE. Aby tworzyć aplikacje internetowe przy użyciu Java EE, musisz głębiej poznać każdy kluczowy interfejs API.
Komentarze
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION