Java Developers' Day 2009 - Kraków

Miałem wczoraj zaszczyt i przyjemność uczestniczyć w największej w Polsce konferencji poświęconej Java - Java Developers' Day 2009 (JDD) w Krakowie (http://09.jdd.org.pl). Frekwencja jak zwykle dopisała, konferencja jak zwykle udana. Mówiąc krótko było fajnie !
Z racji tego, że Oracle Polska był Złotym Sponsorem JDD 09, dane mi było zaprezentować temat "Asynchroniczne, współbieżne i rozproszone przetwarzanie w Java EE (w przykładach z Oracle WebLogic Server, Coherence i TopLink Grid)".

Czyli: "Asynchronous, Concurrent and Distributed Processing in Java EE - Examples Using Oracle Middleware Technologies: WebLogic Server, EclipseLink/TopLink JPA i Coherence". Cała agenda JDD 2009 tutaj: http://09.jdd.org.pl/agenda

Już od dosyć dawna chodził mi po głowie temat zrównoleglania zadań w serwerowych aplikacjach tworzonych z wykorzystaniem Java EE. Sprawa jest bardzo przydatna w praktyce (zwłaszcza że dzisiaj mamy do dyspozycji maszyny serwerowe z wieloma CPU, multi-core i wykonujące równocześnie wielu wątków per core), niestety stosunkowo mało rozpropagowana, w przeciwieństwie do mitów w rodzaju "w aplikacjach Java EE nie wolno tworzyć własnych wątków". Java SE i JVM od zawsze oferowały dobre wsparcie dla wielowątkowości (także Java 5 i 6 wniosły tutaj bardzo wiele dobrego) i programiści budujący aplikacje serwerowe w Java często narzekają na brak podobnych mechanizmów w Java EE - choćby realizacji najbardziej typowego scenariusza, czyli możliwości podziału logiki obsługi żądania na mniejsze, równolegle wykonywane zadania i ich synchronizacji. W przypadku aplikacji webowych oznaczałoby to na przykład możliwość znacznego skrócenia czasu generacji dynamicznych stron webowych, poprzez zrównoleglenie operacji pobierających dane do wyświetlenia na tej stronie. Wątek tworzący stronę (czy obsługujący servlet, bądź EJB) mógłby zatem utworzyć i uruchomić szereg nowych wątków, a następnie odebrać od nich wyniki, skonsolidować je i wygenerować stronę. Wiele tego rodzaju "ulepszeń poprzez zrównoleglenie i asynchroniczność" można wprowadzić do aplikacji Java EE [można także pokusić się o jeszcze większą asynchroniczność i budować aplikacje webowe, w których to serwer "wypycha" dane do klientów (tzw. Reverse-AJAX, bądź AJAX Push), np. z wykorzystaniem Comet/Bayeux - polecam m.in. przykłady u mnie (http://www.jdn.pl/node/1620)].

Podczas sesji chciałem zatem przedstawić korzyści zrównoleglania, na czym polega problem w Java EE oraz możliwości, jakie w tym zakresie są dostępne dla deweloperów Java EE - zarówno te obecne dzisiaj (szczególnie CommonJ Work Manager API), jak i te, które prawdopodobnie (?) pojawią się w Java EE 6 - Concurrency Utilities for Java EE, JSR-236 i JSR-237.
Dodatkowo, postanowiłem wspomnieć o zagadnieniu data grid, czyli możliwości rozproszenia danych pomiędzy wiele współpracujących ze sobą węzłów, a co zatym idzie możliwością rozproszonego i równoległego przetwarzania tych danych. Takie dane można przy tym bezpiecznie "przenieść do pamięci" i w ten sposób bardziej wydajnie je udostępniać i przetwarzać (są to tzw. in-memory data grid). Dla programistów Java i Java EE temat data grid'ów można też fajnie połączyć z Java Persistence API (m.in. znacznie podnosząc wydajność aplikacji korzystających z JPA, zwłaszcza tych aplikacji, które są rozmieszczone na wielu serwerach).

Nie wszystko udało się niestety pokazać w ciągu tych 45 min... W każdym razie załączam moje slajdy (w wersji PowerPoint oraz PDF), a wkrótce opublikuję także bardziej dokładne opisy praktycznych demonstracji z użyciem technologii Oracle WebLogic Server i Oracle Coherence, które przygotowałem na JDD (w tym kod źródłowy prostych aplikacji korzystających ze wspomnianych mechanizmów).
Dla zainteresowanych szczegółami odsyłam do dokumentacji:
- CommonJ Work Manager API w Oracle WebLogic Server
- Konfiguracja zasobów typu Work Manager w Oracle WebLogic Server
- Oracle Coherence
- Concurrency Utilities for Java EE

Na sali znalazło się także kilku szczęśliwców (? ;-)), którzy otrzymali prezenty - fajne książki o technologiach middleware Oracle:
- The Definitive Guide to SOA: Oracle Service Bus (http://apress.com/book/view/1430210575)
- Getting Started With Oracle SOA Suite 11g R1 - A Hands-On Tutorial (http://www.packtpub.com/getting-started-with-oracle-soa-suite-11g-r1/book)

Jeszcze raz gratuluję oraz życzę miłej lektury i przygody z tymi technologiami !

Uczestnikom JDD 2009, którzy wybrali prowadzoną przeze mnie sesję także raz jeszcze serdecznie DZIĘKUJĘ !

LINK DO PREZENTACJI W PowerPoint
LINK DO PREZENTACJI W PDF

Pozdrawiam,
Waldek Kot