31 października 2007

Sun Certified Business Component Developer Java EE 5 (SCBCD) zdany!

8 komentarzy
Zdecydowałem się i udało mi się zdać kolejny certyfikat z serii certyfikatów z korporacyjnej javy 5 - Sun Certified Business Component Developer (SCBCD) for the Java Platform, Enterprise Edition 5 (CX-310-091). Najpierw był Sun Certified Java Programmer (SCJP) 5.0 w grudniu 2006 roku, a teraz przyszła pora na SCBCD5. I cieszyłbym się bardziej, gdyby ten wynik nie był tak fatalny! Wręcz prześlizgnąłem się i w zasadzie to miałem wątpliwości, aby w ogóle napisać o tym. Porażka - jedynie 63% przy poziomie 59% na zdanie egzaminu!


Podszedłem do niego na luzie mając w garści przepustkę (ang. voucher), który upoważniał mnie od podejścia powtórnego, w razie gdyby nie powiodło mi się przy pierwszym. Rozpocząłem o godzinie 10:15 na Zielnej w budynku PASTy - numer lokalizacji: PL41 (aby nie było reklamy). W metrze postanowiłem dokończyć czytanie rozdziału specyfikacji EJB 3.0 o transakcjach Support for Transactions. Wiedziałem, że właśnie transakcje, bezpieczeństwo i wyjątki to moja pięta achillesowa. Niespodziewałem się jednak, że tak słabo wypadnę przy JPA (sekcja Java Persistence API Entities) - 42% oraz przy ziarnach sesyjnych (sekcja EJB 3.0 Session Bean Component Contract & Lifecycle) - 42%. Nie ukrywam, że spodziewałem się lepszego wyniku. Wyszedłem wręcz załamany ;-)

Wyprzedzając pytania napiszę, że uczyłem się głównie ze specyfikacji EJB 3.0, próbowałem się z różnymi pytaniami na grupach i forach dyskusyjnych, przeglądałem dokumentację i przykłady do serwerów aplikacyjnych, głównie Glassfish, Geronimo, ale również ciekawą i pełną dokumentację znalazłem na stronach dokumentacji Apache OpenJPA oraz na stronach Getting Started with EJB 3.0. Podsumowaniem wiedzy była lektura książki Enterprise JavaBeans 3.0 autorstwa Billa Burke oraz Richarda Monsona-Haefela z OReilly (której recenzja czeka na opublikowanie) i przejrzałem pobieżnie EJB 3 in Action wydawnictwa Manning. Ciekawym miejscem wydaje się również forum EJB Certification (SCBCD) na JavaRanch, ale przynaję, że za mało tam zaglądałem.

Jakie były pytania niestety nie mogę napisać, ale należy przygotować się w dużej mierze myśląc o transakcjach oraz bezpieczeństwie każdorazowo, kiedy jakikolwiek temat EJB 3.0 jest poruszany. Są to zagadnienia zazwyczaj traktowane po macoszemu, a przecież to one są głównym powodem zastosowania EJB 3.0 w aplikacjach. Nie można zapominać o konfiguracji ziaren poprzez deskryptory - ejb-jar.xml, persistence.xml, czy orm.xml i wszystkie inne, do których się odwołują.

Jednymi z pytań, nad którym siedziałem i nadal nie jestem odpowiedzi dotyczyły momentu utworzenia kontekstu trwałego. Jeśli kontekst trwały zarządzany jest przez aplikację, to według mnie jego istnienie rozpoczyna się w momencie utworzenia, w przeciwieństwie do kontekstu zarządzanego przez kontener, gdzie jego istnienie rozpoczyna się od momentu rozpoczęcia transakcji. Czy tak jest na pewno będę musiał sprawdzić. Wiele z pytań było wyjątkowo podchwytliwych i niskopoziomowych, i prawdopodobnie nie przyjdzie mi z tej wyrafinowanej wiedzy intensywnie korzystać, ale kto wie, co mnie czeka w przyszłości - może przyda się szybciej niż mi się wydaje. Polecam podejście do egzaminu SCBCD5, bo porządkuje wiedzę z EJB3, a i wiele ciekawostek można dowiedzieć się właśnie podczas jego trwania ;-) Nie pamiętam, co to było, ale w pewnym momencie prawie krzyknąłem widząc kawałek kodu, w którym dosyć interesująco była wykorzystana funkcjonalność EJB3 (podobnie było podczas czytania książki Billa Burke'a Enterprise JavaBeans 3.0, gdzie zaprezentował ciekawe użycie metod przechwytujących - interceptorów do realizacji specjalizowanych adnotacji). Przypomniałem sobie właśnie, że było jeszcze jedno pytanie, które mnie wykończyło - mechanizm wstrzeliwania zależności i równość egzemplarzy wstrzelonych ziaren. Czy równość (wyznaczana metodą equals) zajdzie dla ziaren sesyjnych przekazanych za pomocą DI? Czy jest różnica między referencjami do ziarna stanowego i bezstanowego? To również będę musiał sprawdzić. W ogóle muszę przysiąść nad tymi transakcjami, wyjątkami i bezpieczeństwem. Reszta wierzę, że uzupełni się w międzyczasie.

Życzę wszystkim podchodzącym do SCBCD5 jak najlepszych not, na pewno lepszych niż takie mierne 63%. Szczęśliwie, że to nie ode mnie zależy jaki poziom jest zdający, bo ustawiłbym go zdecydowanie wyżej, powiedzmy na 75% ;-)

30 października 2007

XVIII spotkanie Warszawskiej Grupy Użytkowników Technologii Java (Warszawa JUG)

3 komentarzy
Warszawska Grupa Użytkowników Technologii Java (Warszawa JUG) zaprasza na XVIII spotkanie, które odbędzie się we wtorek 30.10.2007 o godzinie 18:00 w sali 4420 na Wydziale MIMUW przy ul. Banacha 2 w Warszawie.

Temat prezentacji: JSF - Pytania i Odpowiedzi przez Przykłady
Prowadzący: Wiktor Gworek, Jacek Laskowski et al.

JavaServer Faces (JSF) nie jest nową technologią Java EE, ale dopiero od wersji Java EE 5 weszła jako obowiązkowy element specyfikacji. JSF jest specyfikacją modularnego interfejsu użytkownika dla aplikacji internetowych. Powstał, aby przybliżyć możliwości tworzenia interfejsu w sposób zbliżony do tworzenia aplikacji desktopowych.

Spotkanie będzie prowadzone w formie warsztatu. Pierwsze 30 minut będzie wprowadzeniem w temat z demonstracją przykładowych aplikacji, podczas gdy kolejne 30 minut będzie już dotykało bardziej zaawansowanych funkcjonalności dostarczanych przez JSF. Nie przewiduje się żadnych slajdów, a jedynie otwarte środowisko programisty (IDE) i tworzenie aplikacji na żywo z objaśnianiem co ciekawszych elementów JSF.

A dlaczego warto przybyć na spotkanie? Dla dopiero rozpoczynających poznawanie JSF jest to idealna okazja na podniesienie wiedzy o JSF w niezwykle efektywny sposób - tworząc aplikację JSF w gronie z innymi, już zaznajomionymi z tematem. Dla zaawansowanych będzie to dobry trening przed egzaminem SCJWD5 i zorientowanie się w problemach nowicjuszy, które często prowokują do przemyśleń i uzupełnienia wiedzy. Dla wszystkich innych będzie możliwością uczestniczenia w ciekawym doświadczeniu polegającym na prowadzeniu prezentacji bez slajdów. Poza elementami JSF będą wykorzystane różne pomocnicze narzędzia wspierające tworzenie aplikacji JSF, więc każdy powinien znaleźć coś dla siebie. Wszelkie pytania dotyczące JSF mile widziane. W zasadzie, cała prezentacja to zbiór pytań i odpowiedzi w postaci (najczęściej) działających aplikacji JSF.

Prezentację poprowadzą Wiktor Gworek, Jacek Laskowski oraz...Wy, uczestnicy.

Wiktor Gworek jest studentem V roku na Wydziale MIM UW i nowych technologii. Wiktor uwielbia ładne, radosne programowanie, kunsztowną architekturę oprogramowania oraz czytanie RSSów. Z Javą związany jest od dwóch lat, jednak stroni on od monogamii programistycznej. Prowadzi blog Mocna Kawa.

Jacek Laskowski zajmuje się Korporacyjną Javą od pierwszego dnia jej opublikowania. Jest członkiem zespołów rozwojowych Apache Geronimo, Apache OpenEJB, Apache ServiceMix, Apache XBean oraz Apache ActiveMQ. Zajmuje się rozpoznawaniem technologii upraszczających tworzenie aplikacji korporacyjnych z Java EE 5, a swoje spostrzeżenia publikuje w Notatniku Projektanta Java EE oraz na swoim Notatniku-Wiki. Jest założycielem i liderem Warszawskiej Grupy Użytkowników Javy (Warszawa JUG). Jacek jest członkiem zespołu NetBeans 6.0 Community Acceptance Test (poprzednio w NetCAT 5.0 oraz 5.5). Ideę dzielenia się wiedzą wprowadza w życie poprzez wystąpienia na konferencjach krajowych i zagranicznych. Służbowo związany z firmą IBM jako konsultant oprogramowania.

Planowany czas prezentacji to 1,5 godziny. Na zakończenie (około 15 minut) planowana jest dyskusja dotycząca organizacji konferencji Warsjava organizowanej przez Warszawa JUG w dniu 17.11.2007.

Wstęp wolny!

Zapraszam w imieniu Warszawa JUG!

Mechanizm rozwiązywania zmiennych w JSF - variable-resolver

1 komentarzy
W trakcie pracy z rozszerzeniem EJB 3.0 dla IBM WebSphere Application Server 6.1 (WAS) natrafiłem na problem z mechanizmem wstrzeliwania zależności w aplikacji JSF 1.1. WAS 6.1 jest serwerem aplikacji wspierającym specyfikację Java EE 1.4 i część specyfikacji Java EE 5 jest realizowana przez tzw. rozszerzenia funkcjonalne (ang. feature packs), które dostarczają wybrane części specyfikacji. Jedną z usług, której brakuje jest usługa wstrzeliwania zależności dla ziaren zarządzanych JSF. Innymi słowy, dla WAS 6.1 ziarna zarządzane JSF nie są w pełni zarządzane i mechanizm wstrzeliwania zależności ich nie obsługuje. Konstrukcje typu @EJB w przypadku ziaren JSF nie są obsługiwane i kończy się zazwyczaj na NullPointerException. W ten sposób natrafiłem na kolejną funkcjonalność JSF - komponenty rozwiązujące zmienne (ang. variable resolvers), dalej zwane komponentami rozwiązującymi. Zaintrygowany? Zajrzyj do artykułu Mechanizm rozwiązywania zmiennych w JSF - variable-resolver. Miłej lektury!

28 października 2007

Aplikacja Java EE 5 z MDB z JPA w trybie JTA i PostgreSQL w Apache Geronimo 2

0 komentarzy
Podczas konferencji Java Developers Day 2007 w Krakowie, na której wystąpiłem z tematem Tworzenie aplikacji Java EE z Apache Geronimo 2 nie udało mi się zaprezentować wszystkich, 3-ech przykładów. Padło na najbardziej interesujący technologicznie przykład Ziarno MDB z JPA w trybie JTA. Nadrabiając straty udało mi się opisać to, co miało zostać powiedziane i stworzyłem kolejny artykuł przybliżający serwer Apache Geronimo wraz z ziarnem MDB i encji JPA w trybie JTA - Aplikacja Java EE 5 z MDB z JPA w trybie JTA i PostgreSQL w Apache Geronimo 2. Przykład prezentuje możliwości Geronimo w zakresie obsługi transakcji JTA w warstwie EJB 3.0, na poziomie MDB i JPA. W artykule zawarłem kilka informacji specyficznych dla Geronimo, co powinno przybliżyć sposób jego działania i być może sprowokować do dalszych prób technologicznych. Uruchomienie klienta zdalnego za pomocą wtyczki exec:exec mavena może być również ciekawe. Wszelkie komentarze o merytorycznej stronie artykułu mile widziane, a wskazówki do dalszych eksperymentów nawet bardziej. Miłej lektury!

p.s. Grupa Warszawa JUG organizuje warsztaty javowe - Warsjava - na których będzie dużo takich technologicznych perełek. Zapraszam zainteresowanych do udziału, czy to jako prelegent, czy uczestnik. Wstęp wolny, a dobrej, technicznej zabawy, będzie co nie miara!

27 października 2007

Relacja z Java Developers Day 2007 w Krakowie

12 komentarzy
Już rano mnie ścisnęło, kiedy nie było wątpliwości, że tyle materiału (a w tym i przykładów), ile planowałem pokazać na mojej prezentacji Tworzenie aplikacji Java EE 5 z Apache Geronimo 2 podczas krakowskiej konferencji Java Developers Day 2007 jest niemożliwe w 45 minut. Najgorsze było to, że nie wiedziałem, co powinienem wyrzucić, co jest niepotrzebne, aby ostatecznie utrzymać czas. Dodatkowo, aby podnieść rangę owych 45 minut, o 20:00 miałem pociąg powrotny do Warszawy, więc koniec prezentacji - 19:15 - musiał być utrzymany. I był, ale jak można przeczytać w komentarzach, było ciekawie, ale zdecydowanie za krótko. I faktycznie, samemu odczułem brak czasu i mimo, że mogłem zaoszczędzić 10-15 minut, to i tak nie pokazałbym NetBeans IDE 6.0 z Apache Geronimo 2 i przykładu z MDB, JPA i JTA jak i kolejnego z JAX-WS 2.0. Na szczęście, nie traciłem czasu na niepotrzebne uruchamianie oprogramowania (wszystko miałem już uruchomione), jak i budowanie aplikacji, itp. Oprogramowanie działało bez zarzutów, a wierzę, że nie były to trywialne przykłady.

Pierwszy przykład był prezentacją JSF 1.2 na Apache Geronimo (w wykonaniu Apache MyFaces) z pomocą Eclipse IDE 3.3.1 z wtyczką Geronimo. Prosta aplikacja, więc poszło gładko. Geronimo i Eclipse spisali się znakomicie. Przez moment wzbudziłem falę śmiechu, kiedy to z pewną miną poprawnego uruchomienia aplikacji pojawił się wyjątek java.lang.RuntimeException: FacesContext not found.


Nie straciłem jednak rezonu, planując jego wystąpienie świadomie, który wynika nie z niepoprawnego działania Geronimo, ale z wykonania aplikacji JSF bez zainicjowanego kontekstu jsf (brak uruchomienia FacesServlet). Nie byłem nim wcale zdziwiony (ururchomienie aplikacji poprzez adres zawierający /faces/ było rozwiązaniem). Wtedy zapytałem o znajomość JSF i...dopiero teraz faktycznie byłem zdumiony. Na moje pytanie bodajże 3-5 osób podniosło rękę (!) Zrozumiałem wtedy, że to co bawi jednych nie musi innych (ciekawe ile osób wyszło przekonanych o planowanym błędzie). Drugi raz, zdumiała mnie przytłaczająca popularność Eclipse IDE jako środowiska programistycznego (podniesione ręce po pytaniu o użycie NetBeans IDE były ledwie zauważalne, mniej niż użytkowników vi (!)).

Tutaj warto wspomnieć o liczbie uczestników podczas konferencji. Niektórzy mówili o 300 osobach. I to mogło być prawdą. Podczas mojej, kończącej konferencję, prezentacji pobieżne moje szacunki wskazywały na circa 150-200 osób (zdjęcie poniżej było robione na prędce zaraz po zakończeniu mojej prezentacji).


Udało mi się zaprezentować dwa przykłady (z zaplanowanych 3-ech) - Utworzenie aplikacji internetowej z JSF 1.2 oraz Ziarno sterowane komunikatami (MDB) z klientem zdalnym. Oba opisane są w moich artykułach Tworzenie aplikacji z JavaServer Faces, Apache Maven i Apache Geronimo oraz Uruchomienie ziarna MDB w Apache Geronimo. Niezaprezentowany przykład Ziarno MDB z JPA w trybie JTA niedługo zostanie zaprezentowany w postaci artykułu.

A tak ogólnie o konferencji, to możnaby napisać wyłącznie w samych superlatywach. Jedzenie było i to pierwsza klasa (akurat przyjechałem do Krakowa na porę obiadową). Napoje dostępne przez całą konferencję. Sala, nagłośnienie, asysta na 6+. Brakowało jedynie równoległych paneli, co mogłoby wpłynąć na zwiększenie czasu na prezentacje z 45 minut do powiedzmy 1,5 godziny (oczywiście mogłoby to zależeć od samych prelegentów i dla mnie 1,5 godziny byłoby odpowiednie). Wszystkie prezentacje były nagrywane i nie mogę doczekać się filmu z mojej (planuję usprawnienia i materiał filmowy będzie idealny, aby podnieść swój warsztat prezenterski).

Nie mógłbym nie wspomnieć o wizycie Billa Burke z Red Hat/JBoss. Tym bardziej mnie wizyta ucieszyła, że właśnie niedawno przeczytałem jego książkę Enterprise JavaBeans 3.0, która napisana jest bardzo ciekawie i z polotem. Widać, że autor - Bill Burke - wiedział o czym pisze, a jeśli by dodać do tego, że Bill jest weteranem Java EE i współautorem JBoss AS, to wiadomo, skąd to rozeznanie tematu. Oczywiście, nie każdy inżynier to dobry autor książki, jednakże w jego przypadku połączenie tych dwóch ról wypadło znakomicie. Gratulacje Bill za wspaniałą książkę! W Bibliotece Warszawskiego JUGa mamy tę pozycję, więc zabrałem ją, aby prosić o dedykację Billa. Dziękuję Tomkowi (szimano) za pomoc w realizacji planu - książka została podpisana przez Billa (i może w ten sposób zaintryguje innych grupowiczów do jej lektury i recenzji).

Inne spojrzenie na konferencję JDD07 można znaleźć na stronie Inicjatywy IT w Krakowie - Rozpoczął się Java Developers Day (koszulki nie umknęły autorowi ;-)).

Zapraszam na warsztaty javowe Warsjava 2007 organizowane przez grupę Warszawa JUG, na której z pewnością nie zabraknie wiele ciekaw(sz)ych prezentacji. Będzie technicznie do bólu. To już niedługo, bo 17 listopada 2007 w Warszawie. Wstęp wolny!

Prezentacja z konferencji Java Developers Day 2007 w Krakowie: Tworzenie aplikacji Java EE 5 z Apache Geronimo 2.

22 października 2007

JDD2007 w Krakowie już w najbliższy piątek - jakie są Twoje oczekiwania?

7 komentarzy
W nadchodzący piątek, 26 października 2007 w Krakowie podczas Java Developers Days 2007 będę przez 45 minut prezentował możliwości Apache Geronimo 2 tworząc aplikację Java EE 5. Z każdym dniem mam inne pomysły, jak poprowadzić prezentację tak, aby była ona z pożytkiem dla większości słuchaczy. Nie chciałbym, aby na zakończenie konferencji dobić wytrwałych i zmęczonych całym dniem nudną i banalną prezentacją z 5-10 slajdami, a może nawet i zniechęcić do Geronimo (nie wspominając o moich kolejnych występach). Pomyślałem, że dobrze byłoby wypytać potencjalnych uczestników, czego oczekują od prezentacji, na co się nastawiają.

I właśnie teraz jest ten moment. Wy mówicie, czego oczekujecie, a ja to realizuję. Tematów do prezentacji jest wiele, jednakże czasu bardzo mało, a dodając do tego późną porę możecie być już kompletnie zmęczeni. Stąd prośba o wyrażenie swoich oczekiwań w stosunku do prezentacji, aby ostateczny produkt - prezentacja Tworzenie aplikacji Java EE z Apache Geronimo 2 była wartościowa. Postaram się odpowiedzieć na wszystkie prośby, być może nie treściwie i w pełni, ale próba na pewno będzie. Chciałbym pokazać co oferuje Eclipse IDE 3.3, RedHat Developer Studio 1.0.0.beta2, NetBeans IDE 6.0 oraz IntelliJ IDEA 7.0 w stosunku do Geronimo 2, jednakże pytanie, czy wszystkie środowiska i w końcu jaką aplikację powinienem stworzyć i uruchomić, aby zaprezentować możliwości Apache Geronimo 2 we wspieraniu Korporacyjnej Javy 5. Na pewno będzie JSF w wykonaniu Apache MyFaces i JPA z Apache OpenJPA, i EJB3 z Apache OpenEJB i JMS z Apache ActiveMQ i Jetty 6. Na co jeszcze zwrócić uwagę?

21 października 2007

Uruchomienie ziarna MDB w Apache Geronimo

0 komentarzy
Podczas rozpoznawania EJB3 w kontekście ziaren MDB (ang. message-driven bean) postanowiłem zbadać temat korzystając z Apache Geronimo 2. Problemem okazało się nie utworzenie i uruchomienie ziarna, ale wysłanie komunikatów do kolejki, z którą ziarno było związane z klienta, który nie byłby aplikacją internetową. Na bazie przykładu opisanego w dokumentacji Apache Geronimo - JMS and MDB sample application stworzyłem artykuł Uruchomienie ziarna MDB w Apache Geronimo wraz z przedstawieniem klienta zdalnego, który wysyła komunikaty przechwytywane następnie przez ziarno (w przeciwieństwie do aplikacji internetowej, która została opisana w dokumentacji). Miłej lektury!