JavaZone 2019
Soms heb je zomaar eens mazzel; Zoals mijn collega Michel Breevoort, die een uitnodiging kreeg om in San Francisco een Code4Kids workshop te geven, voorafgaand aan de Oracle Code One conferentie. Mooi om collega’s te hebben die op die manier een bijdrage leveren aan het enthousiasmeren van de volgende generatie voor ons mooie vak. Ook mooi als blijkt dat de workshop samenvalt met JavaZone in Oslo, waardoor plots zijn ticket vrijkomt. Zo wist ik vier weken voor JavaZone nog van niks, en stond ik vorige week ineens op Schiphol! https://twitter.com/jdriven_nl/status/117143290177...
Na alle goede verhalen van collega’s over eerdere edities was ik erg benieuwd; en ik moet zeggen: de conferentie zit verdomd goed in elkaar. Een brede mix van sprekers en content, met gelukkig naast Noorse sessies ook genoeg talks in het Engels.
Woensdag 11 september:
Lopend van mijn hotel naar de conferentie valt één trend in Oslo niet te ontwijken: de elektrische scooter. Een handvol startups probeert de reiziger te binden, waardoor je zowat struikelt over de scooters, en om de haverklap opzij mag springen voor de volgende forens. Eenmaal aangekomen bij Oslo Spektrum, blijkt dat de scooters zelfs tot op de conferentie vloer zijn doorgedrongen.
De conferentie opent met een mix van drums, muziek en visuals, in het midden van de hal tussen alle commerciële stands. Ondanks dat ik maar weinig van de vele lokale bedrijven herkende, kreeg ik wel de indruk dat dit veelbelovende bedrijven waren.
Ik begin de dag met een talk over Joyful Quarkus, zoals al eerder beschreven door collega’s op JavaLand, maar nu aangevuld met de onlangs geïntroduceerde API compatibility met Spring Web en Spring Data. Indrukwekkend om de snelle ontwikkeltijden te zien, waarbij Edson Yanaga aangaf dat ze voor de development experience geen ingewikkelde reloading gebruiken; het framework start simpelweg al zo snel op. Ook de Panache laag bovenop Hibernate maakt elegante code mogelijk; zeker de moeite waard om eens te bekijken voor een volgende kleine service of functie.
Een presentatie vanuit SportRadar doorliep met ons de overstap van gedeelde Java archives naar gRPC voor hun kans berekeningsmodellen. De voordelen van multi language support, contracts, validatie en error afhandeling werden allemaal weliswaar benoemd, maar echte details bleven uit, waardoor de directe toepasbaarheid wat achter bleef. Wel direct toepasbaar en overtuigend gebracht, was een talk over mutation testing door middel van pitest.org. Door subtiele byte code manipulaties wordt aan het licht gebracht hoe robuust je tests zijn tegen onbedoelde aanpassingen. Het dwingt je tot het expliciet checken van grensgevallen, als extra check bovenop de al breder gebruikte code coverage metrieken. Door slim gebruik te maken van eerdere runs en enkel gewijzigde code te testen, blijft de doorlooptijd beperkt, ten opzichte van andere frameworks.
Na de uitstekende lunch was er een presentatie die zich liet samenvatten als: Gebruik buildpacks.io. En hoewel overtuigend gebracht, is het toch wat jammer dat ze een uur uit trokken om deze boodschap over te brengen. Wel interessant om te zien dat daarmee ook aanpassingen aan de base layer mogelijk zijn, zonder de noodzaak alle lagen daar bovenop te herbouwen. Zo hoefde Heroku bij het bekend worden van Spectre/Meltdown enkel de base layers herbouwen van miljoenen applicaties, voor een aanzienlijke tijdsbesparing. Maar wie geen multilanguage platform met miljoenen applicaties draait, kan ook prima af met Jib.
Aansluitend woonde ik een presentatie bij vol praktische tips voor het ontwikkelen en debuggen van reactive applicaties. Reactive programmeren ontkoppelt het declareren van bewerkingen van de uitvoer, wat ervoor kan zorgen dat eventuele fouten die optreden moeilijker te herleiden zijn tot de bron. Door slim gebruik te maken van reactor-tools, Flux#checkpoint() en Flux#log() en onder andere de Hooks class, zijn eventuele fouten al een stuk eenvoudiger op te sporen. Koppel dat aan tools als BlockHound voor het opsporen van blocking calls, en een gezonde argwaan bij het gebruik van externe libraries, en de meest voorkomende fouten zullen al niet meer voorkomen.
De middag sluit ik af met een tweetal talks over Evolving to Cloud Native, en Opportunies and pitfalls of event-driven utopia. Beiden stappen wat weg van de code om het meer over concepten te hebben, maar ondanks vermakelijke talks, brengen ze weinig echt nieuwe ideeën over.
Traditiegetrouw wordt de eerste conferentiedag afgesloten met een borrel/feest in hartje centrum. In colonne loopt iedereen langs vreemd uitgedoste wegwijzers naar één van drie hippe spots, voor een avond socializen. Al snel stond ik zo in Kulturhuset voor menig potje Shuffleboard (iets als curling op een verlengde sjoelbak), met een team lokale Java developers. Een zeer geslaagde avond en mooie toevoeging aan de Noorse beleving.
Donderdag 12 september:
De donderdag begint met een sterke talk over inline types in Java, onderdeel van project Valhalla. Een heel verhaal over L caches, references en out-of-line Object arrays komt uiteindelijk uit bij inline types: “codes like a class, works like an ‘int’”. Hoewel nog maar in vroege preview, belooft dit een grote performance winst door immutable data structuren by value door te geven.
Een vermakelijke presentatie van Tim Berglund van Confluent besteedt wat veel tijd aan inleiding en achtergrond, om ons uiteindelijk ervan te overtuigen dat Apache Kafka prima geschikt is voor ACID semantics. De samenkomst van durable topics, atomair verzenden van berichten, en een specifieke flow voor het producen van requests, om vervolgens resultaten te lezen uit (K)Tables, zou volgens hem voldoende moeten zijn om aan de eisen te voldoen.
Aansluitend koos ik de talk van Gunnar Morling over Change Data Streaming met Debezium voor Apache Kafka,deze toont nogmaals wat van dezelfde concepten. Zijn boodschap is vooral: “Friends don’t let friends do dual-writes”. Hij doelt hiermee erop dat het beter is atomair een enkel bericht te versturen, om daar vervolgens meerdere consumers op te abonneren, dan te proberen hetzelfde bericht naar twee bronnen weg te schrijven. Debezium, en andere Kafka Connectors maken het mogelijk bovenstaand advies op te volgen, zonder daarbij een veelvoud aan consumers te schrijven.
Een brede mix aan kortere talks in de middag doet mij besluiten gebruik te maken van de Overflow room; op een bioscoopscherm worden alle parallelle tracks naast elkaar geprojecteerd, waarbij je middels een headset tussen de audio kanalen kan wisselen. Dit maakt dat ik van verschillende sprekers wat korte inzichten kan opdoen over onder andere UX en communicatie, accessibility, neural networks en progressive web apps. Een prima toevoeging aan de conferentie, en voorkomt keuzestress bij een vol programma.
De laatste talk van de JavaZone betreft een custom SLF4J implementatie genaamd logevents, met wat inzichten toepasbaar op alle SLF4J implementaties, en features die te denken geven in onze eigen log aanpak. Onder andere de integratie met Slack en code repositories maakt het interessant, naast de optie om log events te throttle-en. Al met al een vermakelijke laatste presentatie, ook geholpen door zijn collega’s die (on?)bedoeld de Slack demo van humor voorzien.
En daarmee zat JavaZone er voor mij alweer op; ik loop nog een laatste ronde door Oslo, voordat ik de ochtend erop alweer terug vlieg. Wat mij bijblijft is een heel positieve indruk van Oslo en JavaZone; net als mijn collega’s kan ik alleen maar onderschrijven dat de content, de mensen, de sfeer en het eten JavaZone inderdaad tot één van de beste conferenties maakt. Volgend jaar toch nog maar eens uitkijken naar die Call for Papers…
Tim