GeeCON - czy Twój szef wystarczająco dba o Ciebie?
Tytuł może zbyt kontrowersyjny ale w innym przypadku pewnie nie zwrócilibyście na niego uwagi
Jak zapewne większość z Was wie, wczoraj wystartowaliśmy z rejestracją na GeeCON - pierwszą w pełni międzynarodową konferencją poświęconą Javie w Polsce. Jest to dobry moment aby przybliżyć pokrótce powody dla których ją organizujemy oraz dlaczego poważnie powinieneś zastanowić się nad udziałem w GeeCON.
Po pierwsze, głównym powodem dla którego zabraliśmy się za organizację GeeCON była chęć umożliwienia Wam i sobie udziału w konferencji podczas której prelegentami będą ludzie z naprawdę topową wiedzą. Część z nich to znane osoby pracujące nad rozwojem technologii których używacie codziennie w pracy, część to ludzie pracujący nad ciekawymi projektami, którzy są chętni podzielić się swoim doświadczeniem. Staramy się ich zebrać w jednym miejscu i czasie, tak aby stworzyć możliwie najbardziej interesujące wydarzenie “javowe” w tym roku w Polsce.
Oczywiście, nie wszystkie tematy muszą wszystkim odpowiadać, możliwe też, że część z prezentacji, które znajdują się w agendzie byłaby Waszym zdaniem gorsza od tych, które musieliśmy odrzucić z braku wolnych slotów (aktualne wolne sloty w agendzie są przeznaczone dla prelegentów, którzy nie śpieszą się z podsyłaniem tematów i abstraktów).
Organizując GeeCON staramy się unikać tego czego sami nie lubimy, dlatego też ograniczyliśmy do absolutnego minimum wszystkie marketingowe aspekty prezentacji, a prelegenci sponsorów będą opowiadać o rozwiązaniach open source i technologiach ogólnie dostępnych, to jest jeden z naszych głównych celów.
Pomimo faktu, że wszyscy organizujemy konferencję za free (ot taki rodzaj wolontariatu), nie uda nam się doprowadzić do tego aby wejściówki były za darmo. Niestety są pewne koszty stałe, których pokrycie konieczne jest do realizacji pełni naszej wizji. Gdybyśmy z nich zrezygnowali to GeeCON nie byłby już GeeCONem w tej postaci jaką możecie obserwować (byłby krótszy i z udziałem mniejszej ilości zagranicznych prelegentów oraz z dużym udziałem prezentacji marketingowych).
Na całe szczęście udało nam się zminimalizować stawkę do poziomu, który część osób naprawdę zadowala (pozostałe zawsze będą narzekać, że jest zbyt drogo :P). 389 PLN to chyba stawka do przełknięcia dla wszystkich firm informatycznych w kraju i dla większości developerów (już nie narzekajcie jak to mało zarabiacie), w ten sposób prawdopodobnie odrzucamy główny argument Waszego PM’a, który pewnie zawsze mówi Wam, że wyjazd na zagraniczne konferencje to zbyt duży koszt
Faktycznie porównując z takimi konferencjami jak QCon, Jazoon czy też ApacheCon to GeeCON jest śmiesznie tani. Oczywiście wiadomo, że te konferencje są sporo większe od GeeCON ale z drugiej strony i tak możecie uczestniczyć w jednej ścieżce w jednej chwili co sprawia, że w przeliczeniu na godzinę prezentacji GeeCON to zdecydowanie mniejszy koszt. I o to właśnie wszystkim organizatorom chodziło, nie organizować imprezy dla zysku a tylko dlatego aby dostarczyć Wam godne uwagi wydarzenie “javowe”.
Jeśli już dotarliście do tego miejsca to mam nadzieję, że podzielicie się swoimi uwagami i spostrzeżeniami, zarówno jeśli chodzi o GeeCON, jak i inne rzeczy które mogą się Wam wydać istotne w kontekście tego wpisu. Na koniec jeszcze chciałem wszystkich zaprosić do udziału w GeeCON i nie tylko, bo już wielkimi krokami zbliża się kolejna Javarsovia i Java4People
Java Servlet 3.0 Specification czyli nadchodzą zmiany…
Ostatnio przeglądałem listę specyfikacji nad którymi trwają prace w ramach Java Community Process, w ten sposób natrafiłem na specyfikację oznaczoną JSR 315. Zapewne to oznaczenie kodowe większości z Was nic nie mówi, więc przytoczę tu pełną nazwę którą jest “Java Servlet 3.0 Specification”. Tak, dokładnie specyfikacja oznaczona jako JSR 315 dotyczy niczego innego jak właśnie nowej wersji servletów, oznaczonej numerem 3.0.
Nowa wersja nową wersją i różnie to wygląda w przypadku różnych technologii, jednak wydaje mi się, że zmiany które będą wprowadzone w ramach kolejnej wersji servletów są na tyle istotne, iż warto je tutaj przybliżyć.
Servlety 3.0 wniosą powiew świeżości, oto część zmian jakie nadchodzą:
- użycie adnotacji do konfiguracji servletów i filtrów
- “web fragments”, czyli dotychczasowa konfiguracja web.xml z wykorzystaniem wielu plików
- metody do dodawania servletów i filtrów
- asynchroniczne przetwarzanie
Opiszę teraz pokrótce poszczególne z nich:
Użycie adnotacji do konfiguracji servletów i filtrów
Tak naprawdę oprócz konfiguracji servletów i filtrów możemy również skonfigurować listenery.
Pakiet zawierający potrzebne adnotacje nosi nazwę javax.servlet.annotation.
Znajdują się w nim m.in. następujące adnotacje:
- @WebServlet
- @ServletFilter
- @WebServletContextListener
Oczywiście servlety, filtry jak i listenery muszą implementować/rozszerzać odpowiednie interfejsy/klasy (tak jak to było do tej pory), zespół pracujący nad tą specyfikacją planował wcześniej zrezygnować z konieczności rozszerzania klasy javax.servlet.http.HttpServlet na rzecz samego oznaczenia klasy servletu adnotacją @Servlet (obecnie jest @WebServlet)oraz dostarczenia metod przyjmujących jako parametr HttpServletRequest oraz HttpServletResponse. Oczywiście w takim przypadku konieczne byłyby dodatkowe adnotacje jak np. @GET czy też @POST w celu oznaczenia czy dana metoda zdefiniowana w ramach servletu obsługuje odpowiednią metodę HTTP. Wcześniejsze podejście umożliwiało w ten sposób zastosowanie zwykłych klas POJO jako klas servletów. Nie jestem do końca przekonany do takiego podejścia, nie to żebym był tradycjonalistą, jednak taka elastyczność wydaje mi się zbędna w tym przypadku w dodatku wprowadza pewien ład. Wracając jednak do adnotacji to będą one obok standardowego pliku web.xml drugim sposobem na definicję parametrów servletu, servlet w ten sposób oznaczony będzie automatycznie wykrywany (oczywiście o ile będzie się znajdował w classpath) przez kontener servletów zgodny ze specyfikacją Java Servlet 3.0. Warto tu nadmienić, iż wzorcową implementacją (RI - reference implementation) kontenera zgodnego z tą specyfikacją ma być Glassfish w wersji 3 (to chyba nikogo nie dziwi).
Aby obrazowo przedstawić zastosowanie adnotacji @WebServlet proponuję spojrzeć na poniższy przykład:
name=“sampleservlet”,
urlPatterns={“/sampleservlet”},
initParams={
@InitParam(name=“paramname”, value=“paramvalue”)
}
)
public class TestServlet extends javax.servlet.http.HttpServlet {
//tu kod servletu
}
Jak widzicie w powyższym przykładzie zdefiniowałem nazwę servletu “sampleservlet” oraz mapowanie “/sampleservlet“, podałem też przykładowy parametr który może zostać użyty przy inicjalizacji servletu. Tak zdefiniowany servlet musimy umieścić w zasięgu naszego classpath, kontener zgodny ze specyfikacją 3.0 servletów powinien sam wykryć taki servlet i go odpowiednio zainicjować. Oczywiście można wyłączyć obsługę automatycznego wykrywania servletów, filtrów czy też listenerów, jest to jednak całkiem wygodna opcja, którą z uwagi na bezpieczeństwo powinno się używać z rozwagą.
Web fragments
Pewnie nie raz spotykaliście się z przydługawymi plikami web.xml (tzw. deskryptory aplikacji), w których skonfigurowana była cała masa servletów, filtrów, listenerów.
Obsługa takiego pliku może niejednokrotnie przysporzyć problemów, dodatkowe problemy pojawiają się
gdy chcemy skonfigurować jakiś framework, którego jeszcze nie znamy.
Tutaj z pomocą przyjdzie nam JSR 315 i tzw. “web fragments”. Pewnie już domyślacie się do czego to służy? Otóż web fragments mają w zamiarze umożliwić dzielenie konfiguracji która znajduje się w jednym pliku konfiguracyjnym na wiele “fragmentów”, z których zostanie wczytana kompletna konfiguracja.
W praktyce oznacza to, iż we frameworkach takich jak np. Struts 2 a właściwie w ich archiwum JAR będzie można umieścić taki fragment deskryptora. Tak umieszczony fragment będzie mógł zostać wykryty przez kontener servletów i odpowiednio wykorzystany np. do domyślnej konfiguracji frameworku. Oczywiście będzie tu przyjęta odpowiednia konwencja, plik taki musi się nazywać web-fragment.xml, musi być też umieszczony w katalogu META-INF biblioteki.
Prawda, że przyjemne? A jak to jeszcze ułatwi życie
Oczywiście może się tutaj pojawić problem z bezpieczeństwem jak automatyczna inicjalizacja rzeczy o których moglibyśmy sobie nie zdawać sprawy.
Kolejna rzecz to:
Metody do dodawania servletów i filtrów
Tak, będziemy mogli użyć specjalnych metod, których przeznaczeniem będzie inicjalizacja np. servletu.
Będą to metody addServlet oraz addFilter.
Czas na ostatnią z wymienionych powyżej nowości (oczywiście znajdziecie tego więcej na stronie specyfikacji), a mianowicie:
Asynchroniczne przetwarzanie
To jedna z najważniejszych zmian w porównaniu do wersji 2.5. Znacie dobrze te sytuacje w których Wasz servlet musi wywołać wywołanie usługi sieciowej albo przeprowadzić jakąś inną operację zajmującą więcej czasu, w takie sytuacji klient wywołujący servlet musi czekać aż operacja zostanie wykonana. Właśnie w takim przypadku przydaje się wywołanie asynchroniczne, i tutaj okazuje się, że twórcy specyfikacji 3.0 servletów wprowadzają do niej asynchroniczne przetwarzanie. Ale jak to ma wyglądać w praktyce? Obecna wersja specyfikacji wprowadza pojęcie kontekstu wywołania asynchronicznego, reprezentowanego przez klasę AsyncContext zawiera on informacje o otrzymanym żądaniu i odpowiedzi. Oczywiście w celu użycia wywołania asynchronicznego na servlecie należy go odpowiednio skonfigurować, czyli ustawić jeden atrybut o nazwie supportAsync, tak skonfigurowany servlet (lub filtr) będzie mógł już służyć do obsługi wywołań asynchronicznych. Ponieważ po wykonaniu operacji przez servlet może się okazać konieczne wykonanie dodatkowych czynności, autorzy specyfikacji JSR 315 wprowadzają nowy rodzaj interfejsu listenera AsyncListener którego implementację należy dodać do requestu. Implementacja taka będzie posiadała co najmniej dwie metody o nazwach onComplete oraz onTimeout (zdefiniowane w ramach interfejsu), pierwsza zostanie wywołana w przypadku zakończenia przetwarzania requestu na czas, druga w przypadku gdy wystąpi timeout (wartość timeoutu w milisekundach podamy w parametrze servletu o nazwie asyncTimeout).
To wszystko w tym wpisie, więcej informacji na temat Java Servlet 3.0 Specification znajdziecie na stronie Java Community Process.
DWR czyli “Easy Ajax for Java”
Jeśli ktoś jeszcze jakimś cudem nie wie co to DWR (Direct Web Remoting) to ten wpis jest dla niego, ponieważ postaram się w nim szybko przedstawić co to jest i jak tego można używać
DWR to biblioteka która pozwala z poziomu JavaScript wywołać metody Java oraz vice versa.
W jaki sposób rozpocząć przygodę z DWR? Najprościej pobrać go ze strony i wykonać kilka kolejnych kroków opisanych w tym wpisie.
Krok 1 - dodanie konfiguracji DWR do web.xml.
Chcąc użyć DWR w naszej webowej aplikacji musimy ją najpierw skonfigurować. Na samym początku wprowadzimy ustawienia do naszego pliku web.xml. Dodajmy do niego ten fragment kodu:
<servlet-name>dwr</servlet-name>
<servlet-class>org.directwebremoting.spring.DwrSpringServlet</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>true</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>dwr</servlet-name>
<url-pattern>/dwr/*</url-pattern>
</servlet-mapping>
W ten sposób dodaliśmy serwlet DWR do naszej aplikacji. Serwlet ten odpowiada za generowanie plików JavaScript które będą wykorzystane w stronach JSP tworzonych w projekcie.
Krok 2 - Integracja DWR i Spring Framework.
Ponieważ Spring Framework jest szeroko stosowany w projektach opartych o platformę JEE stąd też DWR w łatwy sposób się z nim integruje. Wystarczy dodać do naszego projektu plik zawierający definicję beanów:
<beans xmlns=“http://www.springframework.org/schema/beans”
xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance”
xmlns:dwr=“http://www.directwebremoting.org/schema/spring-dwr”
xmlns:lang=“http://www.springframework.org/schema/lang”
xsi:schemaLocation=“http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://www.directwebremoting.org/schema/spring-dwr
http://www.directwebremoting.org/schema/spring-dwr-2.0.xsd”>
<dwr:configuration>
<dwr:convert class=“org.holewa.Sample” type=“bean”/>
</dwr:configuration>
<bean id=“dwrFacade” class=“org.holewa.DwrFacade”>
<dwr:remote javascript=“dwrFacade”>
<dwr:include method=“getData”/>
</dwr:remote>
</bean>
</beans>
W powyższym przykładzie zdefiniowaliśmy jeden bean o nazwie dwrFacade oraz udostępniliśmy dla DWR jedną jego metodę o nazwie getData, domyślnie z uwagi na względy bezpieczeństwa wszystkie metody nie są udostępnione.
Podobnie zresztą ma się sprawa z transfer object`ami - musimy dla nich ustawić konwersję czyli sprawić aby DWR mapował odpowiednie struktury danych z poziomu JavaScript na obiekty Java. W naszym przypadku transfer object Sample zawiera tylko jedną zmienną o nazwie parameter.
Krok 3 - dodanie plików JavaScript do naszych stron JSP.
Aby umożliwić wywołanie metod po stronie serwera należy dodać w stronach JSP taki oto fragment kodu:
<script type=‘text/javascript’ src=‘/dwr/engine.js’></script>
<script type=‘text/javascript’ src=‘/dwr/util.js’></script>
Pliki util.js i engine.js to pliki wchodzące w skład DWR, plik dwrFacade.js to plik który został wygenerowany przez serwlet i to właśnie dzięki funkcją które znajdują się w nim możemy wywołać metodę po stronie serwera.
Krok 4 - wywołanie metody po stronie serwera.
W celu wywołania metody po stronie serwera należy wywołać w przeglądarce następującą funkcję:
var to = {
parameter: param
};
dwrFacade.getData(to, function ( str ) {
dwr.util.byId(elementId).innerHTML = str;
});
}
Powyższy kod definiuje funkcję która jako parametry przyjmuje id elementu którego atrybutowi o nazwie innerHTML chcemy przypisać wartość zwróconą przez wywoływaną przez nas metodę getData. Metoda ta przyjmuje jeden parametr który jest obiektem zawierającym pole (atrybut) o nazwie parameter, podczas przesyłania będzie on przekształcony w obiekt Java dla którego wartości atrybutu parameter będzie równa wartości atrybutu parameter którą ustawiliśmy w JavaScript. Funkcja która zostanie wywołana gdy otrzymamy odpowiedź od serwera (pamiętajmy, że występują tu wywołania asynchroniczne dlatego też mamy do czynienia z callback`ami) jest przekazywana do funkcji dwrFacade.getGetData jako drugi parametr.
Jak widzicie zastosowanie DWR jest niezwykle proste - od jego konfiguracji do wywołania zrobiliśmy właściwie tylko cztery główne kroki
Pisząc ten wpis nie zauważyłem, że na j2ee.pl jest już pewnien opis DWR - dużo dłuższy więc go Wam gorąco polecam a siebie biję w pierś za duplikowanie tematu. ![]()
Sun SPOT`a mam i ja :)
Ostatnio otrzymałem przesyłkę z Sun Microsystems w której znajdował się … Sun SPOT (a w zasadzie to dwa Sun SPOT`y
) !!!
Co to takiego jest ? Może na początek fragment specyfikacji :
Hardware:
A Sun SPOT device is built by stacking a Sun SPOT processor board with a sensor board and battery.
Sun SPOT Processor Board
* 180 MHz 32 bit ARM920T core - 512K RAM/4M Flash
* 2.4 GHz IEEE 802.15.4 radio with integrated antenna
* USB interface
* 3.7V rechargeable 720 mAh lithium-ion battery
* 32 uA deep sleep mode
General Purpose Sensor Board
* 2G/6G 3-axis accelerometer
* Temperature sensor
* Light sensor
* 8 tri-color LEDs
* 6 analog inputs
* 2 momentary switches
* 5 general purpose I/O pins and 4 high current output pins
Software:
Squawk Virtual Machine
* Fully capable J2ME CLDC 1.1 Java VM with OS functionality
* VM executes directly out of flash memory
* Device drivers written in Java
* Automatic battery management
Jak widać jest to maszynka z procesorem 180Mhz, obsługująca sieć bezprzewodową, posiadająca czujnik temperatury i światła ![]()
Ale najważniejsze jest to, że jest w nim Java, tak takie małe urządzenie a zawiera JVM na pokładzie.
Sun SPOT`a można kupić tutaj, niestety kosztuje on… $550
Zadacie pewnie pytanie jakie ma możliwości ? Żeby się nie rozpisywać proponuję zaglądnąć tutaj. Oczywiście to tylko część zastosowań Sun SPOT`a, sam fakt, że posiada na pokładzie Javę , sieć bezprzewodową oraz czujniki sprawia, że w takim niepozornym urządzeniu drzemią ogromne możliwości.
A oto fotka moich Sun SPOT`ów :
Macie może jakieś ciekawe pomysły na jego wykorzystanie ?
Szczecin Java User Group
No i proszę, zaczyna się coś dziać w innych miastach niż tylko Warszawa, Wrocław, Poznań i oczywiście Kraków ![]()
Oto w Szczecinie pojawił się pomysł organizowania spotkań związanych z javą w ten sposób powstaje Szczecin Java User Group.
Za inicjatywę odpowiedzialny jest Leszek Gruchała, który jest najbardziej aktywną osobą w zespole tłumaczącym NetBeans. Jeśli chcecie uzyskać więcej informacji odnośnie tej inicjatywy to polecam Wam blog Leszka.
Struts 2, NetBeans 6 i GlassFish - część II
Jako, że w ostatni weekend dorwała mnie choroba i siedziałem cały czas w domu (czego bardzo żałuję, gdyż miałem okazję spotkać się z Wiktorem Gworkiem i pogadać przy piwku o sprawach “javowych” - sorry Wiktor
).
Na szczęście nie ma tego złego, co by na dobre nie wyszło
W ten sposób znalazłem czas aby wreszcie napisać kolejną część podręcznika dotyczącego tworzenia aplikacji Struts 2 z wykorzystaniem NetBeans 6 i GlassFish ![]()
Tym razem opisałem proste użycie Struts 2, EJB3 i Hibernate JPA. Ta część jest do pobrania tutaj.
Już wiem co będzie w następnej części
Przedstawię w niej dodanie walidacji danych zarówno client-side jak i server-side, poruszę też temat tworzenia własnych walidatorów
Aaa i zapomniałbym, cały czas jest to DRAFT, proszę o wszelkie uwagi/pytania. Na koniec (jak będą gotowe wszystkie części) uwzględnię wszelkie uwagi i zrobię z tego jeden dokument ![]()
JavaPolis 2007 - dzień czwarty
Kolejny dzień zaczął się dla mnie wykładem dotyczącym języka Scala prowadzonym przez Martina Oderskyego, nie będę się rozpisywał na temat języka gdyż więcej możecie poczytać na oficjalnej stronie, bądź też na blogu Wiktora Gworka. Wydaje mi się, iż jest to język warty poznania zwłaszcza, że mocno stara się go promować Josh Bloch, na JavaPolis słowo “Scala” było chyba najczęściej wypowiadanym przez niego, zarówno podczas wykładów jak i rozmów przy stoliku
Druga tego dnia prezentacja była właśnie prowadzona przez Josha, początkowym tematem prezentacji miał być “Effective Java Reloaded” ale ostatecznie Josh skupił się na problemie closures w javie. Prezentacja była bardzo interesująca, Josh mówił o zatracaniu się wspomnianego przez J. Goslinga “Feel of Java”, czyli prostoty języka, na rzecz jego usprawnień, interesujące były przykłady genericsów które pokazywały jak bardzo można utrudnić życie (samo FAQ dotyczące genericsów ma ponad 400 stron !!!).
Po Joshu i clousers przyszedł czas na JavaPosse, to była dopiero jazda !!! Już na początku prezentacja zapowiadała się ciekawie - goście z Atlassian rozdawali piwko
Ponieważ część ludzi z JavaPosse nie przyjechało do Antwerpii stąd brali oni udział w telekonferencji, momentami był totalny odjazd, była to zdecydowanie najostrzejsza prezentacja na JavaPolis. Ostatnim wykładem na który się wybrałem był “Web Beans”, specyfikacja przedstawiana przez Boba Lee mogła być interesująca, niestety zainteresowałem się tematem już wcześniej i nie wyniosłem z niej zbyt wiele
To tyle jeśli chodzi o wykłady, a po wykładach … no właśnie po wykładach planowałem brać udział w BOF`ach, niestety (a może stety) brałem udział tylko w jednym - spotkaniu liderów JUG`ów, po spotkaniu wybraliśmy się na piwko które trwało długo
Była to świetna okazja aby porozmawiać o community oraz wymienić zdania z innymi liderami, ponieważ w spotkaniu uczestniczyli również ludzie z Sun Microsystems to mogłem też porozmawiać o inicjatywach Suna w Polsce. A co dowiedziałem się podczas rozmowy ? Tego nie mogę powiedzieć
Dobra to tyle jeśli chodzi o wczorajszy dzień, nie będę się rozpisywał zbytnio z uwagi na fakt, iż siedzę jeszcze w hotelu a obiecałem Stephanowi, że pomogę mu przy sprzątaniu po JavaPolis…
JavaPolis 2007 - dzień trzeci
Wczoraj był trzeci dzień konferencji, po wtorkowej kolacji z liderami JUG`ów i prelegentami nie udało mi się wstać na otwarcie z udziałem Jamesa Goslinga, Bruca Eckela i Stephana Janssena. Mogę powiedzieć, że dzień zaczął mi się od wykładu Boba Lee z Google który opowiadał o frameworku swojego autorstwa - Guice, dziś również planuję wybrać się na jego prezentację dotyczącą Web Beans. Kolejna prezentacja na której byłem dotyczyła tworzenie efektów w swingu a prowadził ją nie kto inny jak sam Chet Haase, temat efektów w swingu interesował mnie już wcześniej, wiec nie miałem problemu z wyborem wykładu. Aplikacje pokazywane podczas prezentacji powalały swoim wyglądem, ale czy mogło być inaczej ? Przecież Chet i Romain to najlepsi na świecie specjaliści od upiększania swinga. Na koniec dodam, iż udało mi się nawet uzyskać autograf Cheta na jego książce którą napisał wspólnie z Romain`em Guy.
Po prezentacji Cheta przyszła kolej na “Practical JRuby on Rails” przedstawianą przez Ole Bini i Charlsa Nuttera, to była chyba najbardziej luźna prezentacja ze wszystkich na których bylem do tej pory. Widziałem po Oli, ze wczorajsza impreza nie zakończyła się wcześnie ![]()
Ostatnim z wykładów był “The future of computing”, był to panel dyskusyjny z udziałem Josha Blocha, Neala Gaftera, Martina Oderskiego i Jamesa Goslinga. Była to pełna drobnych docinek prezentacja, podczas której padły liczne, ciekawe stwierdzenia. Koniec wykładów to nie koniec dnia w JavaPolis, czekały mnie jeszcze spotkania BOF, brałem udział w dwóch, pierwszym dotyczącym produktów open source ze stajni Adobe, prezentacja ciekawa, wśród słuchaczy byli m.in. Ola Bini i Charls Nutter. Prowadził ją James Ward który jest Technology Evangelist w Adobe, James zachwalał Flexa do czasu … gdy nie zapytałem go o porównanie wydajności Flexa z Silverlight ![]()
Ponieważ bardzo dobrze znałem jego odpowiedź jeszcze przed zadaniem pytania, to przyznam szczerze, że była to moja prowokacja, takie małe zagranie aby sprawdzić jak będzie starał się wywinąć… Uśmiech jaki się pojawił na twarzy chłopaków od JRuby`ego w chwili gdy zadałem moje pytanie sprawił, że nie miałem wyrzutów sumienia z wprowadzenia Jamesa w dość nieciekawą sytuację, oczywiście odpowiedź była taka jak sie spodziewałem - przyznał wyższość Silverlight 2 ![]()
Drugi panel BOF dotyczył języka Groovy i był prowadzony przez Guillaume Laforge - twórcy języka Groovy, prezentacja ciekawa, zauważyłem na niej duży udział chłopaków z JetBrains. Czyżby szykowali jakieś mocne wsparcie dla Groovy w następnym IntelliJ IDEA ?
To był w zasadzie koniec dnia, wracając z Metropolis spotkałem niemieckiego developera Flexa, więc przez całą drogę rozmawialiśmy na temat poczynań Adobe ![]()
JavaPolis 2007 - dzień drugi
Ehhhhh to był ciężki dzień, od 8 rano do 1 w nocy byłem na nogach… Najpierw śniadanko w JavaPolis, później udział w pierwszej prezentacji tego dnia - “Thinking in Flex” z Brucem Eckelem i James`em Ward`em, wykład mógł się podobać, jednak dla mnie osobiście nie przyniósł nic nowego, wszystko co podczas prezentacji było powiedziane na temat Flex 2 wiedziałem już wcześniej… Jedno jest pewne, Bruce Eckel to idealny magnes przyciągający ludzi, podczas prezentacji odniosłem wrażenie, że Bruce jest jedynie narzędziem Adobe do przekonywania ludzi aby używali Flexa. Chyba jest to prawda, gdyż większość prezentacji była prowadzona przez Jamesa a Bruce miał jedynie swoje drobne “wstawki” (swoją drogą dziwię się trochę, że odpowiadała mu taka, moim zdaniem, drugoplanowa rola)
Jeśli chodzi o wybór kolejnego wykładu to muszę przyznać, iż miałem problem. Zastanawiałem się czy wybrać się na EJB3 i JPA prezentowanym przez Linde Demichiel i Kennetha Saksa, czy też uczestniczyć w prezentacji Jima Weavera o Java FX, mimo faktu, iż poznałem Jima dzień wcześniej i jest to naprawdę fajny gość, to jednak ostatecznie wygrały EJB3 i JPA…
Ostatnie dwie sesje w których uczestniczyłem dotyczyły platformy Jazz i odbywały się pod hasłem “Developing Software like a band plays Jazz”. Oczywiście prezentację miał nie kto inny jak sam Erich Gamma. O Jazz czytałem już kiedyś, jednak dopiero opowiadania Grześka Głowatego sprawiły, że tematem zainteresowałem się w większym stopniu, stąd też moja obecność na tym wykładzie… Zresztą nie tylko moja bowiem zauważyłem, że Erich przyciąga ludzi bardziej niż Bruce Eckel, a może to Jazz ich tak przyciąga ? W każdym razie podczas prezentacji ludzie siedzieli nawet na schodach ![]()
Jeśli chcecie się dowiedzieć czegoś więcej na temat Jazz`a to tutaj podaję link do oficjalnej strony projektu.
To wszystko jeśli chodzi o moją wczorajszą obecność w Metropolis, ale oczywiście to nie był koniec mojego dnia, czekała mnie jeszcze kolacja z liderami innych JUG`ów i prelegentami. Wszystko zapowiadało się ciekawie, oczywiście musiałem postawić na swoim i zrezygnowałem z wybierania się podstawionym autobusem stwierdzając, iż znajdę restaurację sam ![]()
Przeliczyłem siły nad zamiary i zgubiłem się
Na szczęście jakimś cudem zdążyłem na spotkanie
Muszę przyznać, że organizatorzy mieli ciekawy pomysł, zgromadzenie takich osób jak James Gosling, Erich Gamma, Linda Demicheil i wielu innych, w jednym miejscu nie jest rzeczą łatwą, a udało to im się doskonale. Spotkanie zakończyło się około 23:30, oczywiście było to jedynie formalne zakończenie, chłopaki od JRuby`ego (Charles i Ola) wspierani przez Petera Hiltona i Nicolasa Leroux organizowali wypad na miasto
(ciekawe w jakiej będą formie na ich dzisiejszej prezentacji o JRuby :D)
Wspólnie z Lukasem staraliśmy się przekonać Magdę aby wybrała się z nami na miasto, jednak w efekcie to ona przekonała nas, że już czas spać (nie ma to jak stanowczość kobiet)
Ostatecznie więc, razem z Brianem i Peterem udaliśmy się do domu…
Niestety było to i tak zbyt późno, abym obudził się na pierwszą prezentację dzisiejszego dnia…
Którą prowadził… James Gosling
To tyle jeśli chodzi o wczorajszy dzień. Dziś kolejny, również pełen emocji, najbardziej interesuje mnie wieczorna akcja pod nazwą get-free-beers-with-your-idol
JavaPolis 2007 - dzień pierwszy
Wczoraj był pierwszy dzień konferencji, niestety dopiero dzisiaj udało mi się dobrać do internetu - działa on tutaj strasznie słabo, jest to zdecydowany minus ale za to jedyny jaki do tej pory zauważyłem. Pierwszego dnia brałem udział w wykładach dotyczących Java Generics and Collectins, JBoss Seam, NetBeans Mobility. Jako, że wykłady pojawią się w internecie na Parleys.com to nie będę się na ich temat zbytnio rozpisywał. Na pewno pierwszy wykład na którym byłem, był bardzo ciekawy, mogę powiedzieć, iż było to idealne wprowadzenie do Generics`ów. Maurice w sposób interesujący przedstawił zalety genericsów, poruszył również temat kolekcji i ich stosowania w Javie, interesujące było przekrojowe przedstawienie jak ewaluowały kolekcje począwszy od wersji 1.2 do wersji 1.5. Kolejny wykład, dotyczący Seama był niestety nudny, jedynie podtrzymywał mnie przy życiu francuz (jeden z prelegentów), który swoim mocnym francuskim akcentem sprawiał, że chyba nikt na sali nie był w stanie go zrozumieć ![]()
Ostatni z wykładów w których brałem udział dotyczył NetBeans Mobility, był on prowadzony przez Lukasa Hasika którego miałem okazję wcześniej poznać, Lukas zajmuje się QA w NetBeans Mobility, niestety prezentacja była krótka - trwała 30 minut i było to jedynie małe wprowadzenie do NB Mobility. Nie rozpisuję się zbytnio z uwagi na fakt iż siedzę na wykładzie samego Ericha Gammy, właśnie przedstawia on cudeńko które zwie się Jazz ![]()
Prawda też jest taka, że mimo, iż planowałem opisywać JavaPolis 2007 to nie ma na to czasu - cały czas się coś dzieje o 18 kończą się wykłady, zaraz po nich kolacja z liderami JUGów i “speakerami” - powrót pewnie koło 24, a jutro o 8 zaczyna się kolejny, pełen atrakcji dzień. I jak tu znaleźć czas na zamieszczenie fotek albo opisanie przygód które przytrafiły mi się w drodze ? ![]()





