poniedziałek, 11 października 2010

Wrażenia po Java Developers’ Day 2010 w Krakowie


Dzisiaj podzielę się z Wami moimi wrażeniami po konferencji Java Developers’ Day w Krakowie. Odbyła się ona w dniach 7-8 października 2010 na terenie Uniwersytetu Ekonomicznego w Krakowie. Była to już 5ta edycja tej konferencji i było co świętować (ale o tym później). Organizatorem była fundacja PROIDEA, która również organizuje 4Developers w Poznaniu. Przygotowana była jedna ścieżka wykładów i na drugi dzień była możliwość uczestniczenia w warsztatach (na które trzeba było się wcześniej zgłosić). Ale od początku…

Podróż do Krakowa rozpocząłem w czwartek rano, czyli w pierwszy dzień konferencji. Razem z Szymonem wyjechaliśmy samochodem z Wrocławia chwile po 6.00. Droga minęła całkiem szybko (dobrze że mamy autostrade) i przyjemnie. Chwilami mieliśmy okazję podziwiać wschód słońca, (o ile inne przeszkody terenowe nam to umożliwiały). Całkiem ładny widok, na który zawsze mi było ciężko wstać (bym chyba musiał się nie kłaść). Zdjęcie poniżej.



Do Grodu Kraka zajechaliśmy około 9. Zdążyliśmy więc na rejestrację i powitanie uczestników. Zaraz po 5cio minutowym przywitaniu zaczął sie pierwszy wykład: RESTful Java Billa Brukea z RedHat'a. Troszkę słabo było słychać, ale nie było tragicznie. Prelegent zachwalał zalety RESTowych interfejsów. Dzięki temu, że „http is everywere” w każdym języku programowania możemy dobrać się do tego interfejsu. Dzięki operacjom dostępnych w tym interfejsie: GET, POST, PUT, DELETE można łatwo napisać prostego CRUD’a. Bill również pokazywał w jaki sposób rozszerzyć ten interfejs, do bardziej skomplikowanych operacji. Ponadto dzięki temu, że są to adresy URI, administratorzy mogą łatwo zablokować / kontrolować konkretne odwołania. W Javie do pracy z RESTem Bill proponował JAX-RS znany inaczej jako JSR-311. Tam za pomocą adnotacji, mówi się która metoda ma być wywołana, gdy przyjdzie dane żądanie. Więcej można znaleźć w książce ostatnio wydanej przez prelegenta: RESTful Java with JAX-RS.

Po prezentacji była krótka przerwa, aby rozprostować nogi i coś się napić (soczku lub kawy oczywiście). Rozprostowanie nóg było konieczne, ponieważ trybuna na której siedziała widownia (ogółem wykłady odbywały się na sali gimnastycznej z rozkładaną trybuną), była niewygodna i było mało miejsca na nogi. Na kolejnych prezentacjach już starałem się siadać w pierwszych rzędach, gdzie były dostawione wygodne krzesełka i można było się spokojnie wyciągnąć. Dodatkowo uważam, że przerwy były za krótkie (5 minut). Wychodzenie z sali trwało trochę czasu i ledwo człowiek zdążył nalać sobie soczek i już musiał wracać. Rada na przyszłość: dłuższe przerwy (co najmniej 10 minut).

Dużym plusem było to, że wykłady się nie przeciągały, a jak już dochodziło do takiej sytuacji to były grzecznie, w kulturalny sposób przerywane przez organizatorów. Fajny był również monitor gdzieś na dole, który pokazywał prelegentowi czas. Wielką wagę przywiązuję do tego, aby się wpasowywać w wyznaczony czas podczas prezentacji. Wiem, że nie jest to łatwe, ale pewnymi ćwiczeniami można to osiągnąć. No i taki czasomierz jest wówczas bardzo pomocny, gdyż można coś skrócić, lub dodać do wystąpienia.

Kolejną prezentacją było wystąpienie Angeliki Langer: Programowanie Java w dobie procesorów wielordzeniowych. Wykład był po angielsku (zresztą jak poprzedni), tylko że tym razem prelegentka mówiła tak szybko jak O.S.T.R. podczas freestyle’u (kto miał okazję posłuchać na żywo Ostrego ten wie o co chodzi). Pani bardzo szybko przeskakiwała na kolejne slajdy (czasem nie było czasu aby dokładnie go przeczytać) i było one bardzo wypełnione tekstem. Był omawiany temat modelu pamięci w Javie i jak to ma się do pamięci fizycznej i przetwarzania wieloprocesorowego. Były również omawiane działanie słowa kluczowego volatile i niektórych aspektów z nim związanych. Ogółem brakowało mi jakiś konkretnych przykładów, części praktycznej prezentacji.

Podczas niektórych prezentacji można było w tle, gdzieś za ścianą w postaci kurtyny usłyszeć, odbijające się piłki do kosza, co przypominało, że jesteśmy w sali gimnastycznej. Na szczęście było to jeszcze do przeżycia i nie zagłuszało tak bardzo prelegentów.

Kolejną prezentacją było: Testowanie wydajnościowe aplikacji Java Enterprise Jarosława Błąd (nie wiem jak powinienem odmienić to nazwisko, sory). Prezentacja traktowała właściwie o wszystkim i o niczym. Prelegent opowiadał jak to należy przeprowadzać testy wydajnościowe, że najpierw trzeba zdefiniować cel (co chcemy zbadać i wynik jaki chcemy osiągnąć), później przygotować przypadki testowe i testować system pod różnym obciążeniem. Wiążą się z tym pewne problemy: rzadko kiedy mamy infrastrukturę testową, taką samą jak infrastruktura na produkcji, klient nie zezwala na czasowe wyłączenie usługi w celu testów itd. Maszyna która generuje ruch sieciowy i zapytania do usługi musi być osobną maszyną, a nie tą samą, na której to wszystko się odbywa. Problemem nie jest wygenerowanie ileś tam zapytań do serwera, problemem jest przyjęcie tych danych od usługi, dlatego maszyna testująca musi być „stosunkowo blisko” maszyny testowanej. Były również omawiane inne problemy i wąskie gardła testowania. Brakowało (znów) trochę praktyki, chociażby w wymienienia narzędzi z których można by korzystać. Dodatkowo dodam, że prelegent był przedstawicielem jednego ze sponsorów, firmy e-point.

Po prezentacji była godzinna przerwa obiadowa. Obiad był wliczony w cenę konferencji i był smaczny. Do wyboru były dwa rodzaje mięsa, ziemniaki, makaron i surówki. Było również stoisko wegetariańskie, dla chętnych. Oczywiście przez cały czas konferencji były dostępne kawa, herbata, soki i małe przekąski.

Po obiedzie była najlepsza (według mnie) prezentacja z całej konferencji. Ted Neward przedstawił Przewodnik po programowaniu funkcyjnym w Javie dla zapracowanego developera. Wielkim zaskoczeniem było używanie notatnika w celu tworzenia kodu na żywo, ręczne dopisywanie importów i kompilacja za pomocą javac. WOW! Ted pokazał w jaki sposób programując w Javie tworzyć kod który będzie posiadał cechy kodu funkcyjnego. Czyli stosowanie niemodyfikowalnych obiektów, metod (funkcji) filtrujących itd. Spodziewałem się, że Ted pokaże, że w Javie kod mu zajął 50 linijek, a za pomocą jakiegoś języka funkcyjnego można to zrobić w 5 linijek. Dla tego temat „…dla zapracowanego developera” został bardzo dobrze tutaj dobrany. Może na wykładzie nie było dużo pokazane, ale w jakim stylu! Brawo!

Po więcej na temat programowania funkcyjnego można było się zapisać na warsztat dnia drugiego. Kolega Szymon był na nim i był bardzo zadowolony. Ted bardzo skacze po różnych językach (w pierwszym dniu miał koszulkę z napisem „I love C#”) i bardzo dobrze się w nich orientuje. Warsztat był już na temat Scali, i pokazane było już więcej przykładów.

Kolejną prezentacją było: Flex z przodu, Java z tyłu: wieloekranowe Bogate Aplikacje Internetowe z wykorzystaniem technologii Adobe AIR i Flex Piotra Walczyszyna. Jest to pracownik firmy Adobe Systems Inc. A więc jednego ze sponsorów. Na jego prezentacji miałem okazje być już podczas 4Developers 2010, występował również na Javarsovii 2010 (tam mnie nie było) no i teraz. Generalnie wiedziałem już czym jest Flex i Adobe AIR. Wystąpienie było po angielsku (ktoś z widowni to zaproponował) i bardzo miło się go słuchało. Piotrek przedstawił aplikację komórkową, którą najpierw zrobił zdjęcie, wysłał je do usługi i na podstawie danych geolokalizacyjnych na komputerze, w przeglądarce można było zobaczyć miejsce zrobienia tego zdjęcia i samo zdjęcie. Ot taki bajer :) Zabrakło mi jednak przykładu jak aplikacja typu Flex ma się dogadać z Javą. Technologia ta jest już używana praktycznie, np. w Ministerstwie Finansów.

Kolejną prezentacją było wystąpienie gościa zagranicznego (kolejnego już) Lindy Rising: Odważne zmiany: jak realizować nowe pomysły. Linda bardzo często zadawała pytania do publiczności (choć ta może trochę słabo reagowała) i próbowała nawiązać z nią kontakt. Linda mówiła o racjonalnych i logicznych decyzjach w naszym życiu. Zadawała jednemu uczestnikowi pytania na temat jego małżeństwa. Na prezentacji tej można było się poczuć bardzo wyjątkowo, niemal jak w kościele na kazaniu, lub na wystąpieniu jakiegoś filozofa. Linda mówiła, że zmiany i rewolucje należy zaczynać od siebie i po prostu uczyć się nowych idei. Również dobre jedzenie (np. podczas spotkania w firmie) wpływa na lepsze myślenie. Ważne jest również mówienia słowa dziękuje, a że wystąpienie się trochę przedłużyło, to właśnie w tym momencie zostało powiedziane dziękuję od organizatorów i widowni :)

W tym momencie był to koniec wykładów, ale nie koniec pierwszego dania. Wraz z Szymonem udaliśmy się do holetu, aby się zameldować i chwile odpocząć. Mieliśmy blisko na miejsce, ale jazda w korku przez Kraków to jedna wielka udręka. A mówią, że to Wrocław jest zakorkowany…

Po chwili ogarnięcia ruszyliśmy na miasto. Nie byłem wcześniej w Krakowie i nie widziałem tutejszych zabytków. Co ciekawego zauważyłem to jak się pytało przechodniów o drogę, to każdy odpowiadał: „prosto, prosto”. Ja zawsze byłem przyzwyczajony do instrukcji w stylu: „to prosto, tam w lewo, na skrzyżowaniu w prawo, na rondzie prosto i potem znów w lewo…”. Fakt faktem można później zapomnieć co było na początku, ale przynajmniej widać, ze człowiek chce ci pomóc. A tu trzeba było co chwila powtarzać to samo pytanie w stylu: „Którędy na Wawel?”.

No właśnie Wawel. Trochę późno i ciemno już było i nie można było wejść. Ale w nocy całkiem ładnie wygląda. Potem jeszcze chwilę pokręciliśmy się po rynku / sukiennicach i drugie co zauważyłem w Krakowie to obecność dużej liczby „naganiaczy”. Nie wiem czy to odpowiedni termin, ale chodzi mi o ludzi którzy zapraszają do konkretnych klubów, oferując przy tym darmowego drinka, lub coś tam innego. We Wrocławiu nie ma aż tak dużo „naganiaczy”. Jako że było zimno, skorzystaliśmy z jednej z takich ofert i posiedzieliśmy trochę w ciepłym miejscu.

Później o 21.00 miała być impreza konferencyjna w klubie pauza. Udaliśmy się więc tam w wyznaczonym czasie. Na wejściu przywitały nas hostessy z konferencji i kielonek czerwonego kamikadze i talon na shot’a lub piwko :) Klub jest umieszczony w piwnicy, z minimalistycznym wystrojem (czytaj dużo tam czerwonej cegły), ale bardzo przyjemnie za to. Było również kilka konsoli Wii i PlayStation. Pograłem więc trochę w Need for Speed’a Shift i potańczyłem na macie (brakowało trochę dobrych bitów). Jako że były to 5te urodziny JDD był tort (ułożony z kieliszków wódki), który następnie został skonsumowany przez uczestników.

W drodze powrotnej do domu szukaliśmy jeszcze jakiegoś jedzenia. Głupio zrobiliśmy, że nie zjedliśmy kebabu na rynku, tylko szukaliśmy gdzieś dalej. Trafiło na telepizze, gdyż nic otwartego już nie było. Do hotelu doszliśmy na nogach (spacerek nocą) gdyż na autobus by trzeba było długo czekać.

Na drugi dzień konferencji zostaliśmy przywitani przez piękną panią pielęgniarkę, rozdającą Alka-Seltzer :)


Na szczęście nie był potrzebny. Oczywiście przez cały czas trwania konferencji, jak i imprezy integracyjnej towarzyszyły uczestnikom hostessy, pomagające w organizacji wydarzenia.

Pierwszym wykładem dnia drugiego było Apprenticeship - sposób na skuteczny rozwój zawodowy Łukasza Szydło. Jest on pracownikiem firmy Tieto Poland, a wiec kolejnego sponsora konferencji. Łukasz wspominał o modelu Modelu Dreyfusa i jeszcze paru innych. Wspomniał również o projekcie Agile Skills Project, który zebrał (prawie) wszystkie umiejętności, jakie powinien posiadać zwinny programista. Wspominał również o technikach jakie są stosowane u niego w firmie, w celu bycia bardziej "zwinnym". Wspomniał również o nadchodzącym CodeRetreat we Wrocławiu, którego jest współorganizatorem. Podczas konferencji rejestracja była jeszcze zamknięta, ruszyła jakoś w weekend, ale w poniedziałek już nie było miejsc.

Podczas drugiego dnia konferencji zorganizowano konkurs fotograficzny. Powieszono na ścianie zdjęcia z pierwszego dnia i imprezy. Celem konkursu było doklejanie komiksowych dymków do zdjęć i miały wygrać najśmieszniejsze. Rozwiązanie konkursu odbyło się na zakończenie konferencji.


Kolejnym wykładem było Aplikacje typu Comet z Lift w 15 min Łukasza Kuczera. Na prośbę publiczności było po angielsku, ale w tym wypadku wolałbym po Polsku. Tu było trochę przykładów kodu na slajdach, ale były one pisane małą czcionką i były duże odstępy między poszczególnymi linijkami. Kod był przez to nieczytelny i sam prelegent musiał patrzyć na swój laptop aby wiedzieć co tam jest napisane. Był opisywany model komunikacji aplikacji pisanych za pomocą Comet i porównywany z AJAX’em i typowym odpytywaniem serwera. Był również slajd wyjaśniający pochodzenie nazwy Comet (od proszku do prania, bo AJAX już było :) ). Prelegent bardzo szybko napisał aplikację typu czat. Co mi siś spodobało to bardzo fajnie, bezpośrednio w kodzie Scali, można umieszczać sekwencje XML’owe.

Kolejnym wykładem, na który bardzo czekałem było: Jeden rozmiar nie dla wszystkich, czyli NoSQL w środowisku Java Jarosława Pałki. Byłem już na prezentacji o tym samym tytule podczas Javarsovi 2010. Tam Jarek miał przygotowane wystąpienie na temat Neo4J, CouchDB i BerkleyDB. Zdążył tam jedynie omówić tylko Neo4j więc czekałem na resztę. No i nie zawiodłem się. Prelegent postanowił omówić wszystkie 3 przygotowane bazy danych, pomijając przykładowy kod. Wykład był po Polsku (mimo prośby z widowni o język Angielski), co mnie bardzo ucieszyło.

Jarek zanim przeszedł do omówienia kolejnych baz danych podał pewne dane statystyczne, mówiące, że obecnie w Internecie publicznie dostępnych jest 988 eksabajtów (10^18) danych. Dla porównania wszystkie książki w wersji papierowej to "zaledwie" 42 eksabajty. Powoduje to oczywiście problemy ze szybkim dostępem do tych danych, wyszukiwania i prezentowania ich użytkownikowi. Ponadto przeciętny użytkownik Internetu teraz więcej do niego wysyła / wytwarza dane (serwisy społecznościowe, blogi, twittery itp.) niż ich ściąga. Również dostęp do Internetu z komórek rośnie o wiele szybciej niż dawniej rósł dostęp do Internetu kablowego.

No dobra przejdźmy do konkretów. Na pierwszy ogień poszło CouchDB. Jest to baza danych, która przechowuje dokumenty. Każdy dokument musi posiadać pole id i numer rewizji. Dokument może być dowolny i nie trzeba definiować jego schematu. Domyślnie używa się JSON’a do zapisywania dokumentów, ale może być to również obiekt który da się serializować. Pierwsza wersja CouchDB powstała w Erlangu i co ciekawe baza ta nie korzysta z reguł ACID! Jest tam optimistic locking, czyli jak będziemy chcieli zaktualizować dokument, a w międzyczasie udało się to komuś innemu, to po prostu dostaniemy zwrócony błąd od CouchDB. No i tą sytuację trzeba będzie jakoś obsłużyć. CouchDB jest więc bardzo „luzacką” bazą - wystarczy spojrzeć na logo.

CouchDB posiada jeszcze interfejs RESTful i można dopisać metody, odpowiedzialne za sposób wyświetlania dokumentów i można w ten sposób stworzyć prostego bloga. Co ciekawe, w bazie tej pliki nie są nadpisywane, tylko nowa zawartość jest dopisywana do dysku. Powoduje to szybki zapis danych, ale powoduje również to, że baza bardzo szybko się rozrasta i trzeba czasem przeprowadzić małą optymalizację.

Następnie Jarek mówił o Neo4J. Jest to baza do przechowywania grafów, napisana w Javie. Po więcej informacji odsyłam do wpisu Javarsovia 2010.

Na koniec przedstawiono jeszcze BerkleyDB, bazę przechowującą pary klucz wartość. Została ona jakiś czas temu wykupiona przez Oralce’a (czego to oni jeszcze nie kupili?). Ma ona bardzo szybką implementację indeksowania, wykorzystywaną w Oracle database i DB2. Początkowo była ona napisana w C, a później przepisana na Jave. Wspomaga ona operacje na kolekcjach i jeśli ograniczymy naszą aplikację od kilku prostych zapytań, możemy śmiało w projekcie wykorzystać BerkleyDB.

Pod koniec wykładu miałem jeszcze sposobność zadać kilka pytań odnośnie obiektowych baz danych (w tym db4o). Chodziło mi o przyszłość rozwiązań obiektowych baz danych i w jaki sposób przekonywać menadżerów projektów do stosowania innych niż relacyjne bazy danych. Jarek odpowiedział, że najlepiej to się pozbyć menadżerów (sam pracuje na takim stanowisku), lub dokładnie przedstawić, o ile zmniejszą się koszta zastosowania innego rozwiązania niż droga relacyjna baza danych. To że programistom będzie łatwiej, nie jest argumentem dla ludzi, którzy podejmują takie decyzje w firmach.

Kolejnym wykładem było Zaawansowane zarządzanie sesjami HTTP w Oracle Coherence Michała Kuratczyka z firmy Oracle (kolejny sponsor). Wykład był bardzo ogólny, po angielsku i brakowało mi przykładu. Ciężko się słuchało i się wyłączyłem z prelekcji.

Następnie była przerwa obiadowa. Obiad był podobny do tego co było podawane wczoraj i było równie smaczne. W trakcie przerwy obiadowej miałem możliwość jeszcze porozmawiania z Jarosławem Pałką na tematy, związane z NoSQL i inne.

Następnie był wykład sponsorowany: Wipro Technologies w Europie i możliwości rozwoju na polskim rynku, prowadzony przez Cristian Rosia i Michała Szota. Była to prezentacja firmy, która siedzibę ma m.in. w najdroższym budynku we Wrocławiu w Grunwaldzki Center. Otwierają oni obecnie nowy oddział w Warszawie i szukają pracowników. Bardzo nie spodobało mi się umieszczanie takich wykładów promujących firmę w czasie kiedy mogło być coś ciekawego.

Na koniec pozostał jeszcze wykład Dług techniczny Thomasa Sundberga. W swojej prezentacji odwoływał się do słów Lindy i mówił o podobnych rzeczach co Łukasz Szydło. Ja z tej prezentacji nie zapamiętałem niczego konkretnego, gdyż ciężko mi było się na niej skupić.

Po ostatnim wykładzie było jeszcze losowanie nagród dla uczestników i podziękowania dla sponsorów. Za raz po tym wraz z Szymonem udaliśmy się do samochodu i pojechaliśmy zobaczyć Wawel. Ty razem zdążyliśmy go pobieżnie zwiedzić (część miejsc była już niedostępna). Następnie udaliśmy się w drogę powrotną do Wrocławia.

Podczas konferencji miałem jeszcze okazję poznać i zamienić kilka zdań z Tomkiem Nurkiewiczem. Byłem na Javarsovi na Jego prezentacji, odnośnie Projektu Voldemort, który zalicza się do lubianych przeze mnie rozwiązań NoSQL. Prowadzi on również blog, na który zaglądam.

Podsumowując konferencję myślałem że będzie lepiej. Co do organizacji to nie mam większych zastrzeżeń. Można zawsze zorganizować lepsze miejsce na konferencję, no ale wiadomo że to zależy od funduszy i ceny dla uczestników, jaką muszą zapłacić. Merytorycznie to za dużo było ogólnych wykładów traktujących o „wszystkim i o niczym”. Dobrze jak podczas całej konferencji jest jeden taki wykład, a nie że podczas kolejnego wystąpienia słyszy się o tym samym lub pochodnym zagadnieniu. No i bardzo teoretyczne były wykłady, mało praktyki, brakowało przykładów. Fakt faktem była zorganizowana ścieżka warsztatowa, ale to nieznaczny, że na prelekcjach nie można pokazywać / tworzyć kodu.

2 komentarze: