Tidligere i oktober reiste 13 spente Bouvetere til Belgia for å delta på Devoxx Genesis. Konferansen, som finner sted i den sjarmerende belgiske byen Antwerpen, samler utviklere og tech-entusiaster fra hele verden. Vi fikk delta på tre dager med inspirerende keynotes og et bredt spekter av spennende, tekniske foredrag. Devoxx Belgia er i dag en av de største Java-konferansene i verden og tiltrekker seg tungvektere innenfor Java-miljøet som Brian Goetz fra Oracle, Gavin King fra Red Hat / IBM og Josh Long fra Spring.
Reisefølget fra Bouvet besto av en gruppe ansatte med varierende erfaring og kompetanse, men det brede spekteret av foredragstemaer sørget for at alle fant noe relevant og interessant. De ti forskjellige temasporene ga oss muligheten til å velge foredrag basert på våre personlige interesser. Nedenfor kan du lese om de foredragene vi fant mest interessante.
Her kan du finne opptak av alle foredragene.
Konferansen ble sparket igang med et veldig kult keynote foredrag, hvor Stephan Janssen, primus motor for organiseringen av Devoxx Beligum, fungerte som både foredragsholder og konfransier. Janssen satte tonen for årets temaer, med fokus på fremtidens teknologi, spesielt innen kunstig intelligens (myye langchain4j, Spring AI og Jllama), programmeringsspråk og skybaserte løsninger. Foredragsholderen klarte også å snike inn litt promotering av sin EGEN kodeassistent som han kalte GenieDevoxx. Assistenten er en plugin for intellij, ligger åpent på github og lagrer alt lokalt. Han fremhevet hvordan Devoxx fortsetter å vokse som en global møteplass for utviklere, samtidig som han la vekt på viktigheten av kunnskapsdeling i det stadig skiftende teknologilandskapet. Ellers: En av foredragsholderne under keynoten fikk seg en aldri så liten "uforberedt" hårklipp på scenen parallelt med de andre foredragene.
Brian Goetz – Postcards from the peak of complexity
Brian Goetz er en av kjerneutviklerne i Java og i dette foredraget tar Brian for seg et spor han har merket at livssyklusen til features og releases som lambdaer, modules og Valhalla (den neste store releasen) har en tendens til å følge. Han lagde seg en egen modell for dette som han kaller “Brian´s ‘peak of complexity’ model”. Under denne modellen inngår følgende 5 steg
Goetz bruker denne modellen til å forklare hvorfor Java-utgivelser som virker enkle på papiret ofte har vært gjennom en prosess med gradvis forenkling og fjerning av unødvendig kompleksitet. For å beskrive denne situasjonen henviser han så brilliant til en angivelig quote fra Blaise Pascal: “Sorry for writing you a long letter, I did not have time to write you a short one”.
Brian forklarer steget “the peak of complexity” som det mest kritiske steget i et prosjekt. For selv om det er fristende å lansere en løsning som har kommet hit, så vil et slikt prosjekt aldri komme til steg nr 4 (the virtuous collapse), fordi man bruker alle ressurser på å vedlikeholde kompleksiteten man har bygget. Gjerne med å legge til enda mer kompleksitet. “Once you let the monster out of the box, you are never getting it back inside the box”. Brian trekker frem serialization Java, en feature med unødvendig mye kompleksitet, som et erkeeksempel på dette. Brian er generelt en strålende og veltalende foredragsholder som vi anbefaler alle å høre på hvis man får muligheten.
Josh Long er utvikler av spring og er et kjent navn blant flere som har vært på devoxx tidligere. I dette foredraget bygger Josh en spring boot applikasjon fra scratch i et rasende tempo. Josh starter foredraget med en litt humoristisk rant om sin demoniske hund som han og kona reddet fra et hundehjem, og foreslår å lage en applikasjon hvor man har muligheten til å redde omplasserte hunder. Applikasjonen er basert på Spring Boot, og Josh bruker Spring AI for å gjøre det mulig for brukere å sende forespørsler om tilgjengeligheten av spesifikke hunder med ulike egenskaper. Basert på input og data fra PG-vector-databasen i spring så genereres veldefinerte svar med en menneskelig tone.
Ellers tar Josh i bruk CQRS-patternet for å lage et event-drevet meldingssystem gjennom spring sin event bus. En annen relativt ny spring-feature som Josh tar i bruk er Spring Modulith. Generelt er Spring Modulith et rammeverk for å bygge modulære monolitter. Målet er å få noen av de positive sidene ved mikrotjenester (isolasjon gjennom event-drevet arkitektur) uten de negative sidene fra distribuerte systemer. En superkraft som Josh trekker frem ved Spring Modulith er annotasjonen @ApplicationModuleListener som tar hensyn til situasjoner hvor transaksjonen kan havne i en invalid tilstand (feks ved at strømmen plutselig går).
Foredraget har en humoristisk undertone og Josh er god på få ting til virke “litt på sparket”. Eksempelvis stiller Josh noen spørsmål som er verdt å stille enhver applikasjon før man lanserer, hvorav en av dem er “Er denne koden effektiv nok?”. For å besvare dette tar han oss blant annet med på en reise gjennom de ulike programmeringsspråkenes energibruk. C ligger på 1.0 (raskest), Java ligger på 1.98 og Python trekkes frem med en energiforbruk på 78 (ja, 38 ganger mer energi på å gjøre tilsvarende oppgaver). Som nåværende python-utvikler og (delvis) python-forkjemper måtte jeg trekke litt på smilebåndet (litt usikker på enhetene er her egt, virker som alt er i forhold til C). Oversikten finner du her her. Generelt en fantastisk foredragsholder man nesten blir litt kokt i hodet av holde følge med på. Han har også en youtube-kanal som heter coffee + software.
I dette foredraget snakker Brian Goetz om den nyeste og største refaktoreringen som java noen gang har gjort, nemlig Project Valhalla. Prosjektet er en del av OpenJDK, har gått over en 10 års periode og vil gradvis integreres i Java. Kort sagt har Prosjekt Valhalla som mål å forbedre Java-objektmodellen ved å introdusere verdiobjekter som ikke har identitet for å gi bedre ytelse. Det fokuserer på mer effektiv håndtering av primitive typer og generics i Java, og muliggjør bedre bruk av minne og prosessorkraft. Viktige funksjoner inkluderer verdiklasser, null-begrensede typer og forbedret «boksing» av primitive typer. "Null-restricted” og “nullable”-typer gir større for typer som er bevisste på tilstedeværelsen av null-verdier, og sikrer håndhevelse av null-begrensninger under runtime. Dette er gjerne noe som brukere av for eksempel Kotlin er godt kjent med.
Kanskje det mest relevante foredraget for flere av de som var på devoxx. Spesielt for flere i Statnett-gjengen som stanger mot Spring JPA og hibernate hver eneste dag og kanskje har godt av å optimalisere litt. Foredraget var fullt av praktiske tips og kodesnutter til hvordan man kan optimalisere spring JPA, og det lureste er kanskje å se foredraget selv på YouTube hvis man er nysgjerrig (link gitt øverst), men i veldig korte punkter snakket han blant annet om følgende:
1. Skru av auto-commit og spring.jpa.open-in-view.
2. Kall på eksterne servicer utenfor databasekoblingene.
3. Være ekstra forsiktig med Transactional(propagation = REQUIRED_NEW).
4. Bruk TransactionalTemplate når du trenger mer kontroll.
5. Bruk Lazy Loading på mange-til-mange (og mange til en) relasjoner (fetch = fetchType.LAZY i hibernate).
6. Ikke bruk select ved insert.
7. Bruk @DynamicUpdate på tabeller om har et stort antall kolonner.
8. Hent relasjoner eksplisitt gjennom fetch join eller @entityGraph.
Det er stadig flere organisasjoner som tar i bruk LLMs i applikasjonene sine for å forbedre funksjoner som søkeverktøy, chatbots og andre interne informasjonssystemer. I dette foredraget presenterer Jeroen Egelmeers potensielle risikoer knyttet til generativ AI. Han forklarer hva “Guard Rails” er, hvordan de fungerer, og hvordan man kan omgå disse ved hjelp av “Prompt Injections”. Han forklarer hvordan man kan snike inn en prompt i CV-en for å havne øverst i søkerbunken til rekrutterere. Dette foredraget gir et interessant innblikk i truslene man bør være oppmerksom på når man introduserer generativ AI i applikasjonene sine.
Generelt en meget suksessfull konferanse uten noen særlige forsinkelser og mange spennende og relevante foredrag. Vi kommer gjerne tilbake i fremtiden en gang:) Hvis man er interessert så kan man også få en smakebit av konferansen gjennom devoxx sin AI-genererte recap her.