Pokazywanie postów oznaczonych etykietą osgi. Pokaż wszystkie posty
Pokazywanie postów oznaczonych etykietą osgi. Pokaż wszystkie posty

10 lutego 2013

Nagranie z mojej prezentacji o Enterprise OSGi na scenie Warszawa JUG już jest

4 komentarzy
W zeszły wtorek miałem przyjemność zaprezentować Enterprise OSGi, którego nagranie właśnie trafiło do przestrzeni publicznej i jest dostępne na YouTube - Praktyczne wprowadzenie do OSGi i Enterprise OSGi - Jacek Laskowski. Sam(a) zobacz, co straciłeś(aś). A uważam, że wiele.

Oszczędzę sobie tym samym relacji, bo po komentarzach po spotkaniu, trudno byłoby mi być obiektywnym i zachować umiarkowanie. Oceny kilku uczestników świadczyły o dobrej zabawie podczas mojego wystąpienia, a o to zabiegałem najbardziej. Samej wiedzy nie było wiele, ale wystarczająco, aby pobudzić do dalszego rozpoznania tematu we własnym zakresie. Bardzo zależało mi również na prezentacji możliwości WebSphere Liberty Profile i jak słyszę, to ma szansę znaleźć swoje miejsce u kilku z Was. Dzięki i daj znać, jak idzie poznawanie kolejnego serwera aplikacyjnego. Możesz być mile zaskoczony(a) możliwościami!

Sam przykład niestety nie odpalił, ale ostatecznie uważam, że to i tak dobrze, bo zainteresowanych tym mocniej zachęci do własnych prób. Ciekawym Waszych doświadczeń odnośnie poznawania Enterprise OSGi i jego zastosowania w projektach. Pewnie zastanawia Was, czy dałoby się pożenić tę technologię ze Scalą (hej, skąd w ogóle pomysł na taki mariaż?!) i po sobotnim szkoleniu Grzegorza nie mam złudzeń, że tak (ach, teraz rozumiem, skąd ten pomysł). A może już ktoś się z tym próbował? Jakie rezultaty?

Dostałem w międzyczasie maila:

"Mógłbyś podpowiedzieć jak/gdzie/od czego mogę zacząć, żebym mógł czerpać z korzyści liberty w codziennej pracy? Póki co potwierdzam, to o czym wczoraj mówileś (developerom przeszkadza ciężkość WASa)."

i pomyślałem, że umieszczę odpowiedź i tutaj. A może się komuś jeszcze przyda?! Oto ona.

"Zacznij od pobrania Eclipse IDE i instalacji IBM WebSphere Application Server V8.5 Liberty Profile Developer Tools V8.5.1.

Później przejdź przez moje artykuły na Wiki:
Po nich poczujesz klimaty. Brakuje jeszcze opisu instalacji WebSphere Liberty Profile, ale to sprowadza się do jego pobrania ze stronki http://wasdev.net/, rozpakowania i działasz!

Pytaj, jeśli coś niejasne. W ten sposób uzupełnię braki na Wiki. Powodzenia!"

28 stycznia 2013

Praktyczne wprowadzenie do OSGi i Enterprise OSGi

0 komentarzy
5 lutego podczas spotkania grupy Warszawa JUG będę miał przyjemność zaprezentować Enterprise OSGi w akcji.

Będzie to niepowtarzalna okazja zobaczyć mnie na deskach WJUGa (które trochę zaniedbywałem w 2012), bo dostęp do nich został mocno ograniczony przez duże zainteresowanie potencjalnych prelegentów. Stąd też niemała u mnie trema, aby spotkanie odbyło się w ciekawej formie. Liczę, że dobre noty pozwolą mi na kolejne publiczne wystąpienia na spotkaniach WJUGa.

Podczas spotkania przedstawię rolę Enterprise OSGi, które zrodziło się, aby połączyć dobrodziejstwa Spring Framework (a właściwie Dependency Injection) z OSGi na potrzeby użycia w środowisku Java EE. I właśnie w ten sposób ten slajd masz już z głowy (więc możesz przyjść 5 minut później).

Brakującym ogniwem w zrozumieniu istoty Enterprise OSGi jest zobaczyć to w działaniu. I to jest właśnie rola tej prezentacji - praktycznie o Enterprise OSGi z WebSphere Liberty Profile.

Nie planuję starać się o miano eksperta w temacie. Nie planuję przekonywać kogokolwiek, że znam Enterprise OSGi na wskroś, co sprawi, że odpowiem na większośc pytań. Nie planuję nawet omówić wszystkiego, co kryje się w Enterprise OSGi. Chcę, aby było krótko i na temat, a to już samo w sobie sprawia, że będzie to dla mnie nielada wyzwanie. Po co jeszcze komplikować sprawę?! Przedstawię aktualny stan wiedzy, który starałem się budować przez ostatnie kilka lat z podsumowaniami w postaci artykułów na moim Wiki w kategorii OSGi.

Odmówię sobie przyjemności budowania aplikacji na żywo, a raczej pokuszę się o współpracę z gitowymi etykietami, aby dostać kolejne wersje i je spokojnie omawiać. Liczę na współpracę Keynote oraz publiczności.

A skoro jesteśmy przy publiczności, to czy jest coś, co szczególnie intryguje Cię w kontekście Enterprise OSGi? Chętnie przygotuję materiał dedykowany. Muszę tylko poznać problem, który możesz opisać w komentarzu. Gorąco zachęcam do aktywniejszego udziału.

24 listopada 2012

WebSphere Liberty Profile z Enterprise OSGi i Java EE na Eclipse DemoCamp w Poznaniu

2 komentarzy
Pamiętasz wpis z poprzedniej edycji Eclipse DemoCamp w roku 2011? Nie?! Zajrzyj do Wrażenia pokonferencyjne - o Eclipse DemoCamp w Poznaniu. Tam też znajdziesz zdjęcie, którym Łukasz postanowił utrwalić naszą znajomość. I właśnie podczas czwartkowego spotkania, zrobiliśmy sobie kolejne, ku głębszemu utrwalaniu.


A tak poza tą bojową miną Łukasza, miły z niego gość. Zebrał się wspólnie z Natalią i zorganizowali kolejną edycję Eclipse DemoCamp. Kolejny Eclipse DemoCamp w Poznaniu!

Można o tej konferencji wiele pisać, ale na pewno bez trudu można zauważyć, że EDC na stałe wpisało się w kalendarz imprez informatycznych w Poznaniu. Zawsze w ciekawych miejscach (aczkolwiek tegoroczne zaszumione karaoke w tle, co trochę irytowało) i z pełną salą (dobieraną zapewne pod liczbę uczestników, więc zawsze wydaje się, że ludzie się wylewają).

Ze względu na 95 minutowe opóźnienie pociągu Warszawa-Berlin pojawiłem się na konferencji na długo po tym, kiedy o pizzy przypominały jedynie sterty pustych opakowań, więc po pierwszym piwie moje ciało doznało lekkiego zaskoczenia alkoholowego i kiedy po Jarku Bąku i Darku Łukszy przyszło mi wystąpić, nie mogłem znaleźć języka w gębie. Atmosfera spotkania pozwoliła mi dość szybko dojść do siebie i zaaplikowałem publiczności odpowiednią dawkę mojej wiedzy.

Slajdów nie było, a kontynuacją wystąpienia będą przyszłe artykuły i skrinkasty, których należy oczekiwać więcej niebawem. Co do samej formy prezentacji, polecam przygotować kawałki kodu na slajdach i wspierać się nimi do uwypuklania wartościowych elementów prezentowanego tematu. Dodatkowo warto zawsze otwierać wystąpienie slajdami wprowadzającymi oraz podsumowującymi na koniec. I najważniejsze - różne metody prezentacji uatrakcyjniają jej zawartość, więc korzystaj ze slajdów, na których są rysunki, tekst, zdjęcia, mnóstwo kolorów czy figur oraz porcja kodowania na żywo w międzyczasie. Nie udaje mi się tego wdrożyć w pełni, ale mam wrażenie, że jest to podstawa udanego wystąpienia publicznego. Ciekawe doświadczenie móc tego skosztować.

Dziękuję Natalii i Łukaszowi za zaproszenie i zachęcam innych do przyszłego, *czynnego* współudziału, czy to w roli aktywnego uczestnika, czy współorganizatora, albo prelegenta.

Udział w tegorocznym EDC w Poznaniu odkładam do archiwum i uważam go za bardzo wartościowe doświadczenie. Polecam!

17 listopada 2011

Przyszły tydzień konferencyjnie - JDD 2011 w Krakowie i Eclipse DemoCamp w Poznaniu

0 komentarzy
Maksym rozwija się znakomicie. Stuknęło mu 6 tygodni i nie tylko, że zaczął przekręcać głowę z lewa na prawo (z przewagą skierowania na lewo), to zaczął się uśmiechać i reaguje na znajome głosy i zachowania (dorosłych, głównie rodziców, którzy wierzą i brną w zaparte, że te milusie słówka są przyjemniejsze dla ucha malca).


Maksym uśmiecha się, regularnie ogłasza pobudkę około 6:45 (z przewagą godzin wcześniejszych - akurat na ranne bicie dzwonów o 6:30!) i kiedy się złości bardzo intensywnie rusza nogami - najpierw lewą, aby przy udziale prawej być na prawdę zły. Doskonała zabawa to rozpoznawanie jego zachowań - podobne do rozpoznawania działającego oprogramowania bez dokumentacji :)

JDD w Krakowie - 21-22 listopada 2011


Poniedziałek i wtorek jestem w Krakowie na konferencji JDD 2011, w której biorę udział jako uczestnik panelu dyskusyjnego Welcome to Javaland. Za stroną konferencji:
"W czasie konferencji JDD odbędzie się panel dyskusyjny, w trakcie którego zaproszeni goście: Jacek Laskowski, Grzesiek Duda, Andrzej Grzesik, Anna Kołodziejczyk i Andrzej Targosz rozmawiać będą na temat historii rozwoju konferencji i społeczności Java w Polsce. Opowiemy o tym jak doszło do zorganizowania pierwszej imprezy, jak się rozwijały kolejne inicjatywy oraz jaka jest przyszłość spotkań Javy w naszym kraju.

Odpowiemy na pytania dlaczego ważne jest organizowanie w Polsce technicznych konferencji, jak to się stało, ze bez wsparcia jednej mocnej firmy udało się doprowadzić do tak dynamicznego rozrostu społeczności Java w Polsce oraz dlaczego istnienie kilku podobnych eventów równolegle ma sens. Wspólnie zastanowimy się co zrobić, aby zwiększyć ilość uczestników zagranicznych w kolejnych konferencjach oraz co wyróżnia nasze imprezy na mapie Europy."
Trudno mi powiedzieć, czy na miejscu uczestników konferencji cieszyłbym się z takiego "wypełniacza" (szczególnie, że alternatywy nie ma), ale zapytany o udział, od razu się zgodziłem, bo uważam, że wciąż zbyt mało osób udziela się publicznie pro publico bono. Liczę na aktywny udział uczestników konferencji.

Później już w roli uczestnika konferencji zamierzam wziąć udział w prezentacji Tomasza Kowalczewskiego z "Domknięcia w Javie", Erika Jan de Wit'a "Scrum – następca modelu kaskadowego", Pawła Brodzińskiego, którego wpisy na blogu czytam z zapałem, z "Scrum, Kanban i inne opowieści", aby na koniec usiedzieć przy Andrew Rubinger'ze z "Testowanie w środowisku Java Enterprise". Jakoś tak wyszło, że wszystkie z prezentacji będą po angielsku, a tematy są po polsku :)

Drugi dzień chciałbym poświęcić na dokształcanie w temacie TDD z udziałem Krzysztofa Jelskiego i Marcina Zajączkowskiego, którzy poprowadzą "TDD Coding Dojo".

Eclipse DemoCamp w Poznaniu - 24 listopada 2011



W czwartek, 24 listopada, pojawię się wieczorem z tematem "Java EE 6 with WebSphere AS 8 and Rational Application Developer 8" w Poznaniu na Eclipse DemoCamp. Kto jednak chciałby słuchać o Java EE 6, od kiedy stała się wręcz trywialna w użyciu?! Dla wytrwałych będę miał więc niespodziankę w postaci...OSGi Blueprint. Zobaczymy, co WAS8 potrafi uruchomić, a RAD8 stworzyć w tym obszarze. Będzie to dla mnie świetna okazja, aby odświeżyć sobie temat Enterprise OSGi z OSGi Blueprint z Apache Aries w IBM WebSphere Application Server V8.

Zastanawiam się, czy całkowicie zaniechać slajdów na rzecz prezentacji aplikacji, które omówię korzystając z RAD V8 i uruchomię na WAS V8?! Godzina na tego typu cyrki nigdy nie kończy się na godzinie i zostaje tylko niesmak niedopowiedzenia. Przy godzinie uważam, że nie ma co liczyć na wiele, więc pewnie skończy się na slajdach, aby po 45 minutach zachęcić do pytań. Obym nie zapomniał, że moje wystąpienie zaplanowane jest na 9 w nocy!

15 listopada 2011

Enterprise OSGi? OSGi Blueprint? To może Karaf z Aries?

7 komentarzy
Trzeba mi było dyskusji z Łukaszem Dywickim (@ldywicki) na twitterze, abym zrozumiał, jak niewiele trzeba, aby OSGi zrzuciło z siebie czar tajemniczości. Całkowicie. Dzięki Łukasz!

Ostatnio, jeśli mówi się o OSGi to raczej w jego wydaniu korporacyjnym, której celem jest połączenie ze standardami spod sztandaru Java EE, tj. Enterprise OSGi. Pisałem o tym niejednokrotnie na blogu. Niejednokrotnie mówiłem o tym na konferencjach oraz "popełniłem" jeden artykuł w temacie - Enterprise OSGi runtime setup with Apache Aries Blueprint.

Teraz jednak okazuje się, że sprawa jest jeszcze bardziej prosta niż mi się poprzednio wydawało. Nie trzeba specjalnych kwalifikacji do zestawienia środowiska Enterprise OSGi. Wystarczy Apache Karaf i sprawa staje się niezwykle trywialna (jeśli założyć, że nauczenie się jego specyficznych poleceń wpasowuje się w to określenie).

Instalacja Karaf sprowadza się do rozpakowania odpowiedniej dystrybucji. Prościzna.

Uruchamiamy Karaf poleceniem bin/karaf. Są inne sposoby i zainteresowanych odsyłam do "producenta".
jacek:~/apps/karaf
$ ./bin/karaf 
        __ __                  ____      
       / //_/____ __________ _/ __/      
      / ,<  / __ `/ ___/ __ `/ /_        
     / /| |/ /_/ / /  / /_/ / __/        
    /_/ |_|\__,_/_/   \__,_/_/         

  Apache Karaf (2.2.4)

Hit '' for a list of available commands
and '[cmd] --help' for help on a specific command.
Hit '' or 'osgi:shutdown' to shutdown Karaf.
Jak instruuje początkowy ekran, wystarczy skorzystać z tabulacji i/lub polecenia help, aby dowiedzieć się wiele o poszczególnych poleceniach. Dodatkowo, w większości (wszystkich?) przypadków sama nazwa polecenia powinna wyjaśnić przeznaczenie.

Weźmy chociażby polecenie features:list (nie zapominamy o tabulacji po pierwszych literach!)
karaf@root> features:
features:addurl              features:info                features:install             features:list
features:listrepositories    features:listurl             features:listversions        
features:refreshurl          features:removerepository    features:removeurl           features:uninstall
karaf@root> features:list
features:list                features:listrepositories    features:listurl             features:listversions
karaf@root> features:list
State         Version           Name                          Repository             Description
[uninstalled] [2.2.4          ] karaf-framework               karaf-2.2.4            
[uninstalled] [2.5.6.SEC02    ] spring                        karaf-2.2.4            
[uninstalled] [2.5.6.SEC02    ] spring-web                    karaf-2.2.4            
[uninstalled] [3.0.6.RELEASE  ] spring                        karaf-2.2.4            
[uninstalled] [3.0.6.RELEASE  ] spring-aspects                karaf-2.2.4            
[uninstalled] [1.2.1          ] spring-dm                     karaf-2.2.4            
[uninstalled] [1.2.1          ] spring-dm-web                 karaf-2.2.4            
[uninstalled] [3.0.6.RELEASE  ] spring-instrument             karaf-2.2.4            
[uninstalled] [3.0.6.RELEASE  ] spring-jdbc                   karaf-2.2.4            
[uninstalled] [3.0.6.RELEASE  ] spring-jms                    karaf-2.2.4            
[uninstalled] [3.0.6.RELEASE  ] spring-struts                 karaf-2.2.4            
[uninstalled] [3.0.6.RELEASE  ] spring-test                   karaf-2.2.4            
[uninstalled] [3.0.6.RELEASE  ] spring-orm                    karaf-2.2.4            
[uninstalled] [3.0.6.RELEASE  ] spring-oxm                    karaf-2.2.4            
[uninstalled] [3.0.6.RELEASE  ] spring-tx                     karaf-2.2.4            
[uninstalled] [3.0.6.RELEASE  ] spring-web                    karaf-2.2.4            
[uninstalled] [3.0.6.RELEASE  ] spring-web-portlet            karaf-2.2.4            
[uninstalled] [2.2.4          ] wrapper                       karaf-2.2.4            
[uninstalled] [2.2.4          ] obr                           karaf-2.2.4            
[installed  ] [2.2.4          ] config                        karaf-2.2.4            
[uninstalled] [7.4.5.v20110725] jetty                         karaf-2.2.4            
[uninstalled] [2.2.4          ] http                          karaf-2.2.4            
[uninstalled] [2.2.4          ] war                           karaf-2.2.4            
[uninstalled] [2.2.4          ] kar                           karaf-2.2.4            
[uninstalled] [2.2.4          ] webconsole-base               karaf-2.2.4            
[uninstalled] [2.2.4          ] webconsole                    karaf-2.2.4            
[installed  ] [2.2.4          ] ssh                           karaf-2.2.4            
[installed  ] [2.2.4          ] management                    karaf-2.2.4            
[uninstalled] [2.2.4          ] eventadmin                    karaf-2.2.4            
[uninstalled] [2.2.4          ] jasypt-encryption             karaf-2.2.4            
[uninstalled] [0.3            ] transaction                   karaf-enterprise-2.2.4 OSGi Transaction Manager
[uninstalled] [0.3            ] jpa                           karaf-enterprise-2.2.4 OSGi Persistence Container
[uninstalled] [0.3            ] jndi                          karaf-enterprise-2.2.4 OSGi Service Registry JNDI access
[uninstalled] [0.3            ] application-without-isolation karaf-enterprise-2.2.4
Jak rozumiem istotę features w Karaf to nic innego jak zestawy funkcjonalne - zbiór pakunków, które razem tworzą pewną funkcjonalną całość. Prześwietlmy sam karaf-framework (ponownie nie zapominamy o tabulacji!)
karaf@root> features:
features:addurl              features:info                features:install             features:list
features:listrepositories    features:listurl             features:listversions
features:refreshurl          features:removerepository    features:removeurl           features:uninstall
karaf@root> features:in
features:info       features:install
karaf@root> features:info kar
kar               karaf-framework   
karaf@root> features:info karaf-framework 
Description of karaf-framework 2.2.4 feature
----------------------------------------------------------------
Feature has no configuration
Feature has no configuration files
Feature has no dependencies.
Feature contains followed bundles:
  mvn:org.ops4j.pax.url/pax-url-mvn/1.2.8
  mvn:org.ops4j.pax.url/pax-url-wrap/1.2.8
  mvn:org.ops4j.pax.logging/pax-logging-api/1.6.3
  mvn:org.ops4j.pax.logging/pax-logging-service/1.6.3
  mvn:org.apache.felix/org.apache.felix.configadmin/1.2.8
  mvn:org.apache.felix/org.apache.felix.fileinstall/3.1.10
  mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.asm/3.3_2
  mvn:org.apache.aries/org.apache.aries.util/0.3
  mvn:org.apache.aries.proxy/org.apache.aries.proxy/0.3
  mvn:org.apache.aries.blueprint/org.apache.aries.blueprint/0.3.1
  mvn:org.apache.karaf.shell/org.apache.karaf.shell.console/2.2.4
  mvn:org.apache.karaf.shell/org.apache.karaf.shell.osgi/2.2.4
  mvn:org.apache.karaf.shell/org.apache.karaf.shell.log/2.2.4
  mvn:org.apache.karaf.shell/org.apache.karaf.shell.packages/2.2.4
  mvn:org.apache.karaf.shell/org.apache.karaf.shell.commands/2.2.4
  mvn:org.apache.karaf.shell/org.apache.karaf.shell.dev/2.2.4
  mvn:org.apache.karaf.jaas/org.apache.karaf.jaas.config/2.2.4
  mvn:org.apache.karaf.jaas/org.apache.karaf.jaas.modules/2.2.4
  mvn:org.apache.karaf.jaas/org.apache.karaf.jaas.command/2.2.4
  mvn:org.apache.karaf.features/org.apache.karaf.features.core/2.2.4
  mvn:org.apache.karaf.features/org.apache.karaf.features.command/2.2.4
  mvn:org.apache.karaf.features/org.apache.karaf.features.management/2.2.4
  mvn:org.apache.karaf.management/org.apache.karaf.management.server/2.2.4
  mvn:org.apache.aries.jmx/org.apache.aries.jmx/0.3
  mvn:org.apache.aries.jmx/org.apache.aries.jmx.blueprint/0.3
I od razu wiadomo z czego składa się taka kompletna funkcjonalnie całość. Bystre oko dostrzeże tam Apache Aries Blueprint (mvn:org.apache.aries.blueprint/org.apache.aries.blueprint/0.3.1).

Nie pozostaje nic innego jak sprawdzić działanie Aries Blueprint z przykładowym projektem z...Aries Blueprint. Korzystamy z pomocy Karaf, aby zainstalować pakunek z repozytorium mavenowego - wystarczy skorzystać z polecenia install i odpowiedniego adresu z mvn na przodzie.
karaf@root> install -s mvn:org.apache.aries.blueprint/org.apache.aries.blueprint.sample/0.3.1
Bundle start
Bundle ID: 49
karaf@root> ======== Initializing Foo =========
Service registration notification: 5 -1 707063160: Hello FooBar
org.apache.felix.framework.BundleContextImpl@5e6276e5 [a list element, 5] PLN
Fri Apr 17 00:00:00 CEST 2009 {osgi.service.blueprint.compname=foo, key=value}
Działa! I nie trzeba było wiele. Wystarczy Karaf. Spróbuj sam, a przekonasz się, że "zaawansowane" nie musi oznaczać "niedostępne".

Teraz skoro środowisko jest już zestawione, nie ma już wymówek na brak wiedzy do poznania Enterprise OSGi z kontenerem OSGi Blueprint w roli głównej. Jeśli Spring Framework daje Ci wiele radości, to w połączeniu z OSGi może być jej jeszcze więcej.

Czy pracujesz już z Karaf? A może również i Aries albo Spring-DM? Jakie wrażenia? Jest coś ciekawego, co powaliło Cię na kolana? Chętnie wsłuchałbym się w głos praktyka.

28 lipca 2011

Udana współpraca z BlackBeltFactory

9 komentarzy
Pisałem poprzednio o moich poczynaniach przygotowawczych do szkolenia z Java SE 6 i w ramach rozgrzewki zajrzałem na BlackBeltFactory (BBF). Interfejs użytkownika przyprawia mnie o mdłości, ale nie o tym ja teraz :) Każdą aktywność, która podnosi naszą wartość rynkową uważam za wartą zachodu, a taką, która podnosi ją merytorycznie i, poza czasem, nic nie kosztuje, tym bardziej.

I tak moje myśli podryfowały do BBF. Dryf był wliczony w kurs z dwóch powodów - pierwszy to wejście w temat Androida, drugi to przygotowania do warsztatów certyfikacyjnych z Java SE 6 i trzeci...poprawka, miały być dwa, a widać, że są trzy...egzamin dotyczący OSGi.

Zdaje się, że dryf jest czymś niechcianym, bo w końcu cała rzecz polega na jego niwelowaniu, a więc kiedy staje się chciany, mamy do czynienia nie z dryfem, a kursem (mam jedak wrażenie, że to stanowi fajną figurę literacką, więc użycie uważam za uzasadnione, a żeglarze niech mi wybaczą pomyłkę). Jakie to wszystko porąbane i jak niewiele trzeba, aby płynnie przejść od czegoś niechcianego do pożądanego. Kwestia odpowiedniego spojrzenia na sprawę i od razu człowiekowi robi się lżej na duszy.

I tak mój wczorajszy dzień ogłaszam "Dniem wokół BBF".

Zacząłem od egzaminu na czarny pas, tzw. belt track. Darmowa ścieżka zdrowia, która niekoniecznie daje gwarancję podobnych wyników podczas egzaminu na Oracle Certified Professional, Java SE 6 Programmer, ale bezsprzecznie w nim pomaga. Nic za darmo? W przypadku ścieżki na czarny pas, bynajmniej (pierwsze moje użycie bynajmniej, od kiedy dowiedziałem się, co tak na prawdę znaczy!).

Kolejnym krokiem w drodze na czarny pas był egzamin Java SE Base API - Intermed. Niefortunny zbieg okoliczności sprawił, że przy odpowiedzi na 12 pytanie, kolejnego już nie dostałem, bo...serwer chwilowo przeciążony. Cudnie. Po chwili sytuacja wróciła do normy, ale moje podejście egzaminacyjne zostało oznaczone jako niepomyślne i mogłem wrócić do niego za...miesiąc! Tylko tego brakowało.

Postanowiłem nazbierać trochę punktów, aby spróbować się z innym certyfikatem, który już wymagał kilku świnek - punktów, które pozwalają na podejście do testu. U mnie stan konta wynosił -6 świnek. Możesz wyobrazić sobie moją minę, kiedy nie tylko, że niesłusznie poległem przy egzaminie, ale jeszcze, aby podejść do kolejnego, należało najpierw wyzerować konto. Byłem na kredycie. Kolejny?! Mało mi uciech z frankiem?!

Nie poddając się i trochę z ciekawości zajrzałem do egzaminu OSGi Basic. Widać, że zarzucony całkowicie, więc nie trudno napisać kilka nowych pytań. W ten sposób dotarłem do poziomu +4 świnki. Odechciało mi się jednak podchodzić do egzaminu. Rzuciło mnie do innego zakresu tematycznego (mówią, że znudzenie, to najgorsza przypadłość w naszej branży i pewnie nie tylko).

Akurat dnia poprzedniego przeczytałem artykuł wprowadzający o Androidzie. Jestem już całkowicie przekonany o wejściu w temat i zakupie mojego pierwszego smartfona Samsung Galaxy S II, i tylko czekam urodzin, aby pozwolić sobie na niego (sknera ze mnie - inwestowania mi się zachciało - więc zastanawiałem się nad nim i HTC Sensation przez bodaj pół roku). Postanowiłem zagłębić się w Androida od września, więc bez większej wiedzy na jego temat, zajrzałem do egzaminu Android Fundamentals. Akurat pojawił się na liście najbardziej aktywnych w minionym tygodniu, więc dodatkowo przykuł moją uwagę.

Testowego egzaminu Android Fundamentals nie zdałem (co było do przewidzenia), ale kilka rzeczy okazało się intuicyjnych (odpowiedziałem poprawie), a pozostałe przyczyniły się do lepszego rozpoznania tematu. Ocena 50% poprawnych odpowiedzi przekonała mnie o słuszności wejścia w temat Androida, bo widać, że jego poznanie jest dla mnie na wyciągnięcie ręki i tym samym wejdę w temat tworzenia aplikacji na urządzenia mobilne. Tak się przytrafiło, że uzasadnienia odpowiedzi egzaminu były często tak lakoniczne i tak niestylistyczne, że...do kilku zaproponowałem poprawki językowe.

W ten sposób poznałem Bartka Jerzmana, o którym ostatnio wiele słyszałem, przede wszystkim wokół egzaminu z Androida. Wieczorem zatwierdził moje poprawki i...napisał do mnie z propozycją współpracy. Jako, że temat Androida mam w oczekiwaniu na wrzesień, wyraziłem zainteresowanie od września. Kilka maili i zdecydowałem się poprosić o rozpoznanie tematu wokół porannego przeciążenia serwera i mojej wpadki egzaminacyjnej. Bartek odpisał, że zajmie się sprawą i już dzisiaj rano rozmawiałem z Henrykiem Konsek (Konskiem?). W ciągu kilku minut nie tylko, że poprawił w systemie moje przykre, ranne doświadczenie, ale i zgodził się na przejęcie przeze mnie egzaminu z OSGi (!)

Jestem oszołomiony łatwością, z jaką poradzili sobie z załatwieniem spraw i tempem, w jakim się to działo. Nie pozostaje nic innego, jak odwdzięczyć się za pomoc. Ale to dopiero od września. Bartek i Henryk zgodzili się, więc czuję się jeszcze bardziej zobowiązany. Z takimi gośćmi warto współpracować! Zauważalnie poprawiają moją motywację.

13 lipca 2011

"OSGi in Action" od Manning - książka-marzenie dla zainteresowanych OSGi

3 komentarzy
Lato w pełni i tylko brakuje solidnego (porządnego), dwutygodniowego wypoczynku - bez kompa i z książką w ręku. Jeśli potrzebujesz rekomendacji i interesuje Cię temat OSGi, to najnowsza publikacja na ten temat od wydawnictwa Manning - OSGi in Action - powinna spełnić Twoje wysokie oczekiwania - merytorycznie i literacko. Książka cudo, którą rekomenduję każdemu, kto nie doświadczył błogiego stanu zaczytania w technicznej książce na temat bardzo chodliwy ostatnio. Dodam jeszcze, że nauka angielskiego przy tej książce to kolejny zysk. Polecam.

Recenzja dostępna na moim Wiki - Book review: OSGi in Action. Pozwoliłem sobie na zamieszczenie w niej kilku uroczych słówek i zwrotów angielskich, i ciekawość mnie zżera, komu udało się zejść poniżej 5 nieznanych? :)

Książkę posiadam w tradycyjnej formie drukowanej i mogę wypożyczyć na żądanie. Wystarczy napisać na jacek@japila.pl. Zachęcam.

11 lipca 2011

Doskonalenie warsztatu - artykuły, recenzje, a teraz i skrinkast

1 komentarzy
Istnieje wiele technik doskonalenia wiedzy i poza biernym czytaniem, a później aktywną praktyką, warto również rozważyć inne techniki samodoskonalenia, np. spisywanie swoich doświadczeń na blogu czy artykułach, spotkania, w których demonstrujesz zdobytą wiedzę lub nagrywanie skrinkastów. Jest wiele sposobów na dotarcie do nieaktywnych przestrzeni naszego mózgu i mówią, że korzystamy z nie więcej niż 10% jego możliwości, więc "wyrwanie" chociażby 1 procenta może być kamieniem milowym naszego technicznego rozwoju. Najważniejsze, aby nie poprzestawać i wciąż próbować, kwestionować, dyskutować i w ogóle być aktywnym.

Idąc tym tropem, w ramach doskonalenia własnego warsztatu technicznego, udało mi się przeczytać kilka książek, spisać moje doświadczenia w postaci artykułów na moim Wiki, a wczoraj upubliczniłem nagranie (skrinkast) z instalacji IBM Installation Managera, który posłuży mi do instalacji środowiska do poznawania Java EE 6.

Wielu podkreślało znaczenie treści pisanej, ale było też wielu, którzy wykazywali zainteresowanie treścią nagraną w postaci skrinkastów.

Pozostawiam do Twojej dyspozycji kolejność, w której zapoznasz się z materiałem. A jest go niemało treścią, niewiele czasowo (próbowałem zachować wysoki współczynnik treści do formy). Okres wakacyjny nie nastraja, aby przesiadywać przed monitorem komputera, więc próbowałem zmieścić się z materiałem w okolicach 5 minut.

Zachęcam do zapoznania się z ostatnimi moimi produkcjami i wyrażenie swojej opinii. Bez niej, zapał szybko się wyczerpuje.
Byłbym niezwykle rad, gdybyś znalazł(a) 2 minuty na obejrzenie skrinkasta, w którym demonstruję instalację środowiska IBM Rational Application Developer V8.0.3 do poznawania Java EE 6 z IBM WebSphere Application Server V8 (nie zabraknie również JBoss AS 7, GlassFish 3.1 oraz Apache Geronimo 3). Na razie 2-minutówka o instalacji IBM Installation Manager. Zalecam oglądanie na pełnym ekranie.

Wystarczająca rozdzielczość (720p HD)? Brakuje głosu? Masz jakiekolwiek sugestie odnośnie podkładu dźwiękowego? Skłaniam się ku kompozycjom muzyki poważnej, bo potrafi zaskoczyć swoją różnorodnością, której rzadko mam przyjemność zasmakować. Nie za długie nagranie? A może za krótkie? Jaka tematyka byłaby interesująca najbardziej? Daj poznać swoje uwagi.

15 czerwca 2011

Definiowanie komponentów usługowych z OSGi Declarative Services

6 komentarzy
Właśnie opublikowałem kolejny artykuł Definiowanie komponentów usługowych z OSGi Declarative Services podsumowujący moje dotychczasowe dokonania (pseudo)naukowe w obszarze OSGi R4 Declarative Services.

Jest to specyfikacja komponentów usługowych w OSGi - część specyfikacji OSGi Service Platform Service Compendium wydanie 4, wersja 4.2 opisana w rozdziale 112. Declarative Services Specification. Na niecałych 50 stronach można zapoznać się z deklaratywną rejestracją usług na platformie OSGi.

OSGi Declarative Services zdejmuje z barków programisty utrzymywanie kodu, który wymagany był przez użycie OSGi w warstwie usługowej. W tonie zdejmowania obowiązków z barków programisty i parającym się OSGi zdecydowanie ulżono (nie wliczając w to poznania nowej specyfikacji). Już na etapie mojego skromnego doświadczenia w obszarze OSGi jestem w stanie zauważyć prostotę OSGi przy użyciu OSGi Declarative Services. To nic innego jak kolejna warstwa na warstwie usługowej OSGi.

Artykuł stanowi przyczułek do dalszych doświadczeń poznawania OSGi wierząc, że podsumowaniem będzie kompletna aplikacja desktopowa (najpierw) oraz korporacyjna (później). Liczę również na odzew osób, które już parają się OSGi, czy też po prostu są zaintrygowane możliwościami OSGi, czy w końcu rozważają ich poznanie. Więcej nas, to ciekawsze dyskusje, a to na pewno przyczynia się do łatwiejszej nauki i wejścia w świat dynamicznych aplikacji.

Ostatnie konferencje w Polsce, wliczając minioną Confiturę 2011, nie pozostawiają złudzeń, że nie jest to szeroko rozpowszechniony temat u nas. Zastanawia mnie dlaczego?! W końcu era OSGi na poziomie serwerów aplikacyjnych już nastała, a nierzadko, ale wciąż ze przyciszonym głosem, mówi się o niej w obszarze szkieletów aplikacyjnych, np. OSGi integration for Grails applications. Marsz ku OSGi idzie jednak niezwykle powoli (może faktycznie wysiłek w stworzenie działającego rozwiązania nie przynosi aż takich zysków?).

Zapraszam do lektury mojego nowego artykułu Definiowanie komponentów usługowych z OSGi Declarative Services i udziału w dyskusji o wartości OSGi w naszych aplikacjach. Zechciałby mnie ktoś łaskawy wyprowadzić z przekonania, że warto inwestować swój czas w OSGi i okolice?

09 czerwca 2011

Rapid OSGi development with Pax-Construct

0 komentarzy
Kolejny twór literacki spod mojego pióra dotyczący OSGi - Rapid OSGi development with Pax-Construct. Tym razem na warsztat wziąłem Pax-Construct, o którym miałem przyjemność usłyszeć wielokrotnie i jakoś tak zawsze nie było mi dane się z nim zaprzyjaźnić. Podczas poszukiwania informacji odnośnie szybkiego i maksymalnie trywialnego (aczkolwiek to sprawa bardzo osobista i wielu moją prostotę nazwie niezwykle zawiłą sprawą) sposobu na utworzenie pakunków OSGi korzystając z Apache Maven trafiłem na bardzo treściwy i jednocześnie niezwykle zwięzły wpis Quick OSGi projects using Maven archetypes z...i tu mnie zmroziło...2007 roku (!) To był kolejny raz, kiedy spotkałem Pax-Construct. I nie żałuję.

Wcześniej miałem przyjemność spotkać się z poleceniem mvn pax:provision, które ostatecznie również zaprowadziło mnie do Pax-Construct. Tam znalazłem przykład, który trochę mnie zastanowił i dopiero, kiedy spróbowałem się z nim samodzielnie, zrozumiałem jego ideę. Pierwsze wrażenia całkowicie pozytywne. Wszystko idzie jak po maśle, co nastraja bardzo optymistycznie do użycia produkcyjnego.

Kontynuując zasadę "codziennych 15-minutówek" nie tylko, że poznałem i polubiłem (!) narzędzie, ale również napisałem krótki artykuł, aby inni, zaganiani mieli przyjemność poznać narzędzie.

Zapraszam do lektury nowego artykułu Rapid OSGi development with Pax-Construct. Powtarzam to przy każdej okazji i nie omieszkam i teraz, że komentarze są mile widziane, a krytyka zostanie dodatkowo wynagrodzona.

Jeśli jest zainteresowanie przekazywaniem moich doświadczeń w postaci skrinkastów, to u dołu wpisu pojawiło się pole wyboru "proszę o skrinkast", które od tej pory będzie wskazywało Twoje zainteresowanie tematem w postaci krótkich filmików.

p.s. Gdyby ktoś zechciał pomóc mi w przepisaniu mojego, innego artykułu Pakunki OSGi w projekcie wielomodułowym Apache Maven 2 z maven-bundle-plugin na Pax-Construct byłoby cudnie. Sekcja autor wzbogaci się o kolejnego zapaleńca OSGi, czego każdemu życzę. Zapraszam!

p.s.2. Przypominam, że już za 2 dni, w sobotę, 11 czerwca w Warszawie odbędzie się konferencja społeczności javowej w Polsce - Confitura 2011. Sponsorzy dopisali, rejestracja również pęka w szwach, nie inaczej jest z wolontariuszami. Teraz pora na Ciebie, uczestniku. Przyjdź i daj się poznać! Zagaduj, dyskutuj, nie zgadzaj się z poglądami prowokując dyskusje, nie przyjmuj wszystkiego za pewnik i bądź sceptyczny ku uciesze organizatorów, prelegentów i całej naszej społeczności. Ja będę, więc i Ty również musisz się pojawić. Choćby na chwilę, ale sobota, 11 czerwca nie może minąć bez Twojej wizyty w Warszawie na Confiturze. To nie do pomyślenia w naszej profesji. Do zobaczenia!

05 czerwca 2011

Enterprise OSGi runtime setup with Apache Aries Blueprint

0 komentarzy
Wspaniała pogoda, co? Właśnie wróciłem z żagli na Zalewie Zegrzyńskim, a wcześniej z Katowic, gdzie prowadziłem 5-dniowe szkolenie z ILOG JRules V7.1 i cieszę się z ostatnich dokonań. Wszystko gładko idzie i dobrze, że pogoda nie nastraja do przesiadywania przed komputerem, bo zmusza mnie do dobierania aktywności, które są najbardziej wartościowe (kryteria dobieram samodzielnie).

Dzisiaj doświadczyłem kolejny raz, że kiedy w naszej profesji chce się coś dogłębnie poznać, to trzeba zapewnić sobie bogate źródło teorii, które musi być poparte nie mniej bogatą praktyką. Kiedy znalazłem się z moim synem na łódce, kiedy zaczęło wiać koło 3ki, od razu przekonałem się, ile jeszcze muszę się nauczyć w trudnym fachu żeglarskim. W zeszłym roku próbowałem "odrestaurować" swoją wiedzę, ale zwykle kończyło się na wsparciu instruktora, który uczył, ale wciąż brakowało mi tego pierwiastka samodzielności. Dzisiaj było inaczej. Kiedy to po ostatnich 2 wypadach weekendowych nad Zalew z dzieciakami, przyszło mi zmierzyć się wspólnie z synem z 3ką i szkwałami, dopiero skoczyłem w praktyce w górę. Dla wielu z Was, praktykujących żeglarzy, te moje dzisiejsze ochy i echy, to chleb powszedni, a nawet "bida z nyndzą", ale dla mnie to było wydarzenie! Kiedy napiszę, że przy ostrym bajdewindzie, spotkaliśmy się ze szkwałem i w dodatku z zaknagowanym szotem grota, przekonałem się, ile znaczy doświadczenie projektowe. Czułem, że zaliczymy wywrotkę, kiedy woda zaczęła się wlewać przez burtę, a my po drugiej stronie wyginaliśmy się próbując balastować. Gdyby nie stanowcze "Damy radę!" mojego syna, kiedy krzyknąłem "Wskakujemy do wody!", pewnie skończyłoby się na kąpieli. Sam nie wiedział, co mówi, ale w zasadzie nic nie tracił, a najważniejsze, że nie stracił głowy w trudnej sytuacji. A cały szkopuł, że Jackowi się zaknagował szot, a to, co się działo, nie nastrajało do twórczego myślenia (choć, jak teraz o tym myślę, to fakt, że udało nam się doprowadzić do tej sytuacji, był twórczym myśleniem). Później wcale nie było łatwiej, ale było zdecydowanie pewniej, a nawet wkradł się element nonszalancji. Jaki byłem rad, kiedy w końcu udało nam się dobić do brzegu. Lubię to!

Pomyślałem, że w ramach rekompensaty za ostatnie wystąpienie w Zielonej Górze (czytaj Wrażenia po seminarium na Uniwersytecie Zielonogórskim = będzie JUG Zielona Góra) odwzajemnie się czymś niewielkim, co nie zabierze dużo czasu (pewnie kwadrans), a merytorycznie zaoszczędzi całe godziny. Będzie to dla wielu taki chrzest bojowy, w którym, kiedy przejdą temat krok po kroku, jak zostało to opisane w artykule, doświadczą tego cudownego uczucia zrozumienia teorii w boju. Nie ma tam wiele, ale jest wystarczająco, aby zacząć zabawę z Enterprise OSGi w wykonaniu Apache Aries i Eclipse Equinox. W sam raz na 15-minutową rozgrzewkę przez poniedziałkowymi zadaniami.

Zainteresowanych zapraszam do lektury mojego ostatniego literackiego dzieła Enterprise OSGi runtime setup with Apache Aries Blueprint. Komentarze mile widziane. Wręcz do nich zachęcam, bo niewielki odzew nie działa inspirująco, a nawet doprowadza do skrajnego myślenia, że nikt tego nie czyta :(

p.s. Przypominam, że w sobotę, 11 czerwca będziemy mieli okazję skosztować konfitury technicznej na pięknie przybranym stole konferencji Confitura 2011 w Warszawie. Będzie wiele smakołyków i szkoda byłoby, gdybym zamiast pływać nad Zalewem, musiał obejść się smakiem nie mogąc spotkać się z moimi czytelnikami. Nie pozwól mi sądzić, że w owej 900-tce zarejestrowanych brakuje Ciebie. Marzy mi się wymienić doświadczeniami z osobami, które parają się praktycznie z OSGi.

26 maja 2011

Wrażenia po seminarium na Uniwersytecie Zielonogórskim = będzie JUG Zielona Góra

2 komentarzy
To było szybkie, sprawne i niezwykle pouczające doświadczenie. Seminarium na Uniwersytecie Zielonogórskim trwało niespełna pół dnia, ale wierzę, że uczestnicy zdobyli równie dużo wiedzy, co ja, kiedy to przyszło mi ułożyć dotychczasową wiedzę w coś strawnego.

Podróż do Zielonej Góry przebiegła całkiem przyjemnie - stosunko luźno w pociągu i nawet przesiadka na lokalny skład w Zbąszynku nie zepsuła ogólnego wrażenia, całkiem pozytywnego. W trakcie jazdy udało mi się w końcu znaleźć czas na lekturę książki OSGi and Equinox: Creating Highly Modular Java Systems z Addison-Wesley Professional, więc tym bardziej pozytywnie wspominam podróź.

Do Zielonej Góry dotarłem około 20:00 i już na dworcu zostałem przywitany przez mojego podopiecznego z praktyk studenckich ESI w IBM - Marka Szpaka, który współprowadził seminarium oraz dra Andrzeja Marciniaka, który jest promotorem pracy inżynierskiej Marka. Po krótkiej wizycie w hotelu pojawiliśmy się w Winnicy, gdzie spotkaliśmy się z innymi osobami około 21:00. Dzięki temu spotkaniu miałem możliwość zasmakować pysznego łososia w sosie z zielonej herbaty i rizotto, a w części społecznościowej - ludzi z lokalnych firm, którzy poczuli klimat wokół zorganizowania lokalnego, zielonogórskiego JUGa! Brawa i gratulacje za inicjatywę, pod którą podpisuję się obiema rękoma. Na spotkaniu pojawił się również Piotr Kobzda, który, jak sobie później uzmysłowiłem, był pierwszym zielonogórzaninem, którego miałem przyjemność poznać lata temu. Przeszliśmy do pobliskiego pubu na piwo i o 23:00 byłem spowrotem w hotelu.

Trema niemała, więc jeszcze zabrałem się za ponowne przejście z przykładami, bo plan mojego wystąpienia zakładał, aby całkowicie zrezygnować ze slajdów na rzecz programowania na żywo. Dzięki Łukasz ("Smok" Rybka) za inspirację i podtrzymanie pomysłu przy życiu. Jestem zobowiązany i niezwykle wdzięczny za radę!

Co zaplanowałem pokazać praktycznie, na żywo, zostało zrealizowane. Chciałoby się więcej, lepiej, sprawniej, ale mam wrażenie, że ogólnie było nieźle. Zresztą komentarze podczas i po seminarium mówią same za siebie. Tak wyraził się troken:

"Świetna prezentacja. Wielkie dzięki za przyjazd. Takie spotkania po prostu zarażają pasją do szukania coraz to lepszych rozwiązań."

oraz d3ny:

"Chcialbym podziekowac za swietny wystep w Zielonej Gorze. Dla mnie, a jestem osoba mniej doswiadczona w zakresie Javy byl to bardzo profesionalny wyklad. Pomysl "wiecej IDE" byl w pelni trafny, bo krociutki kod + prezentacja dzialania zawsze najlepiej obrazuje, co w trawie piszczy. Warto dodac, iz prezentacje prowadzona bardzo zywo, rzeklbym nawet, ze momentami przebojowo. Bardzo milo sie sluchalo, na 'spanie' nie bylo po prostu czasu:)
Ze strony zwyklego sluchacza-studenta powiem tylko "Serdeczne dzieki!"."


czy opinia Kamila Łuszczki:

"Prezentacja bardzo fajnie przedstawiona, zdecydowanie pokazywanie kodu a nie samych slajdów jest dużo lepszym rozwiązaniem a zarazem bardziej interesującym. Mimo tego że z programowaniem w Javie nie mam zbyt dużego doświadczenia tym bardziej w korporacyjnej Javie, bardzo dobrze się Ciebie słuchało i można było się dowiedzieć dość sporo. Wyczerpałeś i przedstawiłeś temat na tyle że jeżeli ktoś miał styczność z programowaniem to na pewno dużo z tego spotkania wyniósł. Spotkanie jak najbardziej na duży plus."

Wszystkie komentarze można znaleźć pod moją zapowiedzią na Seminarium na Uniwersytecie Zielonogórskim - Java Contexts and Dependency Injection oraz Enterprise OSGi.

Na seminarium naliczyłem ponad 100 osób, które rozkładały się równomiernie na studentów oraz pracowników lokalnych firm. Byli zatem i praktycy programujący w Javie na codzień, ale i tacy, którzy poznali się z OSGi jeszcze na długo przez moim przybyciem. Pozdrowienia dla załogi z Max Elektronik S.A. oraz ADB Poland - Zielona Góra. Spotkałem również osobę, którą spotkałem już podczas naszych warszawskich konferencji (!) Było na prawdę ciekawie i inspirująco. Wyraz twarzy uczestników przybierał wszelkie możliwe formy.

Dzięki zaproszeniu Marka i Andrzeja mój zapał do OSGi ponownie nabrał mocy i zamierzam częściej z nim obcować. Książki są już na półce, więc choćby recenzji pojawi się więcej. Może nawet artykułów i skinkastów? Plany obszerne, ale jak to mówią "dobrymi chęciami, piekło wybrukowane", co mnie nie zraża, bo "nadzieja umiera ostatnia" i raczej zdążę, aby coś, nawet niewielkiego, maluczkiego z tego wyprodukować! :)

Na zakończenie, chciałbym gorąco podziękować Markowi i Andrzejowi za zaproszenie na seminarium oraz jego uczestnikom, którzy spisali się na prawdę wspaniale zadając pytania, wyrażając swoje zainteresowanie (lub brak) różnymi częściami ciała, ale przede wszystkim obecnością. Bardzo, bardzo dziękuję! Jeśli czegokolwiek mógłbym sobie życzyć więcej, to kolejnych tego typu spotkań. Mówi się, że jest plan na więcej w Zielonej Górze. Trzymam za słowo i zgłaszam się na ochotnika-prelegenta czy po prostu pomocnika przy rozkręcaniu lokalnej społeczności javowej.

22 maja 2011

Seminarium na Uniwersytecie Zielonogórskim - Java Contexts and Dependency Injection oraz Enterprise OSGi

8 komentarzy
To już w tę środę, 25 maja 2011 w Zielonej Górze na ulicy Podgórnej, gdzie uczestniczę w seminarium nt. Java Contexts and Dependency Injection (CDI) oraz Enterprise OSGi wspólnie z moim podopiecznym z praktyk studenckich w IBM - Markiem Szpakiem.


Temat pojawił się w naszych głowach, kiedy to Marek zastanawiał się nad tematem pracy magisterskiej (patrz: Praca inżynierska z JSF2? Może jednak CDI i OSGi?) i zaproponowałem mu, abyśmy wspólnie zorganizowali małą rozgrzewkę w postaci seminarium. Szczęśliwie, Marek nie potrzebował specjalnych zabiegów mentorskich, aby pomysł przypadł mu do gustu i tak oto, po tygodniach organizacji, wydeptywania ścieżek do odpowiednich organów uczelni, mamy upragnione seminarium.

Zapraszam wszystkich do udziału i zapewniam, że bez Twojej aktywności, moja będzie...jak zwykle. Największym moim problemem jest próba dopasowania się do wszystkich odbiorców, bez wyjątków. Nie można wyobrazić sobie trudniejszej publiki niż uczelniana, w której zasiadają zwykle początkujący, ale nie brakuje również bardziej zaawansowanych graczy. Trudno wtedy zaczynać od początku, aby nie zrazić bardziej zaawansowanych, ale rozpoczęcie od pewnego poziomu zrazi nowicjuszy. I jak tu doradzić? Chciałoby się zacząć wszystko od początku, najlepiej w postaci serii wykładów, ale to w tym momencie niemożliwe. Zaczniemy na przemian, najpierw trochę teorii, później praktyki. I tak dla CDI, i dla Enterprise OSGi. Tym razem zaplanowałem więcej sesji z IDE, a dopiero pod koniec spróbuję podsumować w postaci slajdów. Życz mi powodzenia!

19 kwietnia 2011

Wykład na Politechnice Krakowskiej - to już jutro!

5 komentarzy
Coś co zaczęło się od niewinnego zaproszenia dotyczącego mojego wykładu o Javie na Politechnice Krakowskiej właśnie przybiera formę czegoś namacalnego i wcale nietrywialnego - wykład i seminarium dot. Java EE, OSGi oraz SCA.

Chciałbym, aby miało to format warsztatu niż slajdowiska, ale kto wie komu co przypasuje, więc przygotowuję się i tak, i tak. Zaczynam odczuwać presję wciąż niedoskonałego przygotowania. W końcu, jeśli źle przedstawię dobrą technologię, studenci mogą się do niej zrazić, a tego bym sobie nie wybaczył. Liczę na wiele prac dyplomowych (przynajmniej na inż.) w temacie, najlepiej jeśli głównym graczem było OSGi.

oraz

Wszystkich serdecznie zapraszam.

Planuję również podobną aktywność na Uniwersytecie Zielonogórskim pod koniec maja lub początek czerwca, gdzie zaplanowałem Praktycznie o CDI z Arquillian oraz serwerami aplikacyjnymi WebSphere AS V8 i GlassFish 3.1, a w drugiej części Enterprise OSGi.

18 marca 2011

Confitura 2011, 33rd degree, GeeCON i InfoShare oraz "markowy" inż. z OSGi i CDI

9 komentarzy
Dla tych, którzy spędzają wolne chwile z dala od komputera i mają tą rzadko spotykaną "przypadłość" cieszyć się wolnością umysłu bez wpływu facebooka, twittera, blogów, grup, forów i innych, mniej lub bardziej zajmujących serwisów, donoszę, że długooczekiwana data nie mniej długooczekiwanej konferencji polskiej społeczności javowej Confitura 2011, pod silnym przewodnictwem grupy Warszawa JUG, odbędzie się 11. czerwca 2011. Organizatorzy wierzą, że nie będzie to kolidowało z żadnymi z Twoich planów i stawisz się dzielnie podjąć każde wyzwanie intelektualne podczas konferencji.

Z pewnych rzeczy, to z pewnością miejsce - Warszawa, wspomniany termin - 11.czerwca oraz...cóż, chyba mi się skończyły pewne rzeczy. Agendy jeszcze nie ma, bo plan zakładał jej ustalenie po zebraniu propozycji tematów, o czym niebawem. Więcej na stronie konferencji Confitura 2011.

Jako współorganizator będę robił wszystko^H^H^Hwiele, aby konferencja była największą pod względem możliwości wymiany doświadczeń (jej wielkość niech będzie liczona możliwościami zdobycia praktycznej wiedzy i pomysłami, a nie liczbą uczestników) i chciałbym, aby pojawiło się wiele osób nowych, niekoniecznie z doświadczeniem występowania publicznego. Niech Confitura będzie platformą nauki, a buława prelegenta dana będzie wizjonerom, a nie oratorom (oczywiście osoby łączące te cechy są bardziej niż mile widziane). Zapraszam do udziału w konferencji w roli uczestnika i/lub prelegenta, z naciskiem na tą drugą. Warto! W razie jakichkolwiek wątpliwości zaleca się kontakt ze mną. Sprawdziłem i działa.

Skoro o konferencjach to pojawię się jeszcze na 33rd Degree w Krakowie, w dniach 6-8.04, InfoShare 12-13.05 w Gdańsku oraz GeeCON w Krakowie, w dniach 11-14.05.

Na pierwszej dwóch - 33rd Degree oraz InfoShare - biorę udział jako prelegent z tematami dotyczącymi EJB 3.1, CDI oraz językiem funkcyjnym Clojure. Nie zamierzam wprowadzać w temat, a podzielić się znaleziskami, których część mogłem już przedstawić na tym i moim angielskojęzycznym blogu - http://blog.japila.pl. Znużyło mnie ciągłe wałkowanie tematu od zera, co ani mnie nie bawi (wręcz zaczyna nużyć), a wielu przyprawia o ból głowy musząc słuchać tego samego w nieznacznie zmienionej postaci. I tylko wieje nudą. Szanujmy swój czas, co zamierzam zastosować właśnie podczas wspomnianych konferencji.

Na 33rd Degree będę wyłącznie w piątek, 8.04 (z noclegiem w Krakowie przed i po), a na InfoShare 13.05 (prawdopodobnie z noclegiem do soboty). Piszę o tym, aby pozwolić sobie na przyjemność spotkania się z osobami, z którymi mógłbym przegadać to i owo, a z którymi nie dane mi było spotkać się do tej pory. Zwykle to właśnie dyskusje pozwalają na ugruntowanie wiedzy, a nie bierny udział w prezentacji i możliwość spotkania się wieczorem w pubie czy restauracji uważam za obowiązkowy.

Uważni mogli zauważyć, że terminy InfoShare oraz GeeCON pokrywają się. Dzięki uprzejmości organizatorów GeeCONa otrzymałem wejściówkę, więc łącząc przyjemne z pożytecznym na GeeCONie pojawię się 11-12.05, aby wieczorem udać się do Gdańska, w którym chciałbym spędzić czas do soboty. Nie będzie lekko opanować terminy i chęć zamienienia słowa z uczestnikami, ale nikt nie mówił, że powinno. Na projektach też nie jest lekko, a jednak mają coś magicznego, co nas do nich wciąż ciągnie.

I ostatnia sprawa, nie mniej ważna, o której zaplanowałem napisać - praca inżynierska mojego podopiecznego z praktyk studenckich w IBM - Marka Szpaka dotycząca "analizy połączenia CDI i OSGi (na przykładzie serwera aplikacyjnego GlassFish i IBM WebSphere Application Server) oraz zaprezentowania rozwiązania wolnego od konkretnego serwera aplikacyjnego."

Na temat samych praktyk można przeczytać chociażby na grupie GoldenLine Praktyki w IBM Polska, albo bezpośrednio u "producenta" - IBM Educational Student Internships i gorąco zachęcam do wzięcia w nich udziału. Nie stronię od nawet najbardziej opornych studentów, którym się jednak chce coś zrobić i na brak wrażeń nie można narzekać.

Marek nie tylko próbuje rozpracować możliwość budowania aplikacji korporacyjnych JEE6 z użyciem CDI i OSGi, o czym będzie można przeczytać w jego pracy, ale również organizuje prelekcję na ten temat na swojej uczelni - Uniwersytecie Zielonogórskim. Co mnie bardzo ucieszyło, zaprosił mnie nawet w roli współprelegenta (!) Opiekunem tematu jest pan dr inż. Andrzej Marciniak. Na chwilę obecną wiadomo jedynie co będzie przedstawione - CDI, OSGi i ich połączenie z GlassFishem i WASem, kto - Marek i Ja, a z terminem to jedynie "jeszcze w tym semestrze, to jest najpóźniej pod koniec maja/początek czerwca." Zainteresowanych już informuję, a dalsze informacje niebawem. Wszelkie sugestie mile widziane, czy to związane z terminem, czy też zakresem merytorycznym. Niech to będzie przyczułek do wymiany wiedzy, która mogłaby zaowocować jakimś ciekawym projektem OSS, a może i produktem komercyjnym (?)

Tym samym chciałbym oficjalnie podziękować Markowi i Uniwersytetowi Zielonogórskiemu w osobie p. dra inż. Andrzeja Marciniaka za umożliwienie mi zgłębienia tematu, co powinno przyczynić się do większego rozpoznania tematu po obu stronach, również z korzyścią dla czytelników tego bloga.

Pierwsza połowa 2011 zapowiada się baaardzo interesująco merytorycznie. Już wiem, że druga również, ale o tym jeszcze ciiiii. Czego lepszego mogłem sobie życzyć w 2011. Normalnie bajka!

27 listopada 2010

Wykład akademicki na PWSZ w Tarnowie - 29.11 od 9:30 do 18:00

5 komentarzy
W nadchodzący poniedziałek, 29.11 będę na Wydziale Informatyki Państwowej Wyższej Szkoły Zawodowej (PWSZ) w Tarnowie (ul. Eljasza Goldhammera) u Tomasza Potempy i jego studentów, z którym zorganizowaliśmy mój wykład dotyczący tematu Java i okolice. Głównymi odbiorcami mają być studenci 4 roku, którzy kończą semestr z końcem grudnia, aby w styczniu skupić się na pisaniu pracy inżynierskiej.

Jak to ze mną bywa przy tego typu otwartych tematach, pomysłów mam wiele i byłbym rad, o kilka wskazówek pod kątem możliwości czasowych i znaczenia rynkowego poszczególnych tematów. Celem nie jest przekazanie pełnego obrazu danego rozwiązania, ale raczej naszkicowanie możliwości, aby wybrać do dalszego rozpoznania to, co może być interesujące.

Mam do dyspozycji 2 bloki 5-godzinne (w sensie lekcyjnym nie zegarowym, czyli 45 minut). Można założyć, że w każdym bloku będzie to samo, ale to zależy od ogólnego zainteresowania uczestników oraz mojego przekonania o sensowności dalszego brnięcia w temat. Tym samym nie ma gwarancji, że drugi blok będzie odpowiadał merytorycznie pierwszemu.

Zaczynam o godzinie 9:30, aby zakończyć o 18:00 z 1-godzinną przerwą obiadową w okolicach 13:15. Okazuje się, że będzie okazja spotkać się z Tomkiem Łabuzem, którego można było poznać podczas konferencji Javarsovia 2010, podczas której prezentował temat "AOP, ThreadLocal i JPA".

Planuję przeprowadzić autorski cykl tematyczny, którego mottem byłoby "Od prostoty do większej prostoty, tj. w każdym kroku ukrywamy złożoność problemu". Nie planuję prezentować slajdów, a jedynie siedzieć przed komputerem, prezentując budowanie aplikacji i machając rekoma ze wstawkami krasomówczymi.

Konspekt

Środowiska programistyczne i uruchomieniowe, darmowe i komercyjne:
  • NetBeans IDE i Eclipse IDE
  • IBM Rational Application Developer 8 i IBM WebSphere Integration Developer 7
  • GlassFish i IBM WebSphere Application Server 8 
Klient bazodanowy - tradycyjne podłączenie do bazy danych z użyciem JDBC
  • Apache Derby (wbudowane)
  • MySQL
Hibernate - warstwa pośrednia między baza danych a aplikacja
  • ORM - zapytania bliższe programiście nie adminowi bazy danych
Hibernate + Spring Framework
  • zniesienie konieczności zarządzania bytami Hibernate
  • środowisko IoC/DI
Apache Maven - zarządzanie zależnościami projektowymi
  • zniesienie konieczności dbania o zależności poza ich deklarację
  • tworzenie projektu od zera
    • z linii poleceń
    • z IDE (NetBeans IDE)
Leiningen - Maven w Clojure
  • bez XML z językiem Clojure (wrócimy do niego niebawem)
GlassFish (w NetBeans IDE) i WAS 8 - serwer aplikacyjny JEE6 (z RAD8):
  • dostęp do bazy danych (zarządzanie transakcjami)
    • JPA
    • EJB31
  • servlet - obsługa HTTP
  • JSF - budowanie widoku
    • facelets
  • CDI
EJB 3.1
  • Apache OpenEJB
  • Serwer aplikacyjny - GlassFish i WAS8
OSGi - modularność
  • podział projektu na moduły w Apache Maven był podziałem funkcjonalnym (jak OSGi)
  • samodzielna aplikacja
Clojure - język funkcyjny
  • dynamiczne tworzenie aplikacji okienkowej
Service Component Architecture (SCA) i procesy BPEL (WID/WPS)
  • odseparowanie kontraktu (interfejsu) od implementacji
  • odseparowanie szczegółów komunikacyjnych od implementacji
Wyjeżdżam z Tarnowa dopiero we wtorek, więc jeśli ktoś reflektuje na spotkanie, proszę o kontakt.

18 listopada 2010

Praca inżynierska z JSF2? Może jednak CDI i OSGi?

4 komentarzy
Kilkakrotnie pytano mnie o tematy prac inżynierskich i magisterskich, a wtedy zaczyna się główkowanie, który byłby tym jedynym, interesującym. Kiedy wyszła Java EE 5 byłem zachwycony zmianami, podobnie z JEE6. Było też zainteresowanie OSGi i okolicami, teraz programowanie funkcyjne z Clojure, a w odwodzie kilka innych, mniej lub bardziej ciekawych zagadnień. Nawet dzisiaj zostałem poproszony o wyznaczenie tematów do przedstawienia studentom w ramach praktyk studenckich w IBM i w mgnieniu oka miałem 10 sztywno określonych i jeden otwarty, który rozpoczynał się od "Rozpoznanie wybranej funkcji* produktu z rodziny IBM WebSphere BPM". Współpraca ze studentami to niezwykle ciekawy i produktywny sposób na poznawanie nowego (człowieka i jego sposobu myślenia oraz samego tematu). Wszyscy zadowoleni.

Postanowiłem rzucić temat wyszukania czegoś ciekawego na bloga licząc, że ktoś ma pomysł w zakresie JavaServer Faces (JSF) 2.0, a boryka się z problemem braku czasu na jego dogłębne rozpoznanie w postaci pracy licencjackiej (to jakby nie patrzeć rok ślęczenia nad tematem!).

Autor ostatniej prośby napisał:

Czy istnieje możliwość nawiązania współpracy w zakresie mojej pracy inżynierskiej, naturalnie związanej z korporacyjną Javą. Chciałbym zrealizować temat nie tylko wartościowy merytorycznie ale i również interesujący z punktu widzenia programisty, wolałbym uniknąć pracy odtwórczej i skupić się na tym co mógłbym poprzez swoją pracę dyplomową wnieść od siebie. Jestem już po wstępnej rozmowie z moim promotorem, z którym rozważaliśmy możliwość podjęcia tematu związanego mniej lub bardziej z JSF 2.0. Wiem, że jesteś otwarty na różnorodne propozycje, dlatego po cichu liczę na email od Ciebie przesiąknięty entuzjazmem, który mnie nie opuszcza nawet na krok podczas rozważań nad tematem mojej pracy.

Na moją odpowiedź, raczej w tonie ostrożnej aprobaty, otrzymałem taką:

Dzięki za zainteresowanie moją propozycją, tak jak już wcześniej wspomniałem chciałbym poprzez swoją pracę dyplomową wnieść coś od siebie. Wykorzystanie JSF2 do zbudowania przykładowej aplikacji webowej jest ostatecznym rozwiązaniem, którego nawet nie chcę brać pod uwagę. Idealnym rozwiązaniem byłby temat oryginalny oraz interesujący.

W kwestii tematu właśnie liczyłbym na Twoją pomoc, z pewnością są zagadnienia związane z JSF2, którymi zainteresowany jesteś najbardziej. Wiedzę w tej dziedzinie masz nieporównywalnie większą niż moja, stąd zapewne mógłbyś zaproponować kilka interesujących pomysłów. Może istnieje jakieś komercyjne narzędzie (lub jego część), które czeka na swoją ogólnodostępną implementację? A może masz zupełnie inny pomysł na temat pracy?


I tutaj pojawiła się moja odpowiedź, już z wstępnym szkicem zakresu technologicznego pracy:

JSF2 jest ciekawe, ale coś mi mówi, że wiele tu już zrobiono i ciekawym mogłoby być użycie innej technologii tworzenia UI niż facelets czy JSP. Przyjrzałbym się jednak bardziej użyciu CDI w JSF i co do tej pory zrobiono. CDI jako rozwiązanie javowe weszło dopiero w JEE6, więc jest bardzo młode i pewnie wiele tutaj do zrobienia. Gdybym miał szukać ciekawego tematu właśnie koło CDI kręciłbym się, może w połączeniu z OSGi?! Właśnie CDI + OSGi wydaje się być nietrywialnym tematem dotykającym dwa rozwiązania. To byłoby cudo techniczne!

Uważacie, że JSF2, CDI i OSGi mogłoby być "produktywnym" stosem technologicznym? Co mógł(a)byś Ty zaproponować delikwentowi? Mnie zawsze intrygowało, czy dałoby się tak użyć JSF, aby zbudować aplikację desktopową? W końcu JSF dotyka warstwy widoku i aplikacje webowe są jedynie/aż implementacją referencyjną demonstrującą oferowane możliwości (albo ich brak) budowania niebagatelnego interfejsu użytkownika. Gdyby relacjonować JSF2, czy byłoby cokolwiek, co stanowiłoby dla Ciebie szczególnie ciekawe zagadnienie? Wszelkie propozycje będą uważnie rozpatrzone, a upublicznione mają niemałe szanse na realizację. Dla mnie będzie to stanowiło magnes do powrotu do Java EE 6, które zeszło na plan drugi po pojawieniu się Clojure, dla Ciebie zrealizowanie pomysłu cudzymi rękoma, a pytającemu zapewnią ciekawe spędzenie czasu przy pracy inżynierskiej. Wszyscy są do przodu!

[*] Dowiedziałem się dzisiaj, że nie ma liczby mnogiej od "funkcjonalność", a można mówić jedynie o funkcjach produktu (!)

25 marca 2010

OSGi Service Platform Release 4 Version 4.2 Enterprise Specification wydane, jak i moja prezentacja na 4Developers

1 komentarzy
Bodajże 2 dni temu drukowałem wybrane rozdziały z 4. szkicu dokumentu OSGi Service Platform Release 4 Version 4.2 Enterprise Specification, kiedy to Łukasz Dywicki napisał w komentarzu do W piątek 4Developers ze mną z Enterprise OSGi i in.:

Jacku masz dobre wyczucie panowie z OSGi Alliance sprezentowali Ci finalną wersję specyfikacji. :)

I faktycznie! Specyfikacja już jest, a mi zostało 2 dni, aby przedrzeć się przez chaszcze specyfikacji i rozeznać się w zmianach. Nie będzie to zbyt odkrywcze, kiedy napiszę, że wersja oznaczona jako Early Draft 4, nie należała do najlepszych pod względem treści i układu dokumentu, więc liczę, że chociażby w tym obszarze się poprawiło.

Sama specyfikacja jest lekkostrawna i czyta się ją niezwykle szybko. Nie sądzę, aby komukolwiek sprawiała trudność w zrozumieniu i zachęcam do jej lektury. Jutro (piątek) moje wystąpienie o niej i o kilku innych technologiach wokół, a już dzisiaj prezentacja slajdów!

Slajdy na piątkowe wystąpienie podczas 4Developers z tematem "Modele komponentowe SCA, OSGi, Distributed OSGi i OSGi Enterprise a Java EE" dostępne są jako JacekLaskowski-4Developers-Modele-SCA-OSGi-a-JavaEE-26.03.2010.pdf.

Proszę o uwagi odnośnie zawartości merytorycznej i tej niemerytorycznej, m.in. w postaci szaty graficznej. Każda uwaga zostanie rozpatrzona (niekoniecznie pozytywnie :)). Planuję się nimi posłużyć do nagrania screencastu wprowadzającego w temat, a przynajmniej podcastu, więc proszę, bardzo proszę o chociażby kilka. Aktywność zostanie wynagrodzona lepszą zawartością.

22 marca 2010

W piątek 4Developers ze mną z Enterprise OSGi i in.

7 komentarzy
W nadchodzący piątek, 26. marca w Poznaniu odbędzie się konferencja 4Developers, w której biorę udział w roli prelegenta z tematem Modele komponentowe SCA, OSGi, Distributed OSGi i OSGi Enterprise a Java EE.

Zabrałem się za odświeżenie specyfikacji, bo ostatnimi czasy cały zaaferowany byłem IBM WebSphere ILOG JRules 7.0.2, czego upust dałem w serii wpisów na...innym blogu (!) Na razie bez wielkich fanfar wszedłem na dobre w BRMS i rozpoznaję. Mam wrażenie, że jakkolwiek temat potrzebny i użyteczny, to jego rozpoznanie nie jest zbyt imponujące w Sieci. Na pewno nie w kontekście nowicjuszy BRMSowych takich, jak ja. O tym jednak później. Mam pewne plany w kontekście tego tematu i po 2-tygodniowym rozpoznawaniu, zawieszam go na ten tydzień, do piątku.

Dzisiaj na warsztat wziąłem specyfikację OSGi Service Platform Release 4, Version 4.2 – Enterprise Early Draft 4 (Revision 3) z 3 listopada 2009, której zadaniem jest zdefiniowanie pojęcia Enterprise OSGi. Znajdziemy w niej ustandaryzowanie czegoś, co wielu mogło doświadczyć w Spring Dynamic Modules for OSGi(tm) Service Platforms tyle, że w kontekście Java EE 5 i wyżej, a nie tylko (?) Spring Framework. Niektórzy również mogli zakosztować Enterprise OSGi przez wykorzystanie możliwości PAX - The OSGi station at OPS4J. Jak widać wiele możliwości, a celem grupy OSGi Enterprise Expert Group (EEG) jest ustandaryzowanie łączenia OSGi i Java EE na bazie ich doświadczeń ku uciesze nas wszystkich. Nic dodać, nic ująć. Wielu próbowało i wielu się udało, ale również wielu brakowało specyfikacji. Ze wspomnianym dokumentem i kilkoma innymi z półki standaryzacyjnej OSGi ma być inaczej.

OSGi 4.2 to przełomowa chwila w dziejach OSGi. Po pierwsze (ale nie w sensie znaczenia, a raczej przychodzenia mi do głowy), definiuje Blueprint Service z implementacją referencyjną w postaci Spring-DM. Po drugie (patrz uwaga w nawiasie wcześniejszym), w szeregach OSGi pojawia się również pojęcie Distributed OSGi, dla którego referencyjną implementacją jest Apache CXF, a teraz Enterprise OSGi. Dodając do tego znany nam świat Java EE i Service Component Architecture (SCA) i można się nieźle napocić, aby to wszystko uchwycić w dobrym świetle i zrozumieć sens tych działań. Właśnie to jest celem mojej prezentacji - przedstawić wymienione modele komponentowe mające w zamyśle uprościć tworzenie aplikacji korporacyjnych, rozproszonych, modularnych, transakcyjnych, bezpiecznych i co tam jeszcze może przyjść nam do głowy, aby ostatecznie sprowokować dyskusję, której echa powinny rozbrzmiewać jeszcze po konferencji. 45 minut to niewiele, więc nie mam złudzeń, że niewiele powiem, ale celem nie jest, aby mówić, ale powiedzieć i słuchać. Zapraszam!

p.s. A czego Ty oczekujesz podczas prezentacji? Kodu w 45 minut raczej nie? Pewnie wycinków. Demo? Być może, ale każdy wie, jak wygląda aplikacja webowa, więc też raczej nie. Pewnie wad i zalet? Zamieniam się w słuch...

16 lutego 2010

Z Pro JPA 2: zapytania natywne w SQL vs JP QL i peany nt. WAS V7

7 komentarzy
Lektura książki Pro JPA 2: Mastering the Java Persistence API z Apress trwa i nie przestaje mnie zdumiewać. Może nawet nie chodzi o nią samą, ale o to, co ma JPA2, co sprawia, że to właśnie sama specyfikacja mnie tak zdumiewa. Niektóre rzeczy były już w JPA1, więc tym bardziej lektura Pro JPA2 sprawia mi tyle przyjemności, bo co strona, to coś nowego. Pisałem, że mam w zwyczaju oznaczać sekcje książki do dogłębniejszego zbadania i kiedy zwykle w książkach jest kilka akapitów per rozdział, tak w Pro JPA2 są to prawie całe strony (!) "Prawie robi różnicę", ale jak by tego nie wartościować, materiału do przetrawienia jest cała masa.

Kiedy to piszę, zaczynam zastanawiać się, czy mógłbym tę książkę polecić adeptom JPA. Książka zakwalifikowana jest dla średniozaawansowanych - User level: Intermediate. Z jednej strony jest w niej wszystko, co poleciłbym początkującym, ale z drugiej jest tego tyle, że czytanie specyfikacji byłoby łatwiejsze - nie ma tam tylu dywagacji. Owe dywagacje sprawiają, że książka należy do obowiązkowych lektur każdego programisty JEE i nie ma co jej porównywać ze specyfikacją, ale jeśli mi rozdział (około 30-40 stron) zajmuje 3-4 dni, aby całość przetrawić, to jak tu polecić ją początkującym?! Serca nie mam?!

Jestem przy rozdziale 11. "Advanced Topics" (strona 333) i mam wrażenie, że czytam ją całe wieki. Z jednej strony, ciągnie mnie do niej, aby poznać więcej, z drugiej zaczynam powątpiewać w sens tak kurczowego się jej trzymania i dobrnięcia do końca. Nie będę ukrywał, że mnie trochę zmęczyła. Coś mi mówi, że gdyby była podzielona na dwie części, byłoby ją przyjemniej czytać. Przypomina mi "Wprowadzenie do algorytmów" Cormena i in., gdzie można znaleźć wszystko o algorytmach i faktycznie poleca się ją początkującym, ale przebrnięcie przez nią zabiera wieki. Fajnie, że można wszystko znaleźć w jednym miejscu, ale nawet najbardziej wytrwali padają w połowie i tylko zdrowy rozsądek podpowiada, że po zakończeniu satysfakcja gwarantowana. Wiedzy po pachy i aż by się chciało przeskoczyć kilka stron, aby mieć to za sobą.

Możnaby zapytać, czy warto tak się katować czytaniem, skoro czytanie powinno sprawiać przyjemność, a z moich słów można wyczytać ból i cierpienie. Możnaby to porównać do wyjścia na siłownię, bieżnię, wiosła, basen w wydaniu zaawansowanym. Wiemy, że będzie bolało i ma boleć, bo bez tego nie będzie wyników. Podobnie jest z Pro JPA 2 (i było z Cormenem) - bolało, ale ostatecznie wiedza była ponadprzeciętną i nawet, jeśli wszystkiego się nie spamiętało, to wiedza, że tam to jest nie raz uratowała tyłek. Bolało i pewnie nie raz jeszcze zaboli, ale lepsze to, kiedy chcemy, niż później podczas projektów, których jedynym rezultatem i tak jest zatonięcie, tyle że okupione większymi stratami i ślęczeniem po nocach (czego nikomu nie życzę).

Wszedłem w temat zaawansowanego JPA, w świat zapytań natywnych w SQL. W JP QL naszym modelem jest model obiektowy, a w SQL model relacyjny (czy jak to ostatnio ujął Michał M. na spotkaniu Warszawa JUG - tabelkowy). Wybór należy do piszącego zapytanie, do czego mu bliżej - obiekty czy tabelki. Co mnie jednak dzisiaj niezwykle przyjemnie zaskoczyło, to fakt, że bez względu na wybór języka zapytań, programista i tak korzysta z tych samych obiektów - wciąż mamy javax.persistence.Query lub wprowadzone w JPA2 - javax.persistence.TypedQuery (!) Czyż to nie jest wspaniałe w tej specyfikacji, że bez względu na język SQL vs JP QL zmiana w wielu przypadkach odbywa się bez zmiany kodu?! Kiedy dodam do tego, że wprowadzenie zapytań nazwanych (mianowanych?, ang. named queries) umożliwia nadpisywanie ich przez deskryptor persistence.xml, wtedy można do zespołu wdrożyć gościa, którego zadaniem będzie optymalizowanie zapytań. Pasuje mu pisać w SQL, niech będzie, woli podciągnąć się z technologii JEE, wchodzi w JP QL. Najważniejsze, że nie trzeba schodzić na poziom JDBC, aby tworzyć wysokowydajną obsługę danych w bazie. Programiści nie zmieniają swoich konstrukcji programistycznych i prą do przodu, a ów człowiek od zapytań, aka człowiek-pytajnik, optymalizuje zapytania w cieple domowego kominka. Niby oczywiste, ale dla mnie niezwykle odświeżające. Kiedy dodam, że wynik zapytania, to wciąż encje zarządzane przez kontekst utrwalania, wtedy świat staje się ułożony. Pamiętajmy jednak, aby zapytanie SQL pobierało całość danych z bazy danych, bo w przeciwnym wypadku, część danych nie spłynie do encji i podczas zatwierdzenia transakcji, albo przy javax.persistence.EntityManager.flush() dane zostaną wyczyszczone (zamazane pustymi wpisami). Zapewnie nie byłoby to czymś, czym chcielibyśmy się pochwalić klientowi ;-)

Chciałoby się popróbować z JPA2 i w zasadzie każdy może. JPA2 jest częścią JEE6, ale może żyć i bez niej. Jak to miało miejsce w JPA1, tak i w JPA2, uruchomienie w samodzielnych aplikacjach czy wręcz środowiskach zubożonych, np. w wersji wcześniejszej JEE5, jest jak najbardziej możliwe i wspierane specyfikacyjnie. Bodajże wczoraj czytałem zajawkę o wsparciu JPA2 przez Hibernate 3.5 CR1, więc pasjonaci Hibernate mają możliwość, a Ci spoza jego strefy wpływów mają do wyboru referencyjną implementację JPA2 - EclipseLink, albo nieodstającego od peletonu Apache OpenJPA. Zdaje się, że Hibernate, który miał niebagatelny wpływ na specyfikację JPA, zaczyna oddawać pola konkurencji. Mamy wybór, a to jest najważniejsze i w sumie (początkowo) nie ma znaczenia, co działa pod spodem.

Ostatnie tygodnie spędziłem nad redbookiem (książki o technologiach IBM) dotyczącym IBM WebSphere Application Server V7 Feature Pack for Service Component Architecture (w skrócie SCA FeP). Zajmowałem się częścią administracyjną, która jest niezwykle prosta, zakładając znajomość administacji IBM WebSphere Application Server V7 samą w sobie. Największym wyzwaniem było stworzenie bogatej technologicznie aplikacji SCA, ale kiedy okazało się, że wraz z SCA FeP przychodzi wiele przykładów, temat był do obsłużenia w ciągu tygodnia, dwóch (niestety, jak to zwykle bywa, sam rozruch trwał prawie 2 miesiące - czas Nowego Roku nie sprzyjał rozpoznaniu terenu).

Jeśli ktokolwiek parał się z SCA, to wie, że jedną z darmowych implementacji jest Apache Tuscany. I SCA FeP jest po prostu opakowaniem Tuscany w odpowiednie rozszerzenia WASowe. Podobnie było z EJB3 czy Web Services z JEE5 dla WAS 6.1. Było, ale kto tego używał? Na moje nieszczęście niewielu. Niestety, ale produkty stosowe, np. IBM WebSphere Process Server V6.2 nie wspierały tych rozszerzeń, więc w produkcyjnych środowiskach, gdzie królowało SCA i WS-BPEL z WPSem, o JEE5 można było zapomnieć chyba, że przez wykonywanie zdalnych usług Web Services, ale to zawsze można.

IBM WebSphereNiezwykłem do wychwalania produktów mojego pracodawcy obawiając się oskarżeń, że jest to spowodowane głównie, gdzie pracuję, a nie zaletom technologicznym i jakoś tak trwało, że ja swoje, a IBM swoje - technologicznie, oczywiście. Z pewnością na moją decyzję miała również wpływ cena, która zwykle w naszych (=moich i czytelników mojego bloga) rozwiązaniach oscylowała głównie wokół bezwzględnego zera, ze względu na użycie produktów darmowych, otwartoźródłowych. Kolejnym powodem, może nawet ważniejszym, było opóźnienie technologiczne w porównaniu z darmowymi rozwiązaniami. Kiedy królowało JEE5 najnowsze wydanie IBM WebSphere Application Server V6.1 to wciąż jedynie (?) J2EE 1.4 z rozszerzeniami do EJB3 i Web Services. Dobrze, że WAS 6.1 to OSGi i dał tym samym możliwość zabawy z nowościami JEE5 przez rozszerzenia zwane Feature Packs. Zbierając to wszystko, niewiele można było u mnie znaleźć o produktach z rodziny IBM WebSphere mimo, że duża część mojego czasu była konsumowana właśnie przez nie.

I tak trwałem w tym stanie zawieszenia między rozwiązaniami OSS, a IBM, aż do grudnia 2009, kiedy pojawiły się produkty na bazie WASv7. Najnowsze wydanie WAS V7 zmienia diametralnie oblicze rynku rozwiązań JEE. W końcu mam(y) wsparcie JEE5 z JSE6 i OSGi pod spodem. To się musi podobać, szczęśliwcom, których firmy weszły w tą wersję. Nie ma wciąż wielu produktów realizujących JEE6, więc sprawa nabrała rumieńców i moloch typu IBM w końcu dotrał do punktu, w którym WAS V7 wybroni się technologicznie z każdego przetargu. W końcu! Sprzedawcom na pewno zrobiło się lepiej/łatwiej.

Jeśli ktokolwiek zadaje sobie pytanie, po co to piszę i czy ma to jakikolwiek związek z JPA2, albo innymi specyfikacjami wokół JEE, to śpieszę donieść, że pojawiły się dwa otwarte programy IBM WebSphere Application Server V7 Feature Pack for OSGi Applications and Java Persistence API (JPA) 2.0 Open Beta. Z nimi, pod płaszczykiem nauki WAS V7 możemy poznawać nowości JEE6 i OSGi Enterprise z wykorzystaniem Apache OpenJPA 2 i Apache Aries. Czyż nasze administracyjno-programistyczne boje z WASem, nie wydają się być od razu przyjemniejsze? W końcu na coś się zda nasz trud i pot. Jeszcze nie tak dawno, zapisałem się do grupy Apache Aries, aby śledzić poczynania w kontekście korporacyjnego OSGi, gdzie łączy się JEE i OSGi w spójną całość, a tu IBM wyjeżdża z możliwością uruchomienia obu na WAS V7. Niezwykłem wychwalać WASa, bo do wersji 6.1, był po prostu znośny, gdzie moja nauka specyfikacji, to zawsze był krok przez nim. Teraz, z WAS V7, sprawa w końcu przybrała inny obrót - teraz ja muszę nadgonić, bo mam go z przodu. Biorąc pod uwagę inne zalety WAS V7, mogę z czystym sumieniem polecić go jako ten serwer aplikacyjny do rozwiązań komercyjnych. Po 4 latach pracy w IBMie, w końcu mogę odetchnąć, że ja też już mogę bawić się najnowszymi zabawkami i jeszcze mi za to płacą! I to jest w tym wszystkim dobre. Jeszcze tylko niech IBM WebSphere Process Server podskoczy do SCA 1.0 i będzie naprawdę cacy. Na razie ni widu, ni słychu.

A czy Wam też płacą za przyjemności w pracy, czy się wciąż katujecie niszowymi rozwiązaniami?! Wytrwałości. I Wam się też, kiedyś powiedzie! ;-)

p.s. Ci, którzy dobrnęli do końca, mogą odetchnąć i z czystym sumieniem oddać swój głos na Notatnik w konkursie Bloger 2009 Roku. Będzie tego więcej.