Modulariteit in Java 9.
Stefaan volgde het afgelopen jaar nauwgezet alle evoluties omtrent de modulariteit die in de nieuwe versie van Java zit. Wat betekent dit nu voor uw business-applicaties? Is het alle hens aan dek om de overstap te maken? Of is het eerder een storm in een glas water? Onze lead van het Java team gaat hier even dieper op in.
Op 21 september werd Java 9 officieel gelanceerd. Naast enkele kleine taaltechnische aanpassingen, is de grootste wijziging de modulariteit. Dit bepaalt de manier waarop applicaties samengesteld worden, namelijk door het indelen in modules. En daar draait het allemaal om in Java 9.
If Java 8 was all about how we code, Java 9 is all about how we will build.
Er zijn verschillende beweegredenen om modulariteit toe te voegen aan Java. De belangrijkste beweegreden is optimalisatie van het productieproces. Het indelen van software in verschillende modules helpt ons de koppelingen te minimaliseren, de complexiteit van het systeem te reduceren en hiermee de kwaliteit te verhogen. Modulariteit helpt programmeurs om functionele testen uit te voeren in een geïsoleerde omgeving. Hierdoor kunnen we ook nog eens parallel gaan ontwikkelen en sneller kwalitatieve applicaties bekomen.
Een meer technische beweegreden is het preciseren van afhankelijkheden. Een business-applicatie in Java wordt door ons niet van A tot Z geschreven. We maken gebruik van afhankelijkheden zoals frameworks en libraries. Door deze afhankelijkheden expliciet te definiëren zorg je ervoor dat deze afhankelijkheden gecontroleerd kunnen worden op het moment dat de applicatie opstart. Dit is in ons jargon bekend als het fail-fast principe.
Toch is de modulariteit die Java 9 met zich meebrengt zeer omstreden. Het zou veel tijd en moeite van de ontwikkelaars vragen om hun bestaande Java applicaties naar Java 9 om te zetten. In zekere zin kunnen we dat bevestigen. Op korte termijn is het pijnlijk tijdsverlies. Op lange termijn is het meer dan de moeite waard.
Java Modularity is a short-term pain for long-term gain.
Oracle heeft er echter alles aan gedaan om de overstap naar modules optioneel te houden. Het is namelijk zo dat Java 9 volledig backwards compatible is en dit geldt ook voor de modulariteit. Wij willen uiteraard de boot niet missen en gaan meteen het Java 9 module-systeem gebruiken in alle nieuwe applicaties. Voor oude applicaties plannen we een geleidelijke overstap.