DEVOXX 2009 - subiektywna relacja

W piątek zakończyła się kolejna edycja konferencji DEVOXX, największego bodaj europejskiego wydarzenia w świecie Javy. Ja tam byłem, w sesjach uczestniczyłem, belgijskie piwo piłem i takie oto obserwacje poczyniłem...

Dzień pierwszy

Keynotes

Pierwsze plenarne spotkanie (bite dwie sale kinowe po 900 osób każda), dotyczyło spraw ogólnych - Javy jako takiej i wyzwań przed nią stojących, Javy EE w wersji 6 i Glassfish v3 oraz nowych narzędzi firmy Adobe związanych z platformą Flex.

O czym mówił Oracle w pierwszej części keynotes - bij zabij - nie pamiętam... Może się jeszcze nie dobudziłem. Jedyne co pamiętam to prośbę o niezadawanie pytań dotyczących przejęcia Suna przez Oracle - w tym temacie obie firmy nabrały wody w usta. Ale za to potem...

... panowie z firmy Sun przedstawili Javę EE w wersji 6 i muszę przyznać, że coraz bardziej mi się ta platforma podoba. Wszystko zmierza w kierunku uproszczenia konfiguracji i zmniejszenia ilości śmieciowego kodu, którym obrastały aplikacje pisane zgodnie ze starszymi wersjami EE. Coraz więcej będzie można zrobić przy użyciu adnotacji, np. API REST, deskryptory będą opcjonalne. Bardzo dobry kierunek, szkoda, że tak długo trzeba było na te zmiany czekać.

Tym co na mnie osobiście zrobiło największe wrażenie było wystąpienie firmy Adobe, która przedstawiła narzędzie do tworzenia aplikacji Flex bezpośrednio z projektów... Photoshopa i Illustratora! Tak, tak. Grafik rysuje aplikację w PSie, następnie jest ona wczytywana przez narzędzie Adobe Flash Catalyst oraz Flash Builder i zamieniana na działający kod Flasha/Flexa (z formularzami włącznie). Pierwsza myśl, jaka mi przyszła do głowy po obejrzeniu demo to "bzdura, dobrych interfejsów użytkownika nie da się wyklikać", ale po dłuższym zastanowieniu się dochodzę do wniosku, że takie generowanie aplikacji może działać w przypadku Flasha, w którym wszystko pozycjonowane jest absolutnie. Chętnie sprawdzę to kiedyś w praktyce. A może ktoś z Was już się tym bawił i może powiedzieć coś więcej na ten temat?

Amazon Elastic Compute Cloud (EC2)

Wykład wprowadzający do EC2, przyznam szczerze, że oczekiwałem czegoś więcej. Autor skoncetrował się na przestawieniu zalet, jedną z których były niskie koszty. Nie wiem, może mój kalkulator jest zepsuty, ale ilekroć zaczynam liczyć ile kosztowałby odpalenie sporego systemu na EC2 to niemal zawsze wychodzi mi, że taniej jest hostować rzeczy w polskich, czy niemieckich serwerowniach (nawet na kupionym przez siebie sprzęcie - inwestycja może się zwrócić w czasie krótszym niż rok). Wynika to pewnie z tego, że prezenterzy pokazują proste kalkulacje systemów na podstawie wyłącznie cen instancji, nie wliczając kosztów dodatkowych związanych z dyskami EBS, monitorowaniem CloudWatchem, przestrzenią na S3, transferem, zapewnieniem redundancji i równomiernym rozłożeniem obciążenia i innych pochowanych po cennikach Amazona. Oczywiście zgadzam się autorem prezentacji, że zalet EC2 jest bardzo dużo, natomiast za pewną nierzetelność uważam uwypuklanie czynnika kosztowego, jako jednego z bardziej istotnych. Tak czy inaczej jako użytkownik EC2 od wielu miesięcy niewiele się z prezentacji dowiedziałem, wyszedłem więc z niej ze sporym niedosytem informacji.

Traditional Programming Models: Stone Knives and Bearskins in the Google Age

Jakby na osłodę udało mi się dostać na wykład Camerona Purdy (człowieka od Oracle Coherence), który mówił o problemach związanych z hostowaniem baz danych w środowisku cloudowym oraz o zmianie podejścia do pisania aplikacji, związanym z pojawieniem się wieloprocesorowych komputerów. Świetna prezentacja, bardzo konkretna, w skrócie można podsumować ją tak:
- cloudy nie są najlepszym środowiskiem dla baz danych, lepiej radzą sobie w nich rozwiązania typu data-grid,
- wąskie gardła w aplikacji tworzą się wtedy, gdy coś musi wykonywać się sekwencyjnie - należy więc do minimum ograniczyć takie miejsca, a pozostałe algorytmy podzielić tak, aby jak najwięcej wykonywać współbieżnie, wykorzystując fakt obecności wielu rdzeni w procesorze,
- bazy danych pracują lepiej w trybie wsadowym - lepiej raz zapytać o 10 elementów niż 10 razy o jeden,
- skalowanie dużych grafów jest bardzo trudne i właściwie robi się to głównie poprzez zamianę maszyny na większą (scale up).

To co usłyszeliśmy nie było może jakieś super odkrywcze, ale za to przekazane tak, że bezapelacyjnie było to najlepsze wystąpienie tego dnia.

Spring ActionScript

Prezentacja nie o Javie, ale już tak jakoś jest, że ActionScript i ogólnie Flex/AIR na dobre zagościły na Devoxxie. W skrócie wystąpienie dotyczyło implementacji kontenera IoC wzorowanego na Springu na platformie Flex i AIR. Dobrze wiedzieć, że coś takiego jest. Przy okazji dowiedziałem się, że istnieją również odpowiedniki wielu komponentów Apache Commons dla Action Scriptu. Było to dla mnie osobiście ciekawe wystąpienie, ponieważ od jakiegoś czasu dłubię sobie różne małe rzeczy w Action Script 3.0.

The Lift (Scala) Web Framework

Ech, czasem człowiek się nastawi na coś ciekawego, a tu kicha... Wiązałem spore nadzieje z tą prezentacją, chciałem dowiedzieć się coś więcej o Lift... Niestety autor chyba nie mógł się zdecydować dla kogo zrobić prezentację, czy dla początkujących, czy zaawansowanych - w rezultacie wyszło coś, co mi (początkującemu) nie rzuciło żadnego światła na Lift, a zaawansowani to chyba dość szybko uciekli z sali. Pudło i tyle, a szkoda, bo autor miał naprawdę dużą wiedzę, tylko zabrakło umiejętności jej przekazywania.

Dzień drugi

Keynotes

Gośćmi keynotes byli Ivar Jacobson oraz Robert C. Martin. Jacobson opowiadał o nowej inicjatywie zmierzającej do ujednonolicenia metodologii stosowanych przy wytwarzaniu oprogramowania. Zauważa, że wiele zespołów kieruje się modą przy wyborze stosowanej metodologii, zamiast dostosowywać narzędzia do potrzeb. Zaproponował wyspecyfikowanie rdzenia (ang. kernel, pozwolę sobie jednak to słowo przetłumaczyć jako rdzeń, jądro jakoś mi nie pasuje), czyli jeśli dobrze zrozumiałem zbioru podstawowych pojęć zdolnych opisać problem tworzenia oprogramowania w sposób prosty i zrozumiały dla każdego. Ów rdzeń powstałby na podstawie studium obecnie stosowanych metodologii (XP, Scrum, RUP, TDD...) i to na jego podstawie tworzyłoby się metodologię najlepiej przystosowaną do konkretnej organizacji. Brzmi dziwnie? Tak, brzmi bardzo dziwnie i muszę przyznać, że chwilami nie bardzo nadążałem za prowadzącym, mając wrażenie, że są to rozważania z wysokości 100 km nad ziemią. Dla zainteresowanych link: http://ivarblog.com/2009/05/29/in-need-of-a-theory-for-software-engineering/. Tymczasem ja sobie spokojnie poczekam na ten kernel - może coś się wtedy rozjaśni.

Rober C. Martin (Uncle Bob) z kolei, w bardzo emocjonalnym i zabawnym wystąpieniu, skonstatował, że w zasadzie odkąd zaczął pracę pod koniec lat 60. aż po dzień dzisiejszy właściwie niewiele się w naszej branży zmieniło. Programiści zgadzają się na nierealne terminy realizacji, aplikacje są niedotestowane. Skrytykował model pracy programistów wynajmowanych na godziny jako nieefektywny i przynoszący więcej szkody niż pożytku. Podczas prezentacji padło jedno ciekawe zdanie w kontekście TDD: "QA should find nothing!" - Uncle Bob uważa, że TDD jest w dzisiejszych czasach koniecznością i ten, kto go nie stosuje twierdząc, że wiąże się z większymi kosztami, delikatnie mówiąc, nie ma racji. Wspomniał również, o braku odpowiedzialności ze strony samych programistów, którzy godzą się na nierealne terminy i dziadostwo i zachęcał do bardziej asertywnej postawy w stosunku do wymagań "biznesu". Mottem każdego programisty powinna być zasada nadrzędna: "Do no harm!". Nie piszesz testów - krzywdzisz cały zespół, godzisz się na nierealny termin - krzywdzisz cały zespół. Bardzo dobre wystąpienie dające sporo do myślenia.

Infinispan and the future of data grids

Infinispan to project JBossa implementujący koncepcję data grid. W wielkim skrócie oferuje rozproszoną mapę, krórej wartości trzymane są na wielu serwerach i w wielu kopiach. Otrzymujemy strukturę o nieograniczonej wręcz pojemności, którą można skalować stopniowo (dołożenie kolejnego serwera powoduje automatyczne przekopiowanie porcji danych na nowy serwer). Infinispan oferuje również możliwość wykonania kodu użytkownika na węźle trzymającym dane (czasem/często jest to znacznie efektywniejsze niż kopiowanie danych na serwer przetwarzający dane i ponowne kopiowanie wyników na serwer danych - patrz map/reduce). Projekt nie posiada jeszcze stabilnej wersji, ale zapowiada się całkiem nieźle.

The not so dark art of Performance Tuning

Prowadzący na oczach publiczności namierzali wąskie gardła aplikacji przy użyciu Visual VM, JMetera i narzędzia jstack. Ciekawe wystąpienie, choć jak to zwykle bywa w prezentacjach na żywo - nie wszystko zadziałało tak, jak powinno. Autorzy zwrócili szczególną uwagę na analizę zrzutów wątków oraz analizę użycia procesora przy namierzaniu problemów z lockami.

Using BTrace and DTrace to Instrument and Anlyze Java Applications

Ach, dtrace - jedna z tych rzeczy, o której marzy wielu linuksowców patrząc zazdrośnie na solarisowe monitory. DTrace to narzędzie wstrzykujące kod w locie w jądro systemu operacyjnego. W solarisie jest 60.000 miejsc, w których można zainstalować swoją wtyczkę i analizować każdy niemal aspekt funkcjonowania systemu operacyjnego. BTrace z kolei to wstrzykiwanie bytecodu w celu analizy działającej aplikacji Java. Autor przedstawił na prostych przykładach działanie obu programów. Co najważniejsze BTrace umożliwia uruchomianie skryptów analizujących w działającej maszynie wirtualnej, bez konieczności jej zatrzymywania - idealna rzecz do analizy środowisk produkcyjnych, których nie można często restartować.

Android - resolution independence and high performance graphics

Prezentacja dotyczyła obsługi wielu rozdzielczości w systemie Android i ułatwień dla deweloperów aplikacji, jakie autorzy systemu wprowadzili, aby aplikacje tworzone na jeden konkretny telefon wyglądały co najmniej przyzwoicie na każdym innym. Autor zaprezentował też specjalny język do tworzenia grafik, znacznie wydajniejszy niż Java. W skrócie każdy Android posiadał będzie kompilator specjalnego języka (bazującego na C), w którym będzie "tworzyło się" grafiki bazujące na OpenGL. Podczas pierwszego użycia takie programy-grafiki będą kompilowane i gotowe go użytku. Karkołomne rozwiązanie, ale bardzo wydajne - autor zaprezentował na Motoroli Droid model galaktyki 3D (12000 gwiazd) - robiło wrażenie!

Dzień trzeci

Pomodoro Technique

Ostatni dzień rozpocząłem od obejrzenia wykładu poświęconego technice pomidora. Jest to technika zarządzania czasem, która wymusza pracę w 25-minutowych interwałach. Nakręca się otóż, najlepiej kuchenny w kształcie pomidora, czasomierz i pracuje w skupieniu nad jednym zagadnieniem przez 25 minut, po czym robi się obowiązkową przerwę 3 - 4 minuty. Po niej nakręca się znowu pomidora i pracuje się dalej (nad tym samym lub innym zagadnieniem). W ten sposób uzyskuje się rytm, dzięki któremu można pracować efektywniej. Cóż, mnie to nie przekonuje, ale wykład poprowadzony był ciekawie, z maskotkami, maskami i innymi cudami wiankami. Brawo dla autora za inwencję, czułem się co prawda trochę jak w przedszkolu, ale na pewno się nie nudziłem.

Towards A Universal VM

Ostatnia sesja poświęcona była JVM, a konkretnie planowanym zmianom, które ułatwią uruchamianie programów pisanych w językach innych niż Java właśnie na JVM. Jest to dość istotne, gdyż jak zauważył autor systematycznie spada zainteresowanie programistów językami statycznie typowanymi na rzecz języków dynamicznych typu Ruby, Python i bardziej obiektowo-funkcyjnych jak Scala. Programiści chcą cieszyć się wygodą języków dynamicznych, domknięciami, ale z drugiej strony nie chcą rezygnować z zalet JVM, w szczególności z dynamicznej kompilacji i optymalizacji kodu w locie. Dlatego właśnie twórcy JVM starają się uogólnić specyfikację maszyny wirtualnej, aby nie służyła ona tylko i wyłącznie do opalania znanego nam dziś bytecode'u Javy, a stała się uniwersalną maszyną wirtualną, z którą można zintegrować dowolny język programowania. Fascynująca, "niskopoziomowa" prezentacja, którą obejrzałem z prawdziwą przyjemnością.

To wszystko, co udało mi się zobaczyć. DEVOXX jest konferencją, na której odbywają się 4 sesje równoległe, co z jednej strony jest dobre, a z drugiej zmusza do dokonywania czasem trudnych wyborów. Niemniej jednak osobiście wróciłem z konferencji bardzo zadowolony.

Wiem, że na konferencji było trochę osób z Polski. Może zechcielibyście się również podzielić swoimi wrażeniami?