JAVA EE 8 Waldemar Korłub Narzędzia i aplikacje Java EE KASK ETI Politechnika Gdańska
Java EE 8 Java EE 5 rok 2006 Java EE 6 rok 2009 Java EE 7 rok 2013 Java EE 8 rok 2017
Servlet 4.0 HTTP/2 Server push Programistyczne API do odczytywania mapowań servletów, np.: HttpServletMapping mapping = request.gethttpservletmapping(); String mapping = mapping.getmappingmatch().name(); String value = mapping.getmatchvalue(); String pattern = mapping.getpattern(); String servletname = mapping.getservletname();
HTTP/2 (maj 2015) Problemy z HTTP 1.1 (1999 rok): Obsługa potoków żądań (ang. pipelining) w ramach jednego połączenia TCP, ale nie równoległej obsługi n Jeśli jedno żądanie wymaga długiej obsługi, dalsze czekają w kolejce n Aby uzyskać zrównoleglenie konieczne jest otworzenie wielu połączeń TCP n Dodatkowe obciążenie dla klienta i serwera Kompresja dostępna dla ciała żądań/odpowiedzi, ale nie dla nagłówków Streaming tylko w jednym kierunku
HTTP/2 Jedno połączenie TCP dla każdego klienta W ramach połączenie mogą występować niezależne strumienie Strumienie obsługiwane równolegle Dwukierunkowa komunikacja w ramach strumienia Możliwość priorytetyzacji strumieni w ramach połączenia Kompresja kompletnych wiadomości łącznie z nagłówkami Obsługa dwukierunkowego streamingu
HTTP/2
Bean Validation 2.0 Nowe walidatory w standardzie: @Email @Positive, @PositiveOrZero, @Negative, @NegativeOrZero, @PastOrPresent, @FutureOrPresent, @NotEmpty, @NotBlank Walidacja elementów w kolekcjach, np.: @Size(min=1) Map<@Size(min=3) String, @Valid Book> bookbyauthor;
CDI 2.0 Możliwość użycia adnotacji @Priority w celu określenia kolejności wywoływania obserwatorów, np.: public void receive(@observes @Priority(10) BookEvent event) { } // Zdarzenia asynchroniczne W CDI 1.1 wszystkie zdarzenia wywoływane są synchroniczne
CDI 2.0 asynchroniczne zdarzenia Producent: @Inject Event<BookEvent> event; // event.fireasync(bookevent); Obserwator: public void receive(@observesasync BookEvent event) { } //
JAX-RS 2.1 Obsługa mechanizmu Server Sent Events API (SSE) Reaktywne API dla klas klienckich Pełna obsługa specyfikacji JSON-P oraz JSON-B
JSF 2.3 Lepsza integracja z CDI Wstrzykiwanie w konwerterach i walidatorach! Wstrzykiwanie standardowych artefaktów JSF, np.: @Inject ExternalContext context; Adnotacje komponentów @ManagedBean i ich zasięgów oznaczone jako deprecated n Na rzecz komponentów i zasięgów z CDI Integracja z mechanizmem WebSocket: Widok: <f:websocket channel="mychannel" onmessage="..." /> Backing bean: @Inject @Push private PushContext mychannel;
JSF 2.3 Wprowadzono do standardu wiele elementów z biblioteki OmniFaces, m.in.: <f:validatewholebean> <h:commandscript> SelectItemsConverter <f:importconstants>
JSON Binding API (JSON-B) API do mapowania danych z obiektów na format JSON (i z powrotem) Podobne do JAX-B Przykładowe użycie: String json = JsonbBuilder.create().toJson(book); Book book = JsonbBuilder.create().fromJson(json, Book.class);
Rozwój Javy EE
Rozwój Javy EE Do 2009 roku Java EE była rozwijana pod pieczą firmy Sun Microsystems W 2010 roku firma Oracle wykupiła Sun Microsystems za 5,6 miliarda dolarów Większość przychodów Sun Microsystems pochodziła ze sprzedaży sprzętu Serwery klasy enterprise oparte na architekturze Sparc Oracle było firmą wytwarzającą oprogramowanie Oprogramowanie bazodanowe Oracla + serwery bazodanowe Suna = idealne połączenie Istotną motywacją zakupu było również przejęcie Javy Oraz przejęcie dotychczasowych klientów korporacyjnych Suna
Open source odziedziczony po Sun W wyniku zakupu firma Oracle przejęła opiekę nad szeregiem innych projektów którymi nie była specjalnie zainteresowana Sun Microsystems było firmą otwartą na społeczność Opieka nad wieloma projektami open source, m.in.: n OpenOffice n MySQL n Hudson n OpenSolaris n VirtualBox Java Community Process
Open source odziedziczony po Sun Oracle preferuje korporacyjną kulturę pracy Część projektów open source podjęło decyzję o rozpoczęciu forka pod inną nazwą OpenOffice à LibreOffice MySQL à MariaDB Hudson à Jenkins Inne projekty firma Oracle przekształciła w projekty wewnętrzne (już nie open source), np.: n OpenSolaris à Oracle Solaris n Sun Grid Engine à Oracle Grid Engine Jeszcze inne projekty po prostu zamknięto
Przyszłość Javy EE Współpraca z firmą Oracle powoduje tarcia w społeczności Po wydaniu Javy EE 8 Oracle zdecydowało o przekazaniu pieczy nad Javą EE fundacji Eclipse Rozpoczęto projekt Eclipse Enterprise for Java (EE4J) Fundacja Eclipse jest już autorem Microprofile Plany odnośnie zmiany cyklu wydawniczego Stały cykl wydawniczy + wydania LTS
Pytania?