Red Hat maakt Java geschikter voor cloud-native development

Abonneer je gratis op Techzine!

Java is één van de populairste programmeertalen onder ontwikkelaars, maar volgens Red Hat komt er nu teveel bij kijken om de taal te draaien. Om hier verandering in te brengen ontwikkelde de open source-gigant het Quarkus-framework. Het idee is om Java simpeler en relevanter te maken voor verschillende moderne ontwikkel-disciplines: cloud-native app development, microservices en serverless. We besloten over deze ontwikkeling in het Red Hat-portfolio in gesprek te gaan met Roel Hodzelmans, Senior Solution Architect bij het bedrijf.

Binnen Red Hat is men overtuigd van de kracht van Java als programmeertaal. Bedrijven kiezen het bijvoorbeeld heel vaak voor web development. De open source-gigant noemt Java vanwege uiteenlopende redenen ook wel ‘het werkpaard voor de enterprise’. De realiteit is echter ook dat de programmeertaal voor sommige taken minder geschikt is dan voor andere taken. Voor serverless development zijn bedrijven bijvoorbeeld eerder geneigd uit te wijken naar Python en Node.js, geeft Hodzelmans aan.

Java heeft de afgelopen jaren wel stappen gezet om zoveel mogelijk soorten applicaties en ontwikkeldisciplines te ondersteunen. Zo kan Java Enterprise Edition een monolithic architectuur goed ondersteunen. Daarna kwam de Java-community ook met toevoegingen om microservices te ondersteunen, door met het Microprofile-initiatief API’s te verzamelen. Nu ontwikkelaars ook steeds meer voordelen in disciplines als serverless zien, moet de Java-community wederom wat bedenken.

Volgens Hodzelmans kunnen enterprises uiteindelijk het best streven naar een mix van de verschillende ontwikkeldisciplines. Monolithic applicaties zijn relevant wanneer weinig overhead en remote calls gewenst zijn, terwijl microservices schaalbaar en dynamisch zijn. Serverless komt op zijn beurt weer met lage kosten en een snel deployment-proces.

Om deze mix zo goed mogelijk te ondersteunen, bracht Red Hat verschillende experts samen. De centrale vraag: hoe kunnen we Java-ontwikkelaars helpen bij al de use cases met zo min mogelijk retraining? Het antwoord hebben ze met Quarkus gevonden.

Hoe werkt Quarkus?

Bij de start van het ontwikkeltraject van Quarkus, stelde Red Hat een aantal uitgangspunten op waar het op terug kan vallen. Men besloot dat Quarkus een positief effect moet hebben op de inkomsten van bedrijven, een negatief effectief op de bedrijfskosten en dat bedrijven er risico’s mee moeten kunnen mijden. Vervolgen keek Red Hat met welke technologieën het deze uitgangspunten kan realiseren.

De open source-gigant kwam uit op twee noodzakelijke componenten voor development, te weten GraalVM en HotSpot. Red Hat keek als het ware wat het kan doen om applicaties op maat te maken voor GraalVM en HotSpot. Deze technologieën worden in huidige ontwikkelprocessen ingezet voor het compileren van Java-code. Red Hat zag een potentiële verbeterslag voor deze compilatietijd (benodigde tijd voor het omzetten van ingevoerde code naar iets uitvoerbaars), zodat er ook bepaalde effecten zijn door te voeren richting de runtime (als de executable daadwerkelijk draait).

Normaliter vinden bepaalde taken plaats in de runtime van een applicatie. Deze taken worden uitgevoerd in het geheugen, wat leidt tot overmatig gebruik van memory. Het opstarten van de taken neemt ook wat tijd in beslag, waardoor het totale proces niet heel efficiënt is. Quarkus voert dit proces anders uit, door vooraf te berekenen hoeveel resources nodig zijn. Deze voorberekening zorgt ervoor dat het systeem weet wat waar nodig is en hoe de applicatie zich zal gaan gedragen, om de resources klaar te zetten tijdens de compilatietijd. Onder streep is er daardoor minder memory en disk space nodig, aangezien taken die niet nodig zijn ook niet uitgevoerd worden. In onderstaande afbeelding toont Red Hat wat Quarkus precies extra doet tijdens de opstarttijd van de applicatie.

Een ander cruciale zet voor Quarkus was het overweg kunnen met populaire standaarden en frameworks in de industrie. Hierbij kan je denken aan Hibernate, RESTEasy, Apache Camel, Apache Kafka en Prometheus. Uiteindelijk is het streven om Java efficiënt te draaien in containers, met een bijzonder focus op Kubernetes. De omvang van de Java virtual machine neemt vanwege de voorberekening af, waardoor Java-applicaties op Kubernetes sneller draaien. De compatibiliteit van Kubernetes bevordert dus het uitrolproces van de applicaties.

Effect van framework op business

De werkwijze van Quarkus heeft er volgens Hodzelmans toe geleid dat organisaties vier voordelen realiseren wanneer ze het framework in gebruik nemen. De voordelen zien er als volgt uit:

  • Er vindt een efficiëntieslag plaats. Voor een standaard traditionele service stack is 218 mb geheugen nodig en 9,5 seconde om een applicatie op te starten, terwijl Quarkus in combinatie met GraalVM 35 MB memory en 0,055 seconde vereist. Bij het oproepen van een serverless-applicatie is dat een acceptabele tijd, de netwerk latency ligt waarschijnlijk al hoger. Deze efficiëntieslag zorgt niet alleen voor een snelheidsbesparing, maar ook een kostenbesparing. Ontwikkelaars hoeven namelijk niet herschoold te worden om met een efficiëntere taal overweg te kunnen.
  • Quarkus maakt het mogelijk om een stuk code te wijzigen en direct het resultaat te zien. Sommige programmeertalen ondersteunden al een dergelijke live coding-feature, maar Java liep op dit vlak achter. Daardoor moesten ontwikkelaars soms minuten wachten om het effect van een aanpassing te zien. Met het framework is het een kwestie van code opslaan en de aanpassingen zijn doorgevoerd.
  • Het framework brengt imperative en reactive programmeren samen. Een applicatie kan dus beide programmeermanieren gebruiken, zodat de gewenste gebruikstoepassing ondersteund wordt. Imperative development is bijvoorbeeld handig wanneer ontwikkelaars vooraf zaken willen prepareren en alles stap voor stap doorlopen. Reactive programming wordt echter steeds relevanter, aangezien ontwikkelaars frequenter reageren op een event om meteen door te pakken.
  • Tot slot kan Quarkus zoals eerder aangehaald overweg met verschillende standaarden en frameworks uit de industrie. Quarkus integreert met alle gebruikelijke frameworks, verzekert Hodzelmans ons.

Community helpt bij ontwikkeling

Inmiddels bevindt Quarkus zich in een tussenperiode: de algemene 1.0-versie is in november gelanceerd, maar support van Red Hat bovenop het framework laat nog op zich wachten. Red Hat hoopt tijdens deze tussenperiode natuurlijk ook op feedback, aangezien bedrijven er al mee aan de slag kunnen en dat het idee van open source is. Vanuit de community geïnitieerde aanpassingen kunnen dan doorgevoerd worden. Hodzelmans geeft aan dat er op basis van feedback ook al nieuwe innovaties plaatvinden.

Het lijkt ons overigens logisch dat Red Hat ergens in de komende maanden met support bovenop Quarkus komt. Open source-bedrijven wachten doorgaans een aantal maanden met het toevoegen van deze extra ondersteuning, leert de ervaring.

Java geschikt voor cloud-native development

Het mag duidelijk zijn dat Java voor veel gebruikstoepassingen momenteel een zeer gewenste programmeertaal is. Toch wil je als bedrijf dat je Java-ontwikkelaars breed inzetbaar zijn. Programmeerdisciplines als serverless zijn uitgegroeid tot standaarden binnen de industrie en daar moet een ingeburgerde taal als Java mee overweg kunnen. Volgens Hodzelmans doe je er uiteindelijk zelfs het verstandigst aan om een mix te omarmen: monolithic applicaties, microservices, serverless, etc.

Vanuit die optiek is het goed om te zien dat Red Hat met Quarkus een versimpelslag realiseert die de taal relevanter maakt op bepaalde vlakken. We zijn benieuwd hoe Red Hat het framework verder gaat ontwikkelen.

Tip: Red Hat ziet zichzelf steeds meer als dé open source enabler van de hybride cloud