SlideShare a Scribd company logo
1 of 20
BOSA.be
2020-05-20
Bart Hanssens
FOD BOSA Digitale Transformatie
Java VMs
en
GraalVM
Wat is Java ?
2
3
Meer dan een programmeertaal
Gestandaardiseerde
programmeertaal
Bedacht door Sun (nu
Oracle) in 1996
Ontwikkelomgeving
(JDK)
Libraries, tools, …
Virtuele Machine +
Runtime (JRE)
Abstracte, “eenvoudige”
machine om Java
applicaties te draaien
4
Waarom een VM ?
Niet nieuw VMs bestonden al jaren
In principe makkelijker
te “porten”
Compiler is ook
eenvoudiger
“Write once, run
everywhere”
Zelfde applicatie voor
Windows/Intel,
Linux/ARM, …
5
Waarom geen VM ?
Extra complexiteit
Runtime moet geïnstalleerd worden
Duurt langer om te starten
6
Van Java code naar machine-specifieke code
7
8
Reference implementation
Open source
Basis voor Oracle, AdoptOpenJDK, Liberica
9
HotSpot VM
Java bytecode naar machine code
Optimaliseert veelgebruikte “hot” code
Twee “JIT” compiler
instellingen
Client start sneller
Server is sneller na
verloop van tijd
10
11
Overzicht
12
Een heel platform
Beschikbaar in 2 versies
Gratis “Community Edition”
Commerciële versie, extra
performantie
“Polyglot”
“Native image generator”
13
Polyglot
Python, R, Javascript… gebruiken in Java
applicatie
Makkelijk uit te breiden naar nieuwe talen
14
Native images
Vooraf omzetten naar
machine code
geen aparte VM
Gebruiken minder geheugen
Starten veel sneller
“micro-services”,
“serverless”
15
Native images: nadelen
Alweer niet echt nieuw GCJ bestaat al lang
Compileren duurt (veel) langer
Werkt niet voor alle
applicaties
Vb. Spring framework is
erg lastig
Toekomst
16
17
Project Leyden
Nieuw OpenJDK project
Specificatie voor “static
images”
Niet noodzakelijk
“native images”
18
Graal JIT compiler
Vervanger HotSpot server JIT ?
Makkelijker te
onderhouden
Geschreven in Java
19
Enkele linken
https://adoptopenjdk.net
https://www.graalvm.org
https://quarkus.io
https://www.beyondjava.net/what-about-
graalvm
BOSA.be
@BartHanssens
bart.hanssens@bosa.fgov.be
Bedankt !

More Related Content

Similar to JavaVMs en GraalVM

Nord Toelichting Techniek
Nord Toelichting TechniekNord Toelichting Techniek
Nord Toelichting Techniektjercus
 
Biz Talk 2006 Orchestration Vs Messaging
Biz Talk 2006 Orchestration Vs MessagingBiz Talk 2006 Orchestration Vs Messaging
Biz Talk 2006 Orchestration Vs MessagingSteef-Jan Wiggers
 
Jan Guldentops over Linux
Jan Guldentops over LinuxJan Guldentops over Linux
Jan Guldentops over Linux247 Invest
 
Altijd en overal_werken_en_leren
Altijd en overal_werken_en_lerenAltijd en overal_werken_en_leren
Altijd en overal_werken_en_lerensaMBO-ICT
 
Altijd en overal_werken_en_leren
Altijd en overal_werken_en_lerenAltijd en overal_werken_en_leren
Altijd en overal_werken_en_lerensaMBO-ICT
 
Versiebeheer van database changes
Versiebeheer van database changesVersiebeheer van database changes
Versiebeheer van database changesArjen van Vliet
 
Performance- en storageopitimalisatie voor VDI omgevingen
Performance- en storageopitimalisatie voor VDI omgevingenPerformance- en storageopitimalisatie voor VDI omgevingen
Performance- en storageopitimalisatie voor VDI omgevingenProact Netherlands B.V.
 
Moderne Software Engineering
Moderne Software EngineeringModerne Software Engineering
Moderne Software Engineeringguestf2fc08
 
Devnology Community Day
Devnology Community DayDevnology Community Day
Devnology Community Dayboonzaai
 
Oplijsting mogelijkheden open source
Oplijsting mogelijkheden open sourceOplijsting mogelijkheden open source
Oplijsting mogelijkheden open sourceguesta83c7d
 
oplijsting_mogelijkheden_open_source
oplijsting_mogelijkheden_open_sourceoplijsting_mogelijkheden_open_source
oplijsting_mogelijkheden_open_sourceguesta83c7d
 

Similar to JavaVMs en GraalVM (20)

Nord Toelichting Techniek
Nord Toelichting TechniekNord Toelichting Techniek
Nord Toelichting Techniek
 
WSO2 Mashup Server
WSO2 Mashup ServerWSO2 Mashup Server
WSO2 Mashup Server
 
VDI & Storage
VDI & StorageVDI & Storage
VDI & Storage
 
Bs 2 les 20110409
Bs 2   les 20110409 Bs 2   les 20110409
Bs 2 les 20110409
 
Android
AndroidAndroid
Android
 
About Node.js
About Node.jsAbout Node.js
About Node.js
 
BiMserver
BiMserverBiMserver
BiMserver
 
Software anno 2009
Software anno 2009Software anno 2009
Software anno 2009
 
Biz Talk 2006 Orchestration Vs Messaging
Biz Talk 2006 Orchestration Vs MessagingBiz Talk 2006 Orchestration Vs Messaging
Biz Talk 2006 Orchestration Vs Messaging
 
Ict Bijscholing
Ict BijscholingIct Bijscholing
Ict Bijscholing
 
Jan Guldentops over Linux
Jan Guldentops over LinuxJan Guldentops over Linux
Jan Guldentops over Linux
 
Altijd en overal_werken_en_leren
Altijd en overal_werken_en_lerenAltijd en overal_werken_en_leren
Altijd en overal_werken_en_leren
 
Altijd en overal_werken_en_leren
Altijd en overal_werken_en_lerenAltijd en overal_werken_en_leren
Altijd en overal_werken_en_leren
 
Versiebeheer van database changes
Versiebeheer van database changesVersiebeheer van database changes
Versiebeheer van database changes
 
VDI CHDR
VDI CHDRVDI CHDR
VDI CHDR
 
Performance- en storageopitimalisatie voor VDI omgevingen
Performance- en storageopitimalisatie voor VDI omgevingenPerformance- en storageopitimalisatie voor VDI omgevingen
Performance- en storageopitimalisatie voor VDI omgevingen
 
Moderne Software Engineering
Moderne Software EngineeringModerne Software Engineering
Moderne Software Engineering
 
Devnology Community Day
Devnology Community DayDevnology Community Day
Devnology Community Day
 
Oplijsting mogelijkheden open source
Oplijsting mogelijkheden open sourceOplijsting mogelijkheden open source
Oplijsting mogelijkheden open source
 
oplijsting_mogelijkheden_open_source
oplijsting_mogelijkheden_open_sourceoplijsting_mogelijkheden_open_source
oplijsting_mogelijkheden_open_source
 

More from Bart Hanssens

OpenFed, a Drupal distribution
OpenFed, a Drupal distributionOpenFed, a Drupal distribution
OpenFed, a Drupal distributionBart Hanssens
 
Open Summer of Code in Belgium
Open Summer of Code in BelgiumOpen Summer of Code in Belgium
Open Summer of Code in BelgiumBart Hanssens
 
Open Belgium 2022: Prepare To Code
Open Belgium 2022: Prepare To CodeOpen Belgium 2022: Prepare To Code
Open Belgium 2022: Prepare To CodeBart Hanssens
 
Werkgroep metadata: INSPIRE - DCAT-AP mapping
Werkgroep metadata: INSPIRE - DCAT-AP mappingWerkgroep metadata: INSPIRE - DCAT-AP mapping
Werkgroep metadata: INSPIRE - DCAT-AP mappingBart Hanssens
 
Quarkus, Jib én OpenJ9
Quarkus, Jib én OpenJ9Quarkus, Jib én OpenJ9
Quarkus, Jib én OpenJ9Bart Hanssens
 
Open Data at the Federal Level 2021
Open Data at the Federal Level 2021Open Data at the Federal Level 2021
Open Data at the Federal Level 2021Bart Hanssens
 
Open Data workshop Agoria ICT
Open Data workshop Agoria ICTOpen Data workshop Agoria ICT
Open Data workshop Agoria ICTBart Hanssens
 
Atelier Open Data / Agoria ICT
Atelier Open Data / Agoria ICTAtelier Open Data / Agoria ICT
Atelier Open Data / Agoria ICTBart Hanssens
 
Open Source and Open Data
Open Source and Open DataOpen Source and Open Data
Open Source and Open DataBart Hanssens
 
Open Community Projects
Open Community ProjectsOpen Community Projects
Open Community ProjectsBart Hanssens
 
From webform to API using microframeworks
From webform to API using microframeworksFrom webform to API using microframeworks
From webform to API using microframeworksBart Hanssens
 
Linked Data: Introductie
Linked Data: IntroductieLinked Data: Introductie
Linked Data: IntroductieBart Hanssens
 
Open data, what's cooking at the federal level 2020
Open data, what's cooking at the federal level 2020Open data, what's cooking at the federal level 2020
Open data, what's cooking at the federal level 2020Bart Hanssens
 
BOSA DG DT: opendata et intégrateur de services
BOSA DG DT: opendata et intégrateur de servicesBOSA DG DT: opendata et intégrateur de services
BOSA DG DT: opendata et intégrateur de servicesBart Hanssens
 
Local and Regional digital transformation in Belgium
Local and Regional digital transformation in BelgiumLocal and Regional digital transformation in Belgium
Local and Regional digital transformation in BelgiumBart Hanssens
 
Voordeel halen uit zoekmachines en semantic web
Voordeel halen uit zoekmachines en semantic webVoordeel halen uit zoekmachines en semantic web
Voordeel halen uit zoekmachines en semantic webBart Hanssens
 
Presentatie data.gov.be
Presentatie data.gov.bePresentatie data.gov.be
Presentatie data.gov.beBart Hanssens
 

More from Bart Hanssens (20)

OpenFed, a Drupal distribution
OpenFed, a Drupal distributionOpenFed, a Drupal distribution
OpenFed, a Drupal distribution
 
Open Summer of Code in Belgium
Open Summer of Code in BelgiumOpen Summer of Code in Belgium
Open Summer of Code in Belgium
 
Open Belgium 2022: Prepare To Code
Open Belgium 2022: Prepare To CodeOpen Belgium 2022: Prepare To Code
Open Belgium 2022: Prepare To Code
 
Werkgroep metadata: INSPIRE - DCAT-AP mapping
Werkgroep metadata: INSPIRE - DCAT-AP mappingWerkgroep metadata: INSPIRE - DCAT-AP mapping
Werkgroep metadata: INSPIRE - DCAT-AP mapping
 
Overzicht DCAT-AP
Overzicht DCAT-APOverzicht DCAT-AP
Overzicht DCAT-AP
 
Quarkus, Jib én OpenJ9
Quarkus, Jib én OpenJ9Quarkus, Jib én OpenJ9
Quarkus, Jib én OpenJ9
 
Open Data at the Federal Level 2021
Open Data at the Federal Level 2021Open Data at the Federal Level 2021
Open Data at the Federal Level 2021
 
Open Data workshop Agoria ICT
Open Data workshop Agoria ICTOpen Data workshop Agoria ICT
Open Data workshop Agoria ICT
 
Atelier Open Data / Agoria ICT
Atelier Open Data / Agoria ICTAtelier Open Data / Agoria ICT
Atelier Open Data / Agoria ICT
 
Open Source and Open Data
Open Source and Open DataOpen Source and Open Data
Open Source and Open Data
 
Données ouvertes
Données ouvertesDonnées ouvertes
Données ouvertes
 
Open Data
Open DataOpen Data
Open Data
 
Open Community Projects
Open Community ProjectsOpen Community Projects
Open Community Projects
 
From webform to API using microframeworks
From webform to API using microframeworksFrom webform to API using microframeworks
From webform to API using microframeworks
 
Linked Data: Introductie
Linked Data: IntroductieLinked Data: Introductie
Linked Data: Introductie
 
Open data, what's cooking at the federal level 2020
Open data, what's cooking at the federal level 2020Open data, what's cooking at the federal level 2020
Open data, what's cooking at the federal level 2020
 
BOSA DG DT: opendata et intégrateur de services
BOSA DG DT: opendata et intégrateur de servicesBOSA DG DT: opendata et intégrateur de services
BOSA DG DT: opendata et intégrateur de services
 
Local and Regional digital transformation in Belgium
Local and Regional digital transformation in BelgiumLocal and Regional digital transformation in Belgium
Local and Regional digital transformation in Belgium
 
Voordeel halen uit zoekmachines en semantic web
Voordeel halen uit zoekmachines en semantic webVoordeel halen uit zoekmachines en semantic web
Voordeel halen uit zoekmachines en semantic web
 
Presentatie data.gov.be
Presentatie data.gov.bePresentatie data.gov.be
Presentatie data.gov.be
 

JavaVMs en GraalVM

Editor's Notes

  1. Hallo, mijn naam is Bart Hanssens en ik werk bij de FOD BOSA DG DT Deze infosessie gaat over Java Virtual Machines - VM - en de nieuwe GraalVM.
  2. Maar wat is Java nu precies ?
  3. Java is niet alleen een gestandaardiseerde programmeertaal, Java is ook een complete development kit: een ontwikkelomgeving met een hele reeks libraries en tools zodat programmeurs meteen aan de slag kunnen gaan. Java code draait niet rechtstreeks op een PC maar in een "virtual machine". Dit is een erg abstracte en eenvoudige machine, die op verschillende systemen en platformen kan draaien. Hiervoor is geen JDK nodig, maar een kleinere runtime de Java Runtime Environment.
  4. Sun Microsystems (nu Oracle) heeft Java bedacht in 1996. Een VM was toen niets nieuws, dat bestond al in de jaren 70. Waarom dan zo'n VM gebruiken ? In principe is het makkelijker om Java te implementeren op verscheidene systemen. Daarvoor moet niet de hele JDK, maar enkel de kleinere runtime overgezet kunnen worden. De code kan dan ongewijzigd draaien op allerlei systemen. Dezelfde applicatie draait dus - ongewijzigd - op Windows met Intel processor, of Linux systeem op een ARM CPU: "Write once, run everywhere"
  5. Het is geen perfecte oplossing. De runtime is gratis, maar moet wel geinstalleerd worden. Het opstarten van deze machine neemt ook wat tijd in beslag. Misschien enkele seconden, maar dat kan al hinderlijk zijn. En na het opstarten draait de applicatie vaak wat trager dan machine-specifieke code.
  6. In dit schema zien we het proces in werking. Een programmeur schrijft code. De compiler van de JDK zet de code om naar zogenaamde bytecode. Deze bytecode draait ongewijzigd in de runtime op Windows, Linux, Mac enzovoort. De runtime zelf, weet eigenlijk niets van Java. Ook andere talen kunnen naar bytecode omgezet worden, als er maar een compiler is. Dit is bijvoorbeeld het gevallen voor Scala, Groovy en Kotlin.
  7. OpenJDK is een populaire JDK.
  8. Sinds enkele jaren is dit de "reference implementation". Zoals gezegd is Java een gestandaardiseerde taal, maar omdat niet alles in detail beschreven kan worden, is deze open source versie de bijkomende maatstaf: bij twijfel over de specificatie, is de werkwijze van OpenJDK de "juiste" manier. Andere producten, zoals AdoptOpenJDK en Liberica gebruiken OpenJDK als basis, maar zijn 100% compatibel.
  9. OpenJDK gebruikt HotSpot VM, die een compiler bevat. Deze compiler optimaliseert veelgebruikte of "hot" code. Dit gebeurt niet vooraf, maar op het moment dat de code wordt uitgevoerd, vandaar de naam "Just in Time". Dit kan op twee manieren: "client" en "server" De "client"-mode optimaliseert de opstarttijd en probeert minder geheugen te gebruiken, wat deels ten koste gaat van de snelheid van de applicatie. De "server"-mode optimaliseert voor snelheid, maar kan meer geheugen verbruiken en start ook iets trager. Vroeger moest men ofwel de ene ofwel de andere manier kiezen, tegenwoordig worden ze automatisch gecombineerd.
  10. En nu is er dus GraalVM.
  11. GraalVM is een project dat al heel wat jaren bestaat, maar nu is het een ondersteund product. De naam is wat misleidend, want het meer dan alleen een VM, het is eigenlijk een heel platform. Bedoeling is om een hele reeks modulaires tools te maken, die bruikbaar zijn voor meerdere programmeertalen.
  12. GraalVM bestaat in 2 versies: een gratis "community" edition, en een betalende versie. De betalende versie is wat sneller, en heeft extra functionaliteiten. Met beide versies is het mogelijk om "polyglot" applicaties te bouwen en "native images" te genereren.
  13. Een polyglot applicatie bevat code van andere talen Zo kan bijvoorbeeld een Java applicatie een stuk Python of Javascript uitvoeren.
  14. Daarnaast kan GraalVM - in bepaalde gevallen - native executables maken. Dit zijn gewone applicaties die zonder aparte runtime draaien, en waar de Java bytecode wel vooraf naar machine code omgezet moet worden. Native images bevatten intern nog een sterk afgeslankte VM, SubstrateVM genaamd, om geheugenbeheer te doen. Hierdoor starten applicaties een stuk sneller, en gebruiken ze ook minder geheugen. Dit is vooral belangrijk voor "micro-services" en "serverless" applicaties, die vaak met tientallen of zelfs honderden tegelijk draaien in de cloud.
  15. Dit is wederom niet nieuw. Voordien was er ook al een gratis compiler, GCJ, maar deze werd zelden gebruikt. Het werkt ook niet voor alle soorten Java applicaties. Bijvoorbeeld applicaties gemaakt met het "Spring" platform, kunnen vaak niet "native" worden, omdat ze heel dynamisch zijn: tijdens het draaien kunnen stukken code geladen worden, die bij het starten nog niet gekend zijn, wat het maken van native images moeilijk maakt. Hier wordt echter aan gewerkt, en bij elke versie zijn er meer mogelijkheden. Een ander nadeel is dat het compileren naar native images - eenmalig - extra tijd neemt.
  16. Toch zit er toekomst in.
  17. Binnen de Java community werd "project Leyden" opgestart, met als doel om "static images" te standardiseren. Static images zijn applicaties zonder de eerder vernoemde "dynamische" eigenschappen. Dit moeten dan niet per se "native images" te zijn, het is ook nuttig om applicaties te optimaliseren en verder te beveiligen. Er zijn ook steeds meer frameworks - zoals Quarkus en Micronaut - die wel gemakkelijk als native image draaien.
  18. Voor alle duidelijkheid: de Graal compiler kan ook zonder native images gebruikt worden. Bijvoorbeeld ter vervanging van de huidige Hotspot JIT server compiler. Dit is een experimentele functie vanaf JDK versie 9, en heeft als voordeel dat de Graal compiler zelf in Java is geschreven, in plaats van in C++ (zoals de Hotspot compiler), wat het makkelijker maakt om de code te onderhouden en verder te ontwikkelen.
  19. Tot slot nog enkele linken.
  20. En bedankt om deze infosessie te volgen.