Blog

Trends en ontwikkelingen: de verandering binnen Java development in 2019

Er zijn op dit moment veel ontwikkelingen gaande omtrent Java. Neem het veranderende licentiemodel van Oracle, de versnellingen van releases en nieuw opkomende programmeertalen. Deze veranderende wereld is soms moeilijk bij te houden en kunnen van invloed zijn op de werkwijze van consultants en zelfs de hele ICT afdeling.

Het is van belang om de trends goed in de gaten te houden en een weloverwogen beslissing te nemen welke oplossing het beste bij het systeem of de applicatie past.

Hulp nodig bij deze keuzes? We zullen de trends eerst verder toelichten:

Het licentie model van Oracle – betaalde licentie of OpenJDK

Na Oracle JDK 8 zal het licentie model van Oracle gaan veranderen. Waar er eerst één licentiemodel bestond wordt nu een tweesplitsing gemaakt tussen de beschikbare licentie modellen. De verandering van licentie model kan invloed hebben op een development afdeling.

Hierin zal de afdeling een keuze moeten maken tussen:

  1. Een betaalde licentie: de Oracle applicatie kan de security updates blijven ontvangen, dit zal gelden als de applicatie in productie gebracht wordt, voor ontwikkeling en testen kan de JDK gratis gebruikt blijven worden.
  2. Een gratis OpenJDK licentie: de Oracle applicatie kan de updates niet blijven ontvangen en zal mee gaan met een halfjaarlijkse cyclus. Deze zal meer impact hebben op je codebase. Alleen door mee te gaan blijft de applicatie up-to-date wat betreft security.

Naast Oracle JDK en OpenJDK komen er verschillende distributies beschikbaar zoals AdoptOpenJDK. Deze is gratis beschikbaar en biedt de mogelijkheid om verschillende releases te gebruiken (huidig: Java 8 en Java 11 zijn LTS).

Versnelling van releases – van 5 jaar naar 6 maanden

Java heeft aangegeven dat de versie releases niet meer volgens het bestaande schema zullen gaan, maar dat nieuwe versies sneller geïntroduceerd zullen worden. Hierdoor worden de ontwikkelingen vanuit Java sneller doorgevoerd en zal de gebruiker zich ook sneller moeten aanpassen aan de nieuwste versie.

Release snelheid voor Java 8

Tussen Java 6 en Java 7 zat ongeveer 5 jaar. Hierdoor was er ruim genoeg de tijd om een bestaande applicatie voor te bereiden en te test tegen de nieuwere versie. In de toekomst zal dit proces veel sneller moeten gaan.

Bron: https://dev.karakun.com/java/2018/06/25/java-releases.html

Release snelheid na Java 8

Er zat tussen Java 9 en Java 10 namelijk maar 6 maanden! Ook de volgende versies zullen met dezelfde interval gereleaset worden. Dit houdt in dat applicaties veel sneller omgezet moeten worden naar nieuwe Java releases om bij te blijven met de security updates (in het geval van OpenJDK). Voor de betaalde licentie worden de security updates gebackport naar eerdere releases. Bij het gebruik van Open JDK moet een afdeling dus tijdig plannen en handelen voor een nieuwe release.  

Bron: https://dev.karakun.com/java/2018/06/25/java-releases.html 

Het is niet alleen een kwestie van aanpassen naar de nieuwe versie, maar er zullen ook meer packages obsolete verklaard worden. In opvolgende releases soms ook zelfs uit gefaseerd. Hier moet een ICT afdeling rekening mee houden op het moment dat een upgrade naar een hogere versie plaatsvindt. Zo voorkom je dat onderdelen van de applicatie of het systeem niet meer naar behoren werken.

Andere talen en frameworks – Java slechts als JVM

Op dit moment is er een trend aan het ontstaan waarbij Java niet meer als primaire taal gebruikt wordt, maar alleen als Java Virtual Machine (JVM).  JVM is een omgeving waarin een Java Bytecode wordt uitgevoerd. De alternatieven die vaker als primaire taal terugkomen zijn bijvoorbeeld Kotlin, Jakarta EE of Scala.

Kotlin kan worden toegepast als Server-side applicatie op basis van de JVM. De kracht van Kotlin is dat het niet alleen gebonden is aan Server-side applicaties. De mogelijkheid om multiplatform te programmeren is een voordeel als er zowel mobile, client als server-side applicatie gemaakt worden.

Jakarta EE focust zich vooral op het bouwen van MicroProfiles. Monolitische applicaties kunnen zo opgesplitst worden in kleinere MicroProfiles.

Bij Scala is er geprobeerd om de syntax van de twee talen (Java en Scala) zo gelijk mogelijk te houden, in tegenstelling tot alternatieven zoals Kotlin. De taal is complexer als Java, alleen het kost minder code om hetzelfde te bereiken.

Dit heeft als voordelen:

  • Reductie in complexiteit: er kan een scheiding aangebracht worden op basis van functionaliteit.
  • Betere testbaarheid : er is minder complexiteit en de business logica is beter geïsoleerd.
  • Schaalbaarheid: het schalen van applicaties gaat makkelijker.

Door de snelle ontwikkeling van andere talen en frameworks naast Java in combinatie met JVM, zal er per applicatie of systeem gekeken moeten worden welke combinatie het best past. Zo kan het development team het efficiënts aan de slag met ontwikkelen. Hulp nodig bij de keuzes in uw team? Of komt u consultants te kort? Wij komen graag in contact om te bespreken op welke manier wij kunnen helpen. Bel ons via 036-538 72 92 of plan een kennismaking in.

Door Robert Kappert - Java Consultant bij Conspect - 5 februari 2018