Hanno Embregts is Java Champion en IT consultant bij Info Support. Onder IT-ers leeft soms het beeld dat Java technisch minder geavanceerd is. Volgens Hanno is dat onterecht. In dit interview legt hij uit dat de ontwikkelsnelheid enorm hoog ligt en dat Java diverse voordelen heeft ten opzichte van andere talen.

Onze AI interviewer Ann (een door Info Support ontwikkelde custom versie van GPT4) ging hierover met Hanno in gesprek.

Wat maakt Java nog steeds een relevante programmeertaal?

Daar zijn meerdere redenen voor. Verreweg de belangrijkste is de releasecadans die Java sinds 2017 hanteert. Elke zes maanden komt er een nieuwe Java-versie uit. Hierdoor komen nieuwe features veel sneller beschikbaar voor ontwikkelaars dan voorheen.

Een andere reden heeft te maken met de JVM. Dit onderdeel vormt een abstractie bovenop het besturingssysteem. De JVM is ooit bedacht om Java-code uit te voeren. Tegenwoordig bestaan er echter meerdere programmeertalen die op de JVM werken, zoals Groovy, Scala en Kotlin. Hierdoor raken gebruikers van deze talen ook in aanraking met de JVM. Dit zorgt voor een groeiende populariteit van het Java-platform.

Hoe beïnvloedt de snellere releasecadans Java-ontwikkelaars? Brengt dit ook uitdagingen met zich mee?

Voorheen werd gewacht met het uitbrengen van een nieuwe Java-versie tot een feature voltooid was. Nu zijn er elke zes maanden nieuwe features beschikbaar. Dit heeft een positieve invloed op de motivatie van ontwikkelaars. Ze kunnen immers twee keer per jaar nieuwe dingen uitproberen.

Er zijn wel uitdagingen. Grotere features worden nu opgeknipt in delen. De bijbehorende API’s zijn dan nog niet definitief. Deze ‘preview features’ vereisen een speciale Java-instelling om ze te gebruiken. Het doel hiervan is snel feedback verzamelen en features waar nodig aan te passen.

Een lastig gevolg is dat een preview feature in een latere versie subtiel anders kan werken. Hiervoor is het predicaat ‘preview feature’ bedacht. Dit waarschuwt ontwikkelaars hiervoor.

Kun je een voorbeeld geven waarbij de 'preview feature' benadering heeft geleid tot verbeteringen op basis van feedback?

Bij de feature ‘Pattern Matching for switch’ stelden de ontwerpers ‘guarded patterns’ voor. Dit is een extra booleanexpressie na een pattern match. De syntax was een dubbele ampersand (&&) in Java 18.

Gebruikers gaven als feedback dat ze dit verwarrend vonden. Vooral als de booleanexpressie zelf ook &&- of ||-operaties bevatte.

In Java 19 zijn guarded patterns daarom vervangen door ‘when clauses’. De dubbele ampersand is vervangen door het keyword ‘when’.

Kun je een situatie beschrijven waarin de JVM heeft bijgedragen aan de oplossing van een technisch probleem? En hoe dragen Scala en Kotlin bij aan de populariteit van Java?

Het belangrijkste bestaansrecht van de JVM was altijd de mogelijkheid om software te schrijven die op alle besturingssystemen werkt. Het motto was dan ook ‘write once, run anywhere’.

Scala en Kotlin maken Java als taal niet noodzakelijk populairder. Ze dragen wel bij aan de populariteit van het bredere Java-platform. Ontwikkelaars van deze talen komen namelijk in aanraking met dezelfde tools en libraries. Denk aan Maven, Spring en Jenkins. Dit maakt een eventuele overstap naar Java in de toekomst makkelijker.

Daarnaast hebben de talen een positief effect op elkaar. Nieuwe Java-features zijn vaak gebaseerd op vergelijkbare ideeën uit Scala en Kotlin.

Hoe zie je de toekomst van Java met de opkomst van Python en JavaScript? Behoudt het zijn relevantie?

JavaScript wordt vooral gebruikt voor front-end. De use case verschilt dus van Java. Python is net als Java bedoeld voor back-end. Het heeft vooral een groot marktaandeel in data-analyse. Java is juist populair voor webapplicaties via REST en HTML.

De talen hebben dus allemaal een eigen plek verworven. Ik ben van mening dat ze prima naast elkaar kunnen blijven bestaan. Ze verliezen niet snel hun relevantie.

Welk advies geef je aan een beginnende ontwikkelaar die Java wil leren?

Dit is een perfect moment om met Java te beginnen! Via ‘Project Amber’ worden nu veel handige constructies toegevoegd die Java krachtiger en veelzijdiger maken.

De Java 21-feature ‘Unnamed Classes and Instance Main Methods’ is ook relevant voor beginners. Het wordt namelijk eenvoudiger om een eerste ‘Hello World!’-programma te schrijven.

Ik verwacht dat deze ontwikkelingen de drempel voor beginnende Java-ontwikkelaars een stuk lager zullen maken.

Welke bronnen of leertrajecten raad je aan om Java onder de knie te krijgen?

De website dev.java van Oracle is een goed beginpunt. Hier vind je tutorials, documentatie, een online Java-parser en opnames van experts.

Ook het boek ‘Effective Java’ van Joshua Bloch is zeer waardevol. Ik heb er zelf veel van geleerd. Dit raad ik aan nadat de basis is gelegd.

Hoe zie jij de toekomst van de IT-industrie en de rol van Java daarin?

Ik heb er vertrouwen in dat Java de technologische vooruitgang zal blijven volgen Een goed voorbeeld daarvan is de goede ondersteuning voor generatieve AI die IDE’s als IntelliJ IDEA en Visual Studio Code hebben toegevoegd.

Daarnaast is Java een energie-efficiënte taal. Deze eigenschap wordt steeds relevanter gezien de naderende klimaatcrisis. Duurzame energie wordt cruciaal. Java zal hierdoor in de toekomst alleen maar populairder worden. De meest duurzame energie is immers de energie die je niet nodig hebt.