SlideShare una empresa de Scribd logo
1 de 23
Descargar para leer sin conexión
GraalVM: Aplicaciones nativas AOT para los lenguajes de la
JVM
Víctor Orozco
13 de abril de 2021
Nabenik
1
GraalVM
¿Que es GraalVM
• Maquina virtual políglota por Oracle Labs
• JVM Langs, Truffle, LLVM
• Escrita en Java
• Open Source y Enterprise Edition
2
Figura 1: GraalVM Overview
3
GraalVM
Puntos a resaltar
1. TCK’d JDK
2. Compilador JIT
3. Java Native Image
4. Polyglot VM
4
TCK’d JDK
https://blogs.oracle.com/java/ways-graalvme-adds-value-to-java-se-subscription
5
GraalVM como JIT
https://www.constellationr.com/research/how-oracle-graalvm-supercharged-twitter-s-microservices-platform 6
Imagenes nativas
Java Virtual Machine
• Thread scheduling, gestión de memoria
• JVM se desarrolló en los 90’s y 2000 como un entorno con compilación JIT
(C2)
• Peak performance
• Detección de hotspots
7
https://greenlab.di.uminho.pt/wp-content/uploads/2017/10/sleFinal.pdf 8
GraalVM Native
https://www.graalvm.org/reference-manual/native-image/
9
GraalVM Native
Compilación AOT - Wikipedia
En informática, Compilación anticipada es el acto de compilar un lenguaje de
programación de alto nivel como C o C++, o un lenguaje intermedio como Java
bytecode o el Common Intermediate Language de .NET, a un código de máquina
nativo con la intención de ejecutar el archivo binario resultante nativamente
10
GraalVM Native
Static Linking - Indiana University
El enlace estático es el resultado de que el enlazador copia todas las rutinas de la
biblioteca utilizadas en el programa en la imagen ejecutable. Esto puede requerir
más espacio en disco y memoria que la vinculación dinámica, pero es más rápido
y más portátil, ya que no requiere la presencia de la biblioteca en el sistema donde
se ejecuta.
11
GraalVM Native
GraalVM Native
GraalVM Native es una tecnología de compilación AOT de bytecode Java. Permite
crear un ejecutable con static linking que incluye clases, bibliotecas y los
modulos necesarios del JDK junto a SubstrateVM
12
Algunas otras implementaciones Bytecode AOT
• ExcelsiorJET
• GNU Compiler for Java
• ART (Android)
• IBM OpenJ9
13
GraalVM Native
14
GraalVM Native
15
Demo 1
• Proyecto Java 11
• Maven
• El hola mundo más rapido del oeste
16
Demo 2
• kservice-a: Kotlin 1.4, MicroProfile, Oracle Helidon
• jservice-b: Java 11, MicroProfile, Red Hat Quarkus
• Kubernetes
• Docker
17
Consideraciones finales
Consideraciones finales
Ventajas
• Compilación AOT
• Menor consumo
de memoria
• Menor tiempo de
arranque
• Casos útiles: CLI,
Aplicaciones de
escritorio,
Serverless, K8S
Desventajas
• Menor desempeño a largo
plazo
• Reflection, dynamic proxies,
invoke, bytecode generation
• Muchos frameworks y
bibliotecas nunca serán
compatibles
• Un buen servidor CI/CD
• A veces threads > procesos
(Vert.x)
18
Threads vs procesos
https://www.techempower.com/benchmarks/#section=data-r20
19
https://dzone.com/articles/introduction-to-reflectionless-know-what-the-new-t
20
Víctor Orozco
• vorozco@nabenik.com
• @tuxtor
• http://vorozco.com
• http://tuxtor.shekalug.org
This work is licensed under
Creative Commons Attribution-
NonCommercial-ShareAlike 3.0
Guatemala (CC BY-NC-SA 3.0 GT).
21

Más contenido relacionado

La actualidad más candente

Docker como la máxima expresión de Devops - WISIT 2015
Docker como la máxima expresión de Devops - WISIT 2015Docker como la máxima expresión de Devops - WISIT 2015
Docker como la máxima expresión de Devops - WISIT 2015
Gustavo Andres Brey
 

La actualidad más candente (20)

Actualizando aplicaciones empresariales en Java desde Java 8 on premise hasta...
Actualizando aplicaciones empresariales en Java desde Java 8 on premise hasta...Actualizando aplicaciones empresariales en Java desde Java 8 on premise hasta...
Actualizando aplicaciones empresariales en Java desde Java 8 on premise hasta...
 
Introducción a Kotlin para desarrolladores Java
Introducción a Kotlin para desarrolladores JavaIntroducción a Kotlin para desarrolladores Java
Introducción a Kotlin para desarrolladores Java
 
Introducción a Kubernetes
Introducción a KubernetesIntroducción a Kubernetes
Introducción a Kubernetes
 
Seguridad de aplicaciones Java/JakartaEE con OWASP Top 10
Seguridad de aplicaciones Java/JakartaEE con OWASP Top 10Seguridad de aplicaciones Java/JakartaEE con OWASP Top 10
Seguridad de aplicaciones Java/JakartaEE con OWASP Top 10
 
Microservicios funcionales con Java 8, Java EE y Payara Micro
Microservicios funcionales con Java 8, Java EE y Payara MicroMicroservicios funcionales con Java 8, Java EE y Payara Micro
Microservicios funcionales con Java 8, Java EE y Payara Micro
 
Docker como la máxima expresión de Devops - WISIT 2015
Docker como la máxima expresión de Devops - WISIT 2015Docker como la máxima expresión de Devops - WISIT 2015
Docker como la máxima expresión de Devops - WISIT 2015
 
Java EE, Microprofile y Payara Micro
Java EE, Microprofile y Payara MicroJava EE, Microprofile y Payara Micro
Java EE, Microprofile y Payara Micro
 
Kubernetes technical overview and our experience at Restorando :: Buenos Aire...
Kubernetes technical overview and our experience at Restorando :: Buenos Aire...Kubernetes technical overview and our experience at Restorando :: Buenos Aire...
Kubernetes technical overview and our experience at Restorando :: Buenos Aire...
 
Cloud Native Mexico - Introducción a Kubernetes
Cloud Native Mexico - Introducción a KubernetesCloud Native Mexico - Introducción a Kubernetes
Cloud Native Mexico - Introducción a Kubernetes
 
Presentación Docker
Presentación DockerPresentación Docker
Presentación Docker
 
OpenNebulaConf 2016 - Fast Prototyping of a C.O. into a Micro Data Center - A...
OpenNebulaConf 2016 - Fast Prototyping of a C.O. into a Micro Data Center - A...OpenNebulaConf 2016 - Fast Prototyping of a C.O. into a Micro Data Center - A...
OpenNebulaConf 2016 - Fast Prototyping of a C.O. into a Micro Data Center - A...
 
Docker meetup :: Kubernetes en Restorando
Docker meetup :: Kubernetes en RestorandoDocker meetup :: Kubernetes en Restorando
Docker meetup :: Kubernetes en Restorando
 
Kubernetes - Container Orchestration, Deployment and Scaling
Kubernetes - Container Orchestration, Deployment and ScalingKubernetes - Container Orchestration, Deployment and Scaling
Kubernetes - Container Orchestration, Deployment and Scaling
 
Kubernetes - #dockerconlima
Kubernetes  - #dockerconlimaKubernetes  - #dockerconlima
Kubernetes - #dockerconlima
 
Despliegue de aplicaciones Java con Docker y Kubernetes
Despliegue de aplicaciones Java con Docker y KubernetesDespliegue de aplicaciones Java con Docker y Kubernetes
Despliegue de aplicaciones Java con Docker y Kubernetes
 
Presentación Docker
Presentación DockerPresentación Docker
Presentación Docker
 
ONE Xperience at Facultat d'Informàtica de Barcelona
ONE Xperience at Facultat d'Informàtica de BarcelonaONE Xperience at Facultat d'Informàtica de Barcelona
ONE Xperience at Facultat d'Informàtica de Barcelona
 
Fury - Docker Meetup
Fury - Docker MeetupFury - Docker Meetup
Fury - Docker Meetup
 
Docker introducción - Flisol 2015 Huancayo
Docker introducción - Flisol 2015 HuancayoDocker introducción - Flisol 2015 Huancayo
Docker introducción - Flisol 2015 Huancayo
 
Docker y todo eso... más o menos
Docker y todo eso... más o menosDocker y todo eso... más o menos
Docker y todo eso... más o menos
 

Similar a Introducción a GraalVM Native para aplicaciones JVM

Similar a Introducción a GraalVM Native para aplicaciones JVM (20)

1.introduccion java
1.introduccion java1.introduccion java
1.introduccion java
 
GraalVM - MálagaJUG 2018-11-29
GraalVM - MálagaJUG 2018-11-29GraalVM - MálagaJUG 2018-11-29
GraalVM - MálagaJUG 2018-11-29
 
Introduccion Java.ppt
Introduccion Java.pptIntroduccion Java.ppt
Introduccion Java.ppt
 
Lenguajes Dinámicos en la Java Virtual Machine
Lenguajes Dinámicos en la Java Virtual MachineLenguajes Dinámicos en la Java Virtual Machine
Lenguajes Dinámicos en la Java Virtual Machine
 
Dynamic jvm
Dynamic jvmDynamic jvm
Dynamic jvm
 
Kotlin: El despertar de la fuerza!
Kotlin: El despertar de la fuerza!Kotlin: El despertar de la fuerza!
Kotlin: El despertar de la fuerza!
 
Java mission control para monitoreo, administración y profilig de aplicacion...
Java mission control para monitoreo, administración y profilig de aplicacion...Java mission control para monitoreo, administración y profilig de aplicacion...
Java mission control para monitoreo, administración y profilig de aplicacion...
 
El camino de Java a Kubernetes
El camino de Java a KubernetesEl camino de Java a Kubernetes
El camino de Java a Kubernetes
 
Lenguaje Java
Lenguaje JavaLenguaje Java
Lenguaje Java
 
Docker: la revolución en virtualización
Docker: la revolución en virtualizaciónDocker: la revolución en virtualización
Docker: la revolución en virtualización
 
Lenguaje java
Lenguaje javaLenguaje java
Lenguaje java
 
Queesjava 1230140667149082-2
Queesjava 1230140667149082-2Queesjava 1230140667149082-2
Queesjava 1230140667149082-2
 
Java
JavaJava
Java
 
Dev Tools para Kubernetes - Codemotion 2019
Dev Tools para Kubernetes - Codemotion 2019Dev Tools para Kubernetes - Codemotion 2019
Dev Tools para Kubernetes - Codemotion 2019
 
Herramientas y plugins para el desarrollo de aplicaciones cloud native para K...
Herramientas y plugins para el desarrollo de aplicaciones cloud native para K...Herramientas y plugins para el desarrollo de aplicaciones cloud native para K...
Herramientas y plugins para el desarrollo de aplicaciones cloud native para K...
 
La nube, tu app y tu
La nube, tu app y tuLa nube, tu app y tu
La nube, tu app y tu
 
ATICA DevOps
ATICA DevOpsATICA DevOps
ATICA DevOps
 
Introduccion Java
Introduccion JavaIntroduccion Java
Introduccion Java
 
Taller Grails
Taller GrailsTaller Grails
Taller Grails
 
Taller de Grails
Taller de GrailsTaller de Grails
Taller de Grails
 

Más de Víctor Leonel Orozco López

Más de Víctor Leonel Orozco López (19)

Introducción al análisis de datos
Introducción al análisis de datosIntroducción al análisis de datos
Introducción al análisis de datos
 
From traditional to GitOps
From traditional to GitOpsFrom traditional to GitOps
From traditional to GitOps
 
De Java 8 a Java 17
De Java 8 a Java 17De Java 8 a Java 17
De Java 8 a Java 17
 
Bootstraping real world Jakarta EE/MicroProfile microservices with Maven Arch...
Bootstraping real world Jakarta EE/MicroProfile microservices with Maven Arch...Bootstraping real world Jakarta EE/MicroProfile microservices with Maven Arch...
Bootstraping real world Jakarta EE/MicroProfile microservices with Maven Arch...
 
Design Patterns para Microsserviços com MicroProfile
 Design Patterns para Microsserviços com MicroProfile Design Patterns para Microsserviços com MicroProfile
Design Patterns para Microsserviços com MicroProfile
 
MicroProfile benefits for your monolithic applications
MicroProfile benefits for your monolithic applicationsMicroProfile benefits for your monolithic applications
MicroProfile benefits for your monolithic applications
 
Consejos y el camino del desarrollador de software
Consejos y el camino del desarrollador de softwareConsejos y el camino del desarrollador de software
Consejos y el camino del desarrollador de software
 
De Java 8 ate Java 14
De Java 8 ate Java 14De Java 8 ate Java 14
De Java 8 ate Java 14
 
Programación con ECMA6 y TypeScript
Programación con ECMA6 y TypeScriptProgramación con ECMA6 y TypeScript
Programación con ECMA6 y TypeScript
 
De Java 8 a Java 11 y 14
De Java 8 a Java 11 y 14De Java 8 a Java 11 y 14
De Java 8 a Java 11 y 14
 
MicroProfile benefits for monolitic applications
MicroProfile benefits for monolitic applicationsMicroProfile benefits for monolitic applications
MicroProfile benefits for monolitic applications
 
Kotlin+MicroProfile: Enseñando trucos de 20 años a un nuevo lenguaje
Kotlin+MicroProfile: Enseñando trucos de 20 años a un nuevo lenguajeKotlin+MicroProfile: Enseñando trucos de 20 años a un nuevo lenguaje
Kotlin+MicroProfile: Enseñando trucos de 20 años a un nuevo lenguaje
 
Kotlin+MicroProfile: Ensinando 20 anos para uma linguagem nova
Kotlin+MicroProfile: Ensinando 20 anos para uma linguagem novaKotlin+MicroProfile: Ensinando 20 anos para uma linguagem nova
Kotlin+MicroProfile: Ensinando 20 anos para uma linguagem nova
 
Eclipse MicroProfile para el desarrollador ocupado
Eclipse MicroProfile para el desarrollador ocupadoEclipse MicroProfile para el desarrollador ocupado
Eclipse MicroProfile para el desarrollador ocupado
 
Eclipse MicroProfile para o desenvolvedor ocupado
Eclipse MicroProfile para o desenvolvedor ocupadoEclipse MicroProfile para o desenvolvedor ocupado
Eclipse MicroProfile para o desenvolvedor ocupado
 
Eclipse MicroProfile metrics: Practical use cases
Eclipse MicroProfile metrics: Practical use casesEclipse MicroProfile metrics: Practical use cases
Eclipse MicroProfile metrics: Practical use cases
 
Microservicios con Jakarta EE y Eclipse MicroProfile
Microservicios con Jakarta EE y Eclipse MicroProfileMicroservicios con Jakarta EE y Eclipse MicroProfile
Microservicios con Jakarta EE y Eclipse MicroProfile
 
Introducción a JakartaEE 8
Introducción a JakartaEE 8Introducción a JakartaEE 8
Introducción a JakartaEE 8
 
OWASP Top 10 101 en Java EE
OWASP Top 10 101 en Java EEOWASP Top 10 101 en Java EE
OWASP Top 10 101 en Java EE
 

Último

redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
nicho110
 

Último (12)

EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
 
redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
investigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIinvestigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXI
 
Buenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxBuenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptx
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 

Introducción a GraalVM Native para aplicaciones JVM