Graal VM & Ahead of Time Compilation
In een cloud omgeving zijn de vereisten die aan software gesteld worden anders dan wanneer je op eigen hardware draait, wat meestal betekent dat je betaalt voor resourcegebruik zoals geheugen, schijfruimte en CPU. Hiervoor zijn serverless functies uitermate geschikt, aangezien ze klein, lichtgewicht en schaalbaar zijn. Met name voor serverless functies is een korte opstarttijd van belang. Java applicaties scoren echter over het algemeen niet goed op deze punten in vergeleking met bijvoorbeeld Python of Go(lang). Met de hulp van GraalVM is het nu mogelijk om bepaalde Java code ahead-of-time te compileren in plaats van just-in-time, waardoor Java weer kan concurreren in een serverless omgeving.
Quarkus – Java microservice framework
Een Java microservice framework dat specifiek is geschreven om van native compilatie te profiteren is het door Red Hat (IBM) gesponsorde Quarkus - Supersonic Subatomic Java! Quarkus omvat verscheidene extensies met libraries die bekende APIs implementeren zoals JAX-RS, JAX-B, JDBC, Vert.x, Camel, Netty en Hibernate. Voor het draaien op Kubernetes en in de cloud als serverless functie of als AWS Lambda biedt Quarkus allerlei mogelijkheden. Met behulp van deze extensies wordt het produceren van Microservice code eenvoudig om zo optimaal van cloud resources gebruik te kunnen maken. Ontwikkelaarsvreugde staat hoog in het vaandel bij Quarkus en dat is te merken aan diverse gemakken, zoals de mogelijkheid snel te itereren wat snel inzicht biedt in je code wijzigingen of alle configuratie in één enkel bestand. Dit zal je ook zelf ervaren tijdens de workshop.
Tijdens deze avond gaan we kijken naar en vooral aan de slag met Graal VM. Je gaat leren:
- wat AOT compilatie met GraalVM precies inhoudt
- wat de voorwaarden zijn om AOT compilatie toe te kunnen passen
- hoe je AOT compilatie kan toepassen om je eigen Java applicaties klein en snel startend te maken - geschikt voor Serverless deployment
- wat de voor en nadelen zijn van gebruik van AOT compilatie