Szczegóły ebooka

Java EE 8. Wzorce projektowe i najlepsze praktyki

Java EE 8. Wzorce projektowe i najlepsze praktyki

Rhuan Rocha, Joao Purificacao

Ebook

Od profesjonalnych systemów informatycznych wymaga się wysokiej dostępności usług, łatwego wprowadzania niezbędnych zmian, skalowalności i możliwości przetworzenia ogromnej ilości danych. Java EE 8 znakomicie nadaje się do tworzenia aplikacji spełniających te wyśrubowane kryteria. Poza tym Java to język wieloplatformowy, jej kod jest otwarty, została dobrze przetestowana, a doświadczenie i wsparcie społeczności użytkowników okazują się nie do przecenienia. Wszechstronność i popularność Javy ma też mroczną stronę - programiści bardzo często muszą rozwiązywać istotne problemy, które zwykle dotyczą integracji usług, wysokiej dostępności i odporności systemu na błędy. Rozwiązaniem pozwalającym uniknąć wielu z tych kłopotów jest zastosowanie odpowiednich wzorców projektowych i przestrzeganie dobrych praktyk.

To książka przeznaczona dla programistów, którzy chcą tworzyć aplikacje biznesowe z użyciem wzorców projektowych, wzorców biznesowych i najlepszych praktyk. Zawiera wyjaśnienie podstawowych koncepcji Javy EE 8, opis jej warstw oraz omówienie najlepszych praktyk tworzenia aplikacji biznesowych. Przedstawia zasady łączenia wzorców projektowych i wzorców biznesowych w Javie EE 8, a także techniki optymalizacji rozwiązań z wykorzystaniem programowania aspektowego, programowania reaktywnego i mikrousług. Opisano tu szereg wzorców: integracyjne, reaktywne, bezpieczeństwa, wdrażania i operacyjne. Zaprezentowano również projekt MicroProfile, przydatny do tworzenia aplikacji dla architektury mikrousług.

W książce między innymi:

  • korzyści ze stosowania wzorców projektowych
  • wzorce warstw prezentacji i biznesowej
  • wzorce dla aplikacji działających w chmurze
  • implementacja wzorca SSO
  • wzorce związane ze skalowalnością, z wydajnością i zarządzaniem aplikacją

Java EE 8: zestaw świetnych narzędzi dla zawodowca!

 

O autorach 11

 

O redaktorze merytorycznym 12

Wstęp 13

Rozdział 1. Wprowadzenie do wzorców projektowych 19

  • Czym są wzorce projektowe? 20
    • Wzorce projektowe GoF 20
  • Zalety wzorców projektowych 23
  • Podstawowe wzorce projektowe środowiska Java 24
    • Wzorzec projektowy Singleton 24
    • Wzorzec projektowy Fabryka abstrakcyjna 25
    • Wzorzec projektowy Fasada 26
    • Wzorzec projektowy Iterator 27
    • Wzorzec projektowy Pełnomocnik 28
  • Wzorce tworzenia aplikacji biznesowych 29
  • Różnice między wzorcami projektowymi i wzorcami tworzenia aplikacji biznesowych 29
  • Podsumowanie 30

Rozdział 2. Wzorce warstwy prezentacji 31

  • Warstwa prezentacji - co to takiego? 31
  • Wzorzec filtra przechwytującego 33
  • Implementacja filtra przechwytującego w Javie EE 8 34
    • Implementacja klasy LogAccessFilter 34
    • Implementacja klasy LogBrowserFilter 36
    • Właściwe przypisanie filtrów 37
  • Wzorzec kontrolera przedniego 38
    • Implementacja klasy działającej jako FrontController 39
    • Implementacja poleceń 41
  • Wzorzec kontrolera aplikacji 41
    • Implementacja klasy DownloadFrontController 42
    • Implementacja klasy DownloadApplicationController 43
    • Implementacja poleceń 46
    • Różnice między wzorcami kontrolera frontowego i aplikacyjnego 48
  • Podsumowanie 48

Rozdział 3. Wzorce warstwy biznesowej 49

  • Warstwa biznesowa - co to takiego? 49
  • Wzorzec delegat biznesowy 51
    • Warstwy programowe i sprzętowe 51
    • Klasyczny scenariusz użycia delegata biznesowego 53
    • Zalety wzorca delegata biznesowego 55
  • Wzorzec fasady sesyjnej 57
    • Zalety fasady sesyjnej 57
    • Implementacja wzorca fasady sesyjnej w Javie EE 58
    • Klasyczny scenariusz użycia wzorca fasady sesyjnej 58
  • Implementacja wzorca fasady sesyjnej 60
  • Wzorzec obiektu biznesowego 71
    • Aplikacje o złożonych regułach biznesowych 72
  • Implementacja wzorca obiektu biznesowego 75
  • Podsumowanie 77

Rozdział 4. Wzorce integracyjne 79

  • Czym jest warstwa integracyjna? 79
  • Wzorzec dostępu do danych 80
  • Implementacja wzorca dostępu do danych 81
    • Implementacja encji przy użyciu JPA 81
    • Implementacja DAO 83
  • Wzorzec magazynu dziedzinowego 86
  • Implementacja wzorca magazynu dziedzinowego 87
    • Implementacja klasy PersistenceManagerFactory 88
    • Implementacja klasy PersistenceManager 89
    • Implementacja klasy EmployeeStoreManager 90
    • Implementacja interfejsu StageManager 91
    • Implementacja klasy TransactionFactory 93
    • Implementacja klasy Transaction 93
    • Implementacja klasy EmployeeBusiness 94
  • Wzorzec aktywatora usługi 95
    • JMS (Java Message Service) 96
    • Metody asynchroniczne EJB 97
    • Zdarzenia asynchroniczne - producenci i nasłuchujący 98
  • Implementacja wzorca aktywatora usługi 99
    • Implementacja wysyłania i otrzymywania komunikatów poprzez JMS 99
    • Implementacja metod asynchronicznych EJB 100
    • Implementacja zdarzeń asynchronicznych - producenci i nasłuchujący 101
  • Podsumowanie 102

Rozdział 5. Programowanie aspektowe i związane z tym wzorce projektowe 103

  • Programowanie aspektowe - co to takiego? 104
    • Programowanie aspektowe czasu kompilacji czy czasu działania? 104
  • Programowanie aspektowe w Javie EE - interceptor 105
    • Kilka słów na temat CDI i komponentów bean 105
    • Komponent bean 106
    • Luźne powiązanie 107
  • Interceptory na platformie Javy EE 108
    • Implementacja interceptora EJB 109
    • Implementacja interceptora CDI 115
  • Dekorator 119
    • Wzorzec Dekorator 119
    • Dekorator w systemie Javy EE 120
    • Implementacja dekoratora 121
  • Podsumowanie 123

Rozdział 6. Wzorce reaktywne 125

  • Zdarzenia w CDI 127
  • Implementacja zdarzenia w CDI 127
    • Implementacja klasy FileUploadResource 128
    • Implementacja obserwatorów 132
  • Asynchroniczne metody komponentów EJB 134
    • Różnice między zdarzeniami i asynchronicznym wywołaniem metody 134
  • Implementacja asynchronicznej metody EJB 134
    • Implementacja komponentów EJB 135
    • Implementacja klasy FileUploadResource 137
  • Asynchroniczna usługa REST 139
  • Implementacja asynchronicznej usługi REST 139
    • Implementacja EJB 140
    • Implementacja klasy FileUploadResource 141
    • Implementacja API klienckiego 144
  • Podsumowanie 145

Rozdział 7. Wzorce mikrousług 147

  • Wzorzec mikrousług - co to takiego? 147
    • Wewnątrz aplikacji monolitycznej 149
    • Sześcian skalowalności 151
    • Czym naprawdę są mikrousługi? 152
  • Jak działa architektura mikrousług? 152
    • Aplikacja podzielona na wiele małych komponentów 153
    • Zespoły wielozadaniowe 156
    • Skupienie się na produkcie 156
    • Prostsze i inteligentniejsze przetwarzanie 157
    • Zdecentralizowane zarządzanie bibliotekami i API 157
    • Zasada jednej odpowiedzialności 157
    • Odporność na błędy 158
    • Systemy ewolucyjne 159
    • Zdecentralizowane dane 159
  • Kiedy stosować architekturę mikrousług? 159
    • Jak podzielić aplikację na mikrousługi? 160
  • Zalety i wady aplikacji wykorzystujących mikrousługi 163
  • Wzorce architektury mikrousługowej 164
    • Wzorzec agregator 165
    • Wzorzec pełnomocnik 165
    • Wzorzec łańcuch 166
    • Wzorzec rozgałęzienie 167
    • Wzorzec asynchronicznego przekazywania komunikatów 167
  • Implementacja mikrousług 168
  • Podsumowanie 171

Rozdział 8. Wzorce dla aplikacji działających w chmurze 173

  • Pojęcie aplikacji działającej w chmurze 173
  • Cele stawiane aplikacjom dostosowanym do działania w chmurze 174
  • Wzorce projektowe aplikacji działających w chmurze 175
    • Aplikacja jako kompozyt (mikrousługi) 176
    • Abstrakcja 176
    • Metodologia dwunastu czynników 176
    • Brama interfejsu API 182
    • Rejestr serwisów 184
    • Serwer konfiguracji 184
    • Bezpiecznik 185
  • Podsumowanie 187

Rozdział 9. Wzorce bezpieczeństwa 189

  • Pojęcie wzorców bezpieczeństwa 189
  • Wzorzec pojedynczego miejsca rejestracji 190
  • Implementacja pojedynczego miejsca rejestracji 192
    • Implementacja klasy AuthenticationResource 192
    • Implementacja klas App1 i App2 197
  • Mechanizmy uwierzytelniania 200
    • Uwierzytelnianie proste 200
    • Uwierzytelnianie na podstawie formularza 200
    • Uwierzytelnianie w oparciu o skrót 202
    • Uwierzytelnianie klienta 202
    • Uwierzytelnianie wzajemne 202
    • Kiedy stosować deskryptor wdrożenia, adnotację lub konfigurację programową? 202
  • Implementacja mechanizmów uwierzytelniania 204
    • Implementacja pliku web.xml 205
    • Implementacja klasy HelloWorld 205
    • Implementacja klasy HelloWorldServlet 207
  • Interceptor uwierzytelniania 208
  • Implementacja interceptora uwierzytelniania 208
    • Implementacja interceptora CDI 209
    • Implementacja zasobu JAX-RS 213
  • Podsumowanie 214

Rozdział 10. Wzorce wdrażania 215

  • Wzorce wdrażania - co to takiego? 215
  • Wdrażanie kanarkowe 217
    • Wskazanie serwerów kanarkowych 218
    • Wdrożenie nowej wersji na serwery kanarkowe 219
    • Testowanie aplikacji i weryfikacja, czy cały system działa poprawnie 219
    • Wdrożenie aplikacji na pozostałe serwery 219
  • Wdrażanie niebieski-zielony 219
    • Określenie serwerów mających otrzymać aktualizację jako pierwsze 220
    • Wdrożenie aplikacji na wybranej grupie serwerów 220
    • Wdrożenie aplikacji na pozostałych serwerach 221
  • Wdrażanie z testami A/B 221
    • Zdefiniowanie grupy użytkowników końcowych 222
    • Określenie serwerów, na których zostanie umieszczona nowa wersja 223
    • Wdrożenie nowej wersji 223
    • Ocena wpływu nowej wersji na użytkowników 223
  • Wdrażanie ciągłe 223
  • Podsumowanie 224

Rozdział 11. Wzorce operacyjne 225

  • Wzorzec operacyjny - co to takiego? 225
  • Wzorce związane z wydajnością i skalowalnością 226
    • Pamięć podręczna 227
    • Wzorzec CQRS 229
    • Źródła zdarzeń 230
    • Tabela indeksowa 231
    • Zmaterializowany widok 233
    • Sharding 234
  • Wzorce związane z zarządzaniem i monitoringiem 235
    • Wzorzec ambasador 236
    • Wzorzec monitorowania działania aplikacji 237
  • Wzorzec zewnętrznego magazynu z konfiguracją 238
  • Podsumowanie 239

Rozdział 12. Projekt MicroProfile 241

  • Tworzenie projektów Eclipse MicroProfile 241
    • Eclipse MicroProfile Config 1.3 242
    • Eclipse MicroProfile Fault Tolerance 1.1 242
    • Eclipse MicroProfile Health Check 1.0 242
    • Eclipse MicroProfile JWT Authentication 1.1 243
    • Eclipse MicroProfile Metrics 1.1 243
    • Eclipse MicroProfile OpenAPI 1.0 243
    • Eclipse MicroProfile OpenTracing 1.1 243
    • Eclipse MicroProfile Rest Client 1.1 243
    • CDI 2.0 244
    • Common Annotations 1.3 244
    • JAX-RS 2.1 244
    • JSON-B 1.0 244
    • JSON-P 1.1 244
    • Dlaczego powinniśmy używać projektu MicroProfile? 245
    • Społeczność 245
    • Przyszłość projektu 245
  • Podsumowanie 245

Skorowidz 247

  • Tytuł: Java EE 8. Wzorce projektowe i najlepsze praktyki
  • Autor: Rhuan Rocha, Joao Purificacao
  • Tytuł oryginału: Java EE 8 Design Patterns and Best Practices
  • Tłumaczenie: Rafał Jońca
  • ISBN: 978-83-283-5504-0, 9788328355040
  • Data wydania: 2019-05-23
  • Format: Ebook
  • Identyfikator pozycji: jee8wp
  • Wydawca: Helion