W sobotę odbyło się w Krakowie 4developers. Konferencja jak wiele innych. Tyko trochę większa. Cztery panele poświęcone javie, .NETowi, językom dynamicznym i managmentowi. Każdy panel to 7 wykładów cztery przed i trzy po lunchu, przy czym w ramach javy i .net panel „zaraz po” to były undergrundy. Po kolei jednak…
Po przybyciu zarejestrowaniu się, zapoznaniu z hostessami i zniszczeniu zapasów kawy i soków po wlokłem się na sesję prowadzoną przez Adama Biena. Temat obalanie mitów związanych z EJB3.1. Adam pokazał co tak naprawdę oznacza platforma EJB3.1, że mamy do czynienia z czymś, co jest lekkie, szybkie i piekielnie dobre (100% Szatana). Zacznijmy of tego, że w EJB3.1 zrezygnowano z deskryptorów wdrożenia na rzecz CoC (Convention Over ConfigurationW). Jeżeli nie musimy czegoś zmieniać to całą konfigurację można upchnąć w pięciu adnotacjach. Co ciekawe EJB3.1 uwalnia nas też od deskryptorów związanych z dostawcami kontenerów. Nie ma już jboss.xml i innych tego typu wytworów. Niby ujednolicenie specyfikacji ogranicza, ale ja tam wolę mniej xmla niż więcej. Kolejną ciekawostką jest wielkość biblioteki. Całe EJB3.1 zajmuje około 800kb i to jest nie API, ale implementacja. Można by się pokusić o ruszenie tego na jakimś porządniejszym smartphonie…Kolejną ciekawostką i obalanym mitem było testowanie. EJB3.1 można testować w bardzo łatwy sposób, a od teraz będziemy mieli możliwość wystartowania kontenera w ramach testów i to w jednej linijce! Generalnie Adam pokazał, że EJB3.1 warto się uczyć, poznawać i stosować jak tylko się ukarze…
Drugim wykładem jaki sobie zaserwowałem był Stefan Koopmanschap i jego refaktoryzacja kodu. Była to najsłabsza prezentacja, niestety. Stefan nie pokazał na żywo refaktoryzacji, a tylko wrzucił przykłady na slajdach. Nie za bardzo umiał się też wybronić w temacie czasu i osoby. Kto powinien refaktoryzować (właściciel kodu, każdy)? Kiedy powinien rozpocząć się refaktoring (tydzień z refaktoringiem, ciągły refaktoring, przesuwanie refaktoringu na kolejny realise)? Jak refaktoryzować kod (narzędzia, testy, integracja, skala)? Generalnie z bardzo fajnego tematu zrobiła się mała sieka.
Kolejny wykład w wykonaniu Corneliu Creanga dotyczył integracji Flex3 i Java EE. Pomijając reflektor, który oderwał się z sufitu (po słowach „pozbędziemy się problemu”) to cała prezentacja wypadła blado. Corneliu, mówił o rzeczach ciekawych, ale jako pracownik Adobe starał się sprzedać produkt, a nie powiedzieć co można uzyskać. Odniosłem wrażenie, że prezentacja jest dość młoda, bo była strasznie chaotyczna .
Ostatni wyklad przed obiadem należał do Paweła Bachara (Sun Campus Ambasador na AGH) i dotyczył SUN SPOT. W tym niepozornym urządząku kryje się całkiem duża moc. Akcelerometr, WiFi, czujnik ruchu i możliwość przylutowania wielu różnych portów (od RS232, przez USB do wyjścia wysokonapięciowego) dają razem naprawdę duże możliwości. Odstrasza cena – 4tyś PLN (650EUR). Cała prezentacja była jednym wielkim pokazem zabawek dla dużych (i bogatych) chłopców. Na mnie osobiście wrażenie zrobił sposób programowania Sun SPOTa. Urządzenie, które tradycyjnie programuje się w asemblerze tu jest programowane Javie i dzięki temu zapalenie diody nie zabiera set linijek kodu, ale jedną. Szkoda że Sun SPOT jest taki drogi…
Po obiedzie był Java Undergrund i wariackie tempo. Najpierw Adam bien zrobił nam kuku deployując w 5 minut aplikację EJB3.1, potem wykład z Domain Driven Development, JavaFX, Scala i na koniec IBM Jazz. łaaa… Ciężko było, ale się udało. Mnie zjadł stres i trochę namotałem o JavaFX, ale po sesji były pytania i już wiem na czym się skupić jak będę miał więcej czasu.
Po wariackim undergrundzie na scenie pojawił się Tomasz Skutnik z e-point SA z prezentacją „Wielojęzykowość w aplikacjach J2EE”. Tu zadanie skali killers:
Na serwerze mamy ustawienie kodowania pl_PL. Mamy program w Javie:

Listing 1. Program sprawdza wyrażenia regularne

public class App {
	public static void main(String[] args) {
		Pattern pattern = Pattern.compile("[a-z]*");
		Matcher matcher = pattern.matcher("żółty");
		Matcher matcher2 = pattern.matcher("łąka");
		System.out.println(matcher.matches());
		System.out.println(matcher2.matches());
	}
}

i jego odpowiednik w bashu:

Listing 2. Program sprawdza wyrażenia regularne

#!/bin/bash
echo żółty > file
echo łąka >> file
grep -E "[a-z]*" -f file

Wynik? Bardzo ciekawy… Generalnie wykład był pouczający i uczulił mnie na problemy związane z kodowaniem, formatem daty i czasu oraz tłumaczeniami.
Kolejny wykład na który pobiegłem dotyczył Scali. Ted Neward „Busy Java Developer’s Guide to Scala: Introduction” to była litania w stylu „Kompilator javac jest głupi, z przykładami, a scalac jest fajny, z przykładami”. Powiem szczerze, że wykład częściowo przespałem, ale zarówno początek jak i koniec oraz środek (który kontaktowałem medytacyjnie) był bardzo wesoły. Scala jest językiem dynamicznym i fullwypas obiektowym (tak jak Ruby) można więc robić w nim cuda. No i ma DSLa (język przypominający naturalny).
Ostatni wykład należał do Jacka Laskowskiego i jego zabawek w Grails. Było zabawnie, Jacek pokazał nam jak wygląda Grails, że, tradycyjnie już, nie działa. Oraz pożartował z nami o tym. W każdym bądź razie wykład w sumie udany i bez zgrzytów.

Podsumowując chciałem powiedzieć, że konferencja była nieźle przygotowana i choć zabrakło mi panelu poświęconego inżynierii oprogramowania to całość prezentowała się doskonale (nawet hostessy, a porównanie mamy z fotami z salonu samochodowego w Genewie).