Java Developer Days (JDD) w Krakowie

Miałem przyjemność wziąć udział w JDD 2013 w Krakowie – jednej z głównych konferencji Javowych w Polsce, poniżej krótkie podsumowanie poszczególnych wykładów.

Chillout zone

Chillout zone

Sławomir Sobótka – Czego mama nigdy nie mówiła Ci na temat testowania automatycznego

Porywający wykład, pełen perfekcjonizm prowadzącego, wiele przykładów i dowcipów aż momentami do przesady. Temat wielokrotnie wałkowany ale wykład rzucił nowe światło, szczególnie wątek Behavior-Driven Development, i zapis scenariuszy testowych w języku zbliżonym do naturalnego. Autor wymienił także narzędzia jBehave (Java) i Cocumber (Ruby) umożliwiającego tego rodzaju testy. Poruszony był także aspekt testowania funkcjonalnego z „klikaniem” w interfejs użytkownika i używane do tego narzędzie Selenium. Autor podkreślał trudność w testowaniu UI w związku z częstymi i przypadkowymi zmianami oraz sugerował włączenie webdeveloperów w proces testowania poprzez poprawne umieszczanie identyfikatorów lub pisaniu funkcji które wyszukiwałby w drzewie DOM strony odpowiednie obiekty i wywoływałyby określone zdarzenia – tak żeby poczuli ból testowania :-).

Moją uwagę zwróciła fajna technika przygotowania prezentacji. Ale jak później okazało się że podobne prezentacje oglądaliśmy później…

Jarosław Pałka – I ty też możesz mieć swoje dane w cache

Wysłuchałem przyjaźnie poprowadzonego wykładu o podstawach cache’owania i przeglądzie popularnych narzędzi od memcached (prostota), redis (dodana replikacja, pliki), przez nasz ulubiony ehcache (implementacja w Javie) do infinispane (zdaniem prowadzącego najciekawszy ale potencjalnie zbyt skomplikowany).

Prezentacja dla mnie nie wniosła nic nowego oprócz upewnieniu się w opinii że cache-owanie jest trudne.  jednak wykład był na tyle przyjemnie poprowadzony i wyjaśniający wszystko od podstaw że życzyłbym sobie żeby każdy z naszych programistów czegoś takiego wysłuchał. Jednocześnie przypomniała mi się konieczność pochylenia się nad tematem cache’owania w przeglądarce czyli w wszczególności wykorzystania nagłówka Etag w naszych projektach…

Sposób przygotowania prezentacji był przeciwieństwem poprzedniej – była typowo ascetyczna.

Marcin Burliński, Leonid Igolnik – Data base refactorization

Profesjonalnie poprowadzona prezentacja przez pracowników Oracle’a. Ciekawe wskazówki i przykłady generowania i dostarczania plików migracyjnych, z naciskiem na większe grono odbiorców (wdrożeń) niż my stosujemy (tylko dla swoich pracowników). Ciekawym pomysłem wydało mi się też trzymanie w tabeli technicznej w bazie danych, oprócz samego numeru aktualnej wersji, również innych danych:

  • data ostatniej aktualizacji,
  • nazwę ostatniego skryptu modyfikującego
  • dane osoby która go wykonała.

Ciekawa była również koncepcja podziału skryptów na trzy grupy: pre, main i post. Idea jest prosta:

  • skrypty „pre” są nieinwazyjne i można je uruchomić jeszcze wtedy gdy działa poprzednia wersja aplikacji,
  • skrypty „main” uruchamiane są w trakcie przerwy technicznej
  • skrypty „post” sprzątają dane tymczasowe i mogą być uruchomione już po włączeniu nowej wersji aplikacji.

Docelowo chodzi o to żeby zrezygnować ze skryptów „main” na rzecz upgrade całkowicie bezprzerwowego.

Prelegenci wspomnieli też o serwisie agiledata.org -opisujące metody „zwinne” do zarządzania danymi.

Paul Bakker – Modularity in the cloud – Deploying large scale OSGi applications

Fajny wykład o wdrożeniu oprogramowania dla szkół w Holandii jednak poziom angielskiego był dla mnie odrobinę za wysoki i nie złapałem wszystkiego. Ciekawym wątkiem było dostosowanie użycia zasobów z chmury Google do cyklu pracy szkół: kiedy uczniowie po 14:00 wychodzą ze szkoły wyłącza się większość serwerów z klastra pozostawiając tylko małe zasoby aby ambitniejsi mogli robić prace domowe. Z kolei o 8:00, gdy przychodzą do szkoły, to wszystkie serwery są ponownie włączane, aplikacja instalowana i uruchamiana i rozpoczyna się główny cykl pracy.

Ciekawy też jest sam projekt prowadzony w szkołach w Holandii i mający na celu wyeliminowanie klasycznych podręczników na rzecz laptopów i tabletów – projekt jest prowadzony przez jednostki rządowe a dotychczasowi wydawcy współpracują przy dostarczaniu treści – coś co w Polsce na pewno by się nie udało…

Autor opisywał że cała aplikacja jest uruchomiona na bazie serwera nierelacyjnej baz danych Mongo, zarządzanie dystrybucją aplikacji do środowiska rozproszonego jest robione w wykorzystaniem Apache Ace i Amdatu a całość jest zgodna z wytycznymi OSGi.

Paul jest współautorem książki wydanej przez Oreilly: Building Modular Cloud Apps with OSGi, którą pewnie warto by przeczytać gdyby ktoś był zainteresowany tematem.

Michał Bartyzel – Jak zniszczyć swój kod – podstawy lingwistyki dla programistów

Fajny wykład o tematyce która ciągle mnie pasjonuje, czyli pisaniu kodu w taki sposób aby łatwo się go czytało. Ciekawe były rozważania co do zalecanej długości jaką powinna mieć jedna metoda w klasie, konkluzją było to żeby mieściła się na jednym ekranie, a wielkość tą można indywidualnie dopasowywać zakupem odpowiedniej wielkości monitora :-).

W czasie wykładu dowiedziałem się m.in. że Michał wydał książkę „Oprogramowanie szyte na miarę. Jak rozmawiać z klientem, który nie wie, czego chce”, którą obiecałem sobie przeczytać. Ponadto jest autorem bloga.

Piotr Wyczesany – O co chodzi z tym całym “Domain-Driven Design”?

Na prezentacje szedłem skuszony możliwością poznania od postaw metodyki której użycie chodzi za mną od dłuższego czasu. Szczególnie przy okazji ostatnio realizowanego projektu byłem stawiany przez członków zespołu przed pytaniem „ale o co chodzi, jak zrobić prostą rzecz bez konieczności poznawania szczegółów implementacji, tabel w bazie, itp.”. Projekt nam się rozrósł, jego „domena” okazała się znacznie bardziej skomplikowana i było czuć że potrzebujemy czegoś więcej.

Wykład częściowo to tłumaczył. Na początku była obietnica posłużenia się domeną rozgrywek piłkarskich i systemu naliczania punktów, jednak nie był on przez dłuższy czas wykorzystywany, dopiero w dalszej części wykładu. Także podstawy do mnie dotarły, ale również świadomość że to wierzchołek góry lodowej. Prelegent sugerował przeczytanie dwóch książek nad którymi warto by się pochylić:

Tłumaczeń po polsku brak :-(.

Marek Rudziński – Oprogramowanie umysłu – jak możliwe jest porozumienie pomiędzy ludźmi, którzy myślą zupełnie inaczej

Prezentacja zupełnie innego typu niż poprzednie, bez linijki kodu. Ciekawie poprowadzona, ilustrowana sfilmowanym przykładem dyskusji pomiędzy prezesem a dyrektorem IT firmy zamierzającej wprowadzić nowe oprogramowanie. Prezes artykułował same superlatywy i przywoływał sukcesy poprzednich wdrożeń. Dyrektor IT widział z kolei same zagrożenia i problemy – ciekawy przykład ludzi dążących do tego samego celu ale zupełnie innymi ścieżkami.

Mariusz Sieraczkiewicz – Mantra architektoniczna

Dosyć ciekawy i dobrze poprowadzony wykład skupiający się na tym na co w procesie tworzenia aplikacji na ogół nie starcza czasu: testy, przeglądy kodu i refaktoringi. Mariusz zachęcał do mantry architektonicznej składającej się z trzech elementów:
wizualizacji czyli wydzielania elementów z których składa się system czy aplikacja,
definicji czyli opisywania zakresu odpowiedzialności, co który element robi a czego nie robi,
napędzania czyli pilnowania żeby nie powyższa wiedza była aktualizowana, propagowana w zespole i wykorzystywana w implementacji.

Trond Bjerkestrand – Scala in Action

Bardzo dobra prezentacja w konwencji „live programming” pokazująca łagodny wstęp do języka Scala dla programistów Java oraz przykład implementacji „game of life”, którą udało się doprowadzić niemal do końca. Oprócz samego języka Scala w czasie sesji programowania w Eclipse zobaczyłem świetny „ficzer”: obok kodu linijek kodu na bieżąco był prezentowany wynik jego wykonania – wyglądało to niesamowicie… Koniecznie muszę sprawdzić czy jest to cecha języka Scala czy jakiś plugin do Eclipse który mógłby podobnie działać dla języka Java.

Mateusz Kaczmarek – Przetestuj Usability

Z wykładu Mateusza niestety nie dowiedziałem się wiele nowego oprócz nazwy obowiązkowej książki „Don’t Make Me Think” napisanej przez Steva Kruga (2005) oraz nazw kilku narzędzi których można używać do testów usability:

  • Balsamiq – do tworzenia makiet / prototypów aplikacji ($79 licencja na jednego usera forever)
  • ClickHead – dodawany do witryny skrypt JS zapamiętuje miejsca kliknięć użytkownika na stronie i tworzy z tego mapę najczęściej używanych punktów
  • Camtasia
  • UX-Recorder

Moim zdaniem prezentacja niestety była poprowadzona bez odpowiedniej dynamiki i całą treść można było przekazać nie w 45 tylko w 15 minut.

Michał Gruca – Mobile applications for everyday users

Ciekawy i atrakcyjnie poprowadzony wykład na temat zastosowań urządzeń mobilnych do usprawnienia pracy ludzi operujących w terenie  jak np. strażnicy, technicy, monterzy itp. Aplikacje omawiane w prezentacji wykorzystują technologie w większości znane oraz ostatnią o której usłyszałem pierwszy raz:

  • pozycjonowanie GPS
  • aparat / kamera
  • czujnik położenia
  • czytnik tagów NFC (Near Field Communication)

Właśnie tagi NCF były dla mnie nowością – ich zastosowanie umożliwia zbliżeniowo przekazywanie informacji do urządzenia bez konieczności korzystania z ekranu dotykowego czy klawiatury. Można umieszczać je na obiektach które odwiedza pracownik, na jego ubraniach czy na kartach z których łatwo wybiera odpowiedniki poleceń wybieranych w aplikacji.

Michał wspomniał też o kilku problemach jakie napotkali przy tworzeniu tego typu aplikacji:

  • łączność – dostęp do sieci i konieczność trzymania danych offline,
  • zasilanie i problemy z wytrzymałością baterii,
  • instalacje na urządzeniach użytkowników z pominięciem standardowych kanałów jak sklep Google Play,
  • prywatność użytkowników,
  • obsługa błędów.

Ciekawy był opisywany case strażnika który upada na schodach: telefon wie że upadł i przechodząc w tryb awaryjny może nawiązać połączenie z centralą, włączyć tryb głośnomówiący oraz kamerę lub kamery zainstalowane w urządzeniu. Dzięki temu operator w centrali może próbować porozumieć się ze strażnikiem i oszacować co się stało, a następnie wysłać pomoc.

Piotr Karczmarz – Cross-platform driven development

Podtytuł to „WP8, Win8, Android i iOS na wyciągnięcie ręki dla każdego dewelopera. Wprowadzenie do Xamarin dla deweloperów Javy” – kolejny atrakcyjnie poprowadzony wykład dynamicznie zwiększający się udział urządzeń mobilnych i problemy z jednoczesnym developmentem aplikacji na trzy platformy. Temat dla mnie świeży bo dokładnie to przerabialiśmy kilka miesięcy temu i zdecydowaliśmy się na równoległe tworzenie dwóch aplikacji na Adroida i iOS. Piotr zachęcał do użycia platformy Xamarin jednak ze względu na fakt że używa ona jako języka bazowego C# pozostałem nieprzekonany…

Mateusz Herbut – OutOfMemoryError – czy to znaczy, że muszę kupić więcej pamięci?

Ostatnia prezentacja przedstawiona przez Mateusza miała charakter techniczny i dobrze i od początku omawiała sposób działania Garbage Collectora w JVM, przedstawiała przykład powstawania błędu braku pamięci oraz oraz pobieżnie sposób analizy zrzuconego heap dumpa z użyciem Eclipse Memory Analizer. Ponadto Mateusz wspomniał o innych narzędziach umożliwiających analizę pracy odśmiecacza oraz zrzuconych dumpów:

  • jps, jmap, jhat i jstat z JDK
  • Visual VM
  • Oracle JRocket

Widać było że Mateusz dobrze się przygotował ale niestety trochę zjadła go trema – mam nadzieję że kolejne wykłady poprowadzi na większym luzie…

———

Na konferencji swoje stoisko miała nasza firma. Promowaliśmy nowy produkt: narzędzie do tworzenia modelu baz danych on-line, przez przeglądarkę: vertabelo.com.

Stanowisko promocyjne vertabelo.com

Stanowisko promocyjne vertabelo.com

Stanowisko promocyjne vertabelo.com

Stanowisko promocyjne vertabelo.com

Bardzo fajnie to wyglądało i sporo osób podchodziło dowiedzieć się czym jest to narzędzie. Również sporo osób zarejestrowało się w aplikacji, być może zachęceni bonusem jednorocznej darmowej subskrypcji oferowanej dla uczestników konferencji. Osobiście liczę na dynamiczny rozwój tej aplikacji a szczególnie dodanie funkcji reverse-engineering’u umożliwiające zaimportowanie modelu z już istniejącej bazy – chętnie bym je wtedy wykorzystał do swoich projektów…

Podsumowując, konferencja była bardzo udana, prelekcje na dobrym lub bardzo dobrym poziomie, organizacyjnie również wszystko było dobrze przeprowadzone. Jedynym mankamentem była ciasnota zarówno w salach jak i na korytarzach… Miło było znowu spotkać w jednym miejscu ponad 500 programistów i kilkanaście programistek…

Kawa, napoje, ciastka - na najwyższym poziomie

Kawa, napoje, ciastka – na najwyższym poziomie

Niestety było trochę ciasno

Niestety było trochę ciasno

Programista też człowiek i musi się rozerwać...

Programista też człowiek i musi się rozerwać…

Kraków nocą...

Kraków nocą…

O autorze

Marek Berkan Marek Berkan: programista, entuzjasta tworzenia oprogramowania, zarządzania zespołami technicznymi. Prywatnie motocyklista, kolarz MTB, biegacz, żeglarz, rekreacyjny wspinacz, zamiłowany turysta. Witryny: , , .

4 komentarze do “Java Developer Days (JDD) w Krakowie

  1. Agnieszka

    A propos książki Erica Evansa „Domain-Driven Design”: dostępne jest też pobłogosławione przez autora oryginalnej książki streszczenie „Domain Driven Design Quickly”. Można je ściągnąć za darmo ze strony http://www.infoq.com/minibooks/domain-driven-design-quickly .

    Na razie przeczytałam mniej więcej do połowy, ale widziałam już kilka pomysłów, które sprawdziłyby się w naszym „domenowym” projekcie.

    Odpowiedz
  2. Tomek Dziurko

    Odnośnie tego plugina do Eclipse’a to niestety jest dostępny tylko dla Scali. Rozwija go TypeSafe (firma stojąca za Scalą, Akką, Play Framework i ostatnio spray.io):
    https://github.com/scala-ide/scala-worksheet/wiki/Getting-Started

    Z tym „DDD Quickly” to jakoś mnie nie przekonało to przedstawienie DDD w krótkiej formie. Niby po przeczytaniu miałem fajne odczucia, to teraz z perspektywy czasu widzę, że niewiele mi dała 🙂 Podobno, żeby zrozumieć co Evans miał na myśli trzeba przeczytać jego niebieską biblię… dwa razy 🙂

    Odpowiedz
  3. Piotr Wyczesany

    DDD quickly jest raczej odradzane w świecie DDD. 🙂
    Dlaczego?
    Jest odradzane, ponieważ jest to tylko suchy zbiór patternów, które stosować powinno się dopiero po rozpoznaniu bigger pikczer (domeny, subdomeny, bounded contexty).

    Prawdziwa potęga DDD kryje się za zmianą sposobu myślenia, do którego jesteśmy przyzwyczajeni przez pochodne Visual Basica i wszędzie wyeksponowanych propertiesów – anemiczne encje połączone ze sobą w formie makaronu.

    Co do Blue booka, to trzeba go przeczytać 3 razy – za pierwszym wydaje się, że sie zrozumiało, za drugim ma się wrażenie, że nic się nie rozumie i dopiero za 3cim zaczyna sie to łapać.
    Jak to niektórzy mówią – DDD zostało stworzone przez Evansa, natomiast wytłumaczone przez innych. 🙂
    I to właśnie dzięki tej pracy innych ludzi, nie trzeba Blue booka tyle razy katować. 🙂
    Przykładowo książka Vaughna jest bardzo dobra – do tego jest wiele publikacji w postaci blogów, oraz wystąpień na konferencjach ludzi takich, jak Greg Young, Udi Dahan, Vaughn Vernon oraz wielu innych.
    Świetny spis znajduje się tutaj: https://gist.github.com/SzymonPobiega/5220595

    Odpowiedz

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *