Geecon 2017 – Honzovy postřehy z Java konference

Koncem října v Praze proběhl další ročník Java konference Geecon. Dvoudenní akce byla nabitá přednáškami na aktuální témata, která hýbou Java světem.

Geecon se konal v prostorách kina CineStar v obchodním centru Černý most. Přednášky probíhaly souběžně v několika kinosálech. Komu docházely síly, mohl je ve foyer obnovit pomocí kávy nebo nekonečné zásoby sladkého pečiva. V předsálí byl k vidění nespočet stánků sponzorů a firem z oboru, u kterých jsme se odreagovali řešením zábavných či zapeklitých úkolů.

Přednášky, které mě zaujaly:

Mark Heckler – Full-stack Reactive Java with Project Reactor & Spring Boot 2

Ukázka Java reactor a integrace na Spring5
Demo k dispozici.

Mark ukázal dobře připravené demo téměř od nuly. Pomocí spring boot starteru si vygeneroval kostru projektu. Během pár minut připravil funkční REST servisu, kde za pomoci reactive frameworku představil použití reactive streamu jako rozhraní.  

Pro uložení dat v demu byla použita mongoDB a spring data CRUD repository (org.springframework.data.mongodb.repository.ReactiveMongoRepository).

Anton Arhipov – TestContainers – Integration Testing Without the Hassle

Představení projektu přímo od TestContainers a na Github
Slides k dispozici.

Připravené třídy pro inicializaci docker kontejnerů přímo z junit.

Přednášející ukázal, jak kontejnery používají v zeroTourmet (jrebel) a že jsou schopni v ZeroTurnaround testovat i java agenty, u kterých by jinak bylo standardní testování obtížné.  

Na samotný popis technologie kontejnerů se v prezentaci bohužel moc nedostalo, přesto tato technologie vypadá použitelně. Umožní například inicializaci DB přímo v samotném testu, není potřeba dopředu připravovat prostředí pro spuštění testu. Kromě použití pro DB lze kontejner použít také pro libovolný docker image.

Výhodou tohoto spouštění je, že není nutné dopředu v aplikaci konfigurovat url a port pro konkrétní docker. Junit si může převzít konfiguraci z testcontaneru. Během prezentace zazněla i možnost mockování libovolného serveru a použití dockeru pro seleniové testy.

Ukázka Inicializace kontejneru s mysql v junit testu:

 

Quentin Adam – Deep Dive and Learn About Your Operating System

Slides této přednášky byly kompletně připravené v bash shelu, dokonce i s ASCI grafikou a animacemi! V závěru zaznělo motto „Nepoužívejte docker v produkci”.

Quentin předvedl, jak se dá z dockeru dostat na root file systém. Dále zdůraznil, že docker není virtuální stroj, ale skutečně jen kontejner. Neposkytuje dostatečnou izolaci od okolí a pro produkční provoz navíc představuje komplikaci s monitoringem.    

Niek Palm – GraphQL – The Next API Language

Představení knihovny GraphQL Java Tools
K dispozici demo a slides.

Roman Pickl – Continuous Code Quality with the SonarEcosystem

Motivační přednáška pro používání SonarQube
K dispozici slides.

Roman nejprve představil SonarLint – plugin pro IDE (Eclipse i Idea), který by se měl stát povinnou součástí všech IDE. Dokáže napovědět docela dost věcí, které IDE nechá bez povšimnutí. Představil také SonarQube a předvedl snadné spuštění kompletně funkční instance v dockeru:

SonarQube je nástroj pro průběžné monitorování kvality kódu. Podporuje zobrazení chyb v různých úrovních nebezpečnosti. Zobrazuje code coverage a ukazuje, zda na projektu dochází ke zhoršení nebo zlepšení. Kromě informací o code coverage prozradí i úspěšnost junit.

SonarQube je možné integrovat s CI serverem (jenkins, gitlab, … ), v SonarQube pak nastavit quality gate – výstupní bránu, která určí, zda projekt může být nasazen, nebo zda obsahuje nedostatky, které je nutné nejprve vyřešit.

Robert Munteanu – Scaling Up Development of a Modular Code Base

K dispozici slides

Robert představil, jakým způsobem funguje kompletní vývojové prostředí ve společnosti Adobe. Základní motto přednášky: „Automatizovat – scriptovat maximum možného“.

  • mvn plugin pro nastavení IDE, zajištění jednotné konfigurace IDE mezi vývojáři, sdílení pravidel pro formátování atd. (ukazoval plugin pro Eclipse)
  • Jenkins samostatně pro každý projekt
  • Jenkins tasks generované skriptem

Tomer Gabel – Slaying Sacred Cows: Deconstructing Dependency Injection

Těžko uchopitelná přednáška, která vyvolala celkem velkou debatu
K dispozici slides.

Tomer zastává názor, že dependence injection (IoC obecně) přináší více problémů než užitku. Použití frameworků a anotací pro řízení dependencí přináší pouze do codebase další meta jazyk a ve výsledku nepřináší žádný benefit. Naopak přidává práci a komplikace například pro psaní junit.

Jacek Kunicki – Tame Your Data with Akka Streams and Java 8

Parádně připravená přednáška, kde Jacek představil java8 implementaci Akka stream
K dispozici demo.

Na demu ukázal Jacek import CSV souboru, kde připravil jednotlivé části pro načtení, parsování, filtrování, konverzi a uložení dat. V principu Akka streams využívají 3 typy komponent. Producera na začátku, flow pro zpracování a consumera pro závěrečnou akci.

Kromě Akka streams Jacek ukázal funkcionální knihovnu Vavr. Jedná se o nadupanou knihovnu pro funkcionální přístup téměř k čemukoli, co se v Java běžně používá. Ukázka funkcionálního zpracování kódu, který vyhazuje výjimku:

   

Závěrem

Většina přednášek byla na dobré úrovni a přinesla mnoho zajímavých informací. Některé přednášky však byly „pouze“ o vyprávění příběhu, jak jsme se dostali až tam, kde jsme. Zklamalo mě ale, že jsem v seznamu přednášek nenarazil na jedinou, která by mapovala novinky ve Spring 5 a Java 9. Snad příště!

Mohlo by vás zajímat

Na teambuilding v Krkonoších jen tak nezapomeneme!

Velký teambuilding obvykle pořádáme jednou za rok, takže si dáváme opravdu záležet. A ten letošní byl pořádně našlápnutý.

Celý článek

EvitaDB dláždí cestu pro rychlejší e-commerce

Už letos spustíme specializovanou databázi evitaDB, která e-shopům skokově zrychlí práci s daty. Seznamte se s ní v našem článku.

Celý článek

Přeskočit na hlavní nabídku