Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

GraalVM : les applications natives en Java #22

Closed
swallez opened this issue Nov 28, 2018 · 29 comments
Closed

GraalVM : les applications natives en Java #22

swallez opened this issue Nov 28, 2018 · 29 comments
Labels
Language Java, Kotlin, Scala, Clojure, Eta, etc. Also non-JVM langs, but not JavaScript

Comments

@swallez
Copy link
Member

swallez commented Nov 28, 2018

Sujet de votre conférence

GraalVM : les applications natives en Java

Le speaker

Sylvain Wallez, Tech lead, Elastic

Description de votre conférence

GraalVM est une JVM nouvelle génération qui a plusieurs aspects intéressants :

  • elle est "polyglotte" et permet de faire tourner du Java/Kotlin/Scala (classique) mais aussi du R, JavaScript, Ruby ou Python (moins classique)
  • elle permet de faire de la compilation "ahead of time" et produire un exécutable natif minimaliste qui peut être déployé facilement.

La présentation montrera les différentes capacités de GraalVM et comment la compilation native permet de répondre aux contraintes des applications "cloud-native", catégorie qui regroupe les micro-services, le serverless, les containers (et side-cars), etc.

Informations diverses

  • Thème, label : JVM
  • Niveau de difficulté (débutant|confirmé) : débutant
  • Durée : 45 min
  • Format (slides, live-coding, les deux): Slides + démo
  • Dispo ou indispo (après mars, dès que possible, pas entre X et Y): dispo
@arnaudbos arnaudbos added the Language Java, Kotlin, Scala, Clojure, Eta, etc. Also non-JVM langs, but not JavaScript label Dec 12, 2018
@arnaudbos
Copy link
Member

Ça te dirais de faire ça en avril ? J'ai pas encore de date fixe à te proposer.
C'est cette propal qui as reçu le plus de 👍 pour le moment, donc ce serait cool de la programmer dans pas trop longtemps mais les soirées de février et mars sont déjà bookées.

@arnaudbos
Copy link
Member

Je te propose le jeudi 4 ou le mardi 9 avril. Tiens moi au courant :)

@swallez
Copy link
Member Author

swallez commented Jan 17, 2019

Hmm... Il y a eu du nouveau sur la dispo : c'est la semaine avant Devoxx. Si mon talk est accepté, je serai en phase de stress montant pour la préparation...

Et en mai, je serai en déplacement du 6 au 17 mai.

Mais avoir le plus de 👍 avec 4 votes, IMHO ça nécessite de faire un appel aux votants sur la liste du JUG histoire d'avoir un panel plus large !

@arnaudbos
Copy link
Member

Je sais pas ce que tu as proposé à Devoxx mais c'est justement parce que c'est la semaine juste avant qu'Igor a proposé le sien au JUG, pour répéter. Mais ça a l'air chaud côté dispo de ton côté donc pas de soucis on peut le programmer une prochaine fois, j'ai le temps de trouver autre chose pour compléter la soirée d'avril 😉

Sinon je pense pas qu'on aura beaucoup de 👍, même le GDG qui brasse des foules à chaque soirée en a seulement 7 sur ses talks les mieux notés...

@jzanon
Copy link

jzanon commented Apr 18, 2019

Avec la hype autour de Quarkus.io je pense que ce sujet est pourrait intéresser du monde.

@arnaudbos
Copy link
Member

On est à 9 👍, pour moi ça veut dire qu'on peut le programmer.
En ce qui me concerne pour septembre j'hésite entre celui-ci, celui sur le GC et le Rust (par @magnet). @swallez faut que tu nous dises si tu serais dispo en septembre, et lequel tu préférerais faire GraalVM ou War story ?

On pourra pas faire le Rust la même soirée, il faut un truc plus court, mais par contre si Sylvain n'est pas dispo on peut essayer de le caser avec autre chose (de très court).

@swallez
Copy link
Member Author

swallez commented Apr 19, 2019

Dispo en septembre ! Et après quelques discussions à DevoxxFR, il semble que GraalVM intéresse plus que la war story sur le GC. Pas vrai @davinkevin ? 😉

@davinkevin
Copy link
Member

Je suis peut être pas représentatif, mais il est vrai que le fonctionnement sous-jacent de GraalVM m’intéresse et que je voie que cela est en train de chambouler l’état du monde Java/JVM

@pgillet
Copy link

pgillet commented Aug 23, 2019

Hello @swallez, j'ai également un sujet sur GraalVM que j'essaie de pousser en parallèle dans des conférences (je n'ai rien de prêt pour l'instant!). Outre les aspects performances, je suis particulièrement intéressé par le côté polyglotte de GraalVM. Mon sujet tel que je le propose:


“Cette librairie n'est pas disponible dans mon langage de programmation. Je dois la réécrire."

"Ce langage conviendrait parfaitement à mon problème, mais nous ne pouvons pas l'exécuter dans notre environnement."

"Ce problème est déjà résolu dans tel ou tel langage, mais ce langage est trop lent."

Début 2019, Oracle enchaîne les Release Candidates pour la version 1.0 de GraalVM, une extension de la JVM HotSpot.
Le 1er objectif de GraalVM est d'améliorer les performances des langages JVM tels que Groovy, Scala ou Kotlin pour égaler les performances des langages natifs.😛

Le 2ème objectif de GraalVM est d'offrir un runtime partagé pour exécuter des langages invités: JavaScript et Node.js, C, C++, Rust, Ruby, R et Python sont tous de la partie!😲

L'autre grand objectif de GraalVM est de mélanger librement tous ces langages dans des applications multi-langages ou polyglottes: imaginez une application dont le code source mêle le Java, le JavaScript, le Python, et le Rust!🤯
GraalVM fournit un moyen de passer des valeurs de variables d'un langage à l'autre, sans copie ou encapsulation comme dans d'autres systèmes. GraalVM permet donc aux développeurs de choisir librement le bon langage pour la tâche à résoudre, sans faire de compromis sur les performances.

Dans cette présentation, nous allons étudier les mécanismes de GraalVM permettant des applications polyglottes. Nous présenterons également Truffle, un outil associé à GraalVM pour écrire son propre langage.

Et bien sûr nous écrirons, en live, une application multi-langages!


Bien sûr, je ne veux pas faire doublon avec toi: je proposerai mon sujet ici que si tu n'as pas le temps, plus l'envie, etc.
Qu'en penses-tu?

Je suis également preneur de conseils et/ou remarques sur comment orienter un tel sujet...

@arnaudbos
Copy link
Member

@orevial le papier dont je t'ai parlé hier : Practical partial evaluation for high-performance dynamic language runtimes. Très abordable et bien écrit.

Novembre me semble, à priori, un bon moment pour programmer l'un de vous deux.

@swallez
Copy link
Member Author

swallez commented Aug 23, 2019

@pgillet je voulais me concentrer exclusivement sur la partie concernant les langages de la JVM (Java, Scala, Kotlin) parce que de mon point de vue c'est l'application de GraalVM qui a le plus de répercussion sur notre industrie et permet à Java de rester pertinent dans un monde de micro-services/serverless où la bonne grosse JVM, qui était adaptée à des serveurs d'applications, n'est plus pertinente.

Côté perfs, GraalVM améliore certainement les choses pour les langages interprétés, mais pas forcément pour les langages JVM où la HotSpot fait un travail d'optimisation très poussé. Les grosses différences se trouvent sur le temps de démarrage et l'empreinte mémoire.

J'avoue être assez dubitatif sur l'utilité de l'aspect polyglotte. Est-ce que ça a vraiment un intérêt de mélanger plusieurs langages dans un unique process ? Est-ce que ça n'est pas vue de l'esprit matérialisée en prouesse d'ingénierie ? Je ne demande évidemment qu'à être convaincu avec des vrais use cases 😉

@arnaudbos
Copy link
Member

Digression à part et même si je trouve le sujet très intéressant, j'ai l'impression que @swallez est toujours chaud pour une présentation, @pgillet. Mais je n'ai aucun soucis avec le fait que deux talks sur le même sujet soient proposés par deux personne différentes.

Sauf si tu préfères réorienter ton talk à la lumière de ce que vient de dire Sylvain (et je ne dis pas que c'est ce qu'il faut, ou ne faut pas faire), j'ai l'impression que les deux approchent le sujet sous deux angles différents. Et c'est assez cohérent avec l'envergure du projet (SDK, compiler, Truffle, Substrate, etc).

Sachez tout de même que si vous proposez tous les deux un talk sur GraalVM, et même s'ils sont différents, j'aurai du mal à planifier les deux à moins de plusieurs moins d'intervalle.

J'aurai plutôt tendance à favoriser Sylvain si je recherche un speaker plus expérimenté pour une soirée en particulier, et plutôt Pascal si l'aspect polyglotte colle plus au thème ou si je veux favoriser les tours de parole.
Pour info, à l'instant T je me dis qu'un talk sur GraalVM en novembre pourrait être cool mais j'ai pas plus de billes que ça donc absolument rien n'est joué.

Autre solution : un talk à deux voix 🙂

@swallez
Copy link
Member Author

swallez commented Aug 23, 2019

Ah oui oui, toujours chaud ! Et le talk à 2 voix, ou une soirée GraalVM en 2 parties qui aborde les 2 sujets qui comme tu le dis ont des axes complémentaires pourrait à mon avis être une bonne approche.

Genre "GraalVM, la renaissance de Java pour les micro-services" et "GraalVM, pour des applications polyglottes performantes". Et comme ça on a un vieux sagesinge et un padawan en progression. Parce qu'on ne devient expérimenté qu'en pratiquant !

@arnaudbos
Copy link
Member

Sounds like a plan.

@pgillet
Copy link

pgillet commented Aug 30, 2019

L'idée de 2 talks sur GraalVM, tels que présentés par @swallez , est séduisante. Je me concentrerais donc plus sur l'aspect polyglotte, même si, j'en suis conscient, cela relève plus d'un produit de laboratoire.

Question pratique et vu avec @arnaudbos : je risque d'être full jusqu'à mi-novembre, donc une session début décembre serait l'idéal pour moi. 2 talks séparés à 1 ou 2 mois d'intervalle me paraît tout aussi bien qu'une soirée complète sur le sujet: cela crée du teasing (pour moi seulement 😬)

@swallez
Copy link
Member Author

swallez commented Aug 30, 2019

De mon côté, dispo uniquement après le 3 octobre. D'ici la je fais de la musique en JavaScript 😄

@arnaudbos
Copy link
Member

Hello vous deux,
J'aimerais programmer vos deux talks sur une soirée pour faire un méga-combo !

@pgillet je crois savoir qu'il sera difficile pour toi d'être dispo en Novembre ?
Est-ce que début décembre ça collerait mieux ?

@swallez même question, est-ce que tu serais dispo début décembre ?

A plus !

@swallez
Copy link
Member Author

swallez commented Sep 17, 2019

Ok pour moi en décembre !

@pgillet
Copy link

pgillet commented Sep 18, 2019

Ok aussi

@arnaudbos
Copy link
Member

OK pour le 12 décembre tous les deux ? J'ai un créneau :-)

@swallez
Copy link
Member Author

swallez commented Oct 10, 2019

Works for me!

@arnaudbos arnaudbos added this to the Décembre 2019 - GraalVM milestone Oct 10, 2019
@pgillet
Copy link

pgillet commented Oct 11, 2019

👍

@arnaudbos
Copy link
Member

Deal, la salle est bookée, merci à vous :-)

@arnaudbos
Copy link
Member

@pgillet si tu as un titre pour ta préz, je prends ;)

@pgillet
Copy link

pgillet commented Oct 17, 2019

GraalVM: la JVM polyglotte

J'ai retravaillé l'abstract aussi:

“Cette librairie n'est pas disponible dans mon langage de programmation. Je dois la réécrire."

"Ce langage conviendrait parfaitement à mon problème, mais nous ne pouvons pas l'exécuter dans notre environnement."

"Ce problème est déjà résolu dans tel ou tel langage, mais ce langage est trop lent."

Oui, GraalVM améliore les performances des langages JVM tels que Groovy, Scala ou Kotlin pour égaler les performances des langages natifs. Oui, GraalVM permet de produire des exécutables Java standalone - des images natives - grâce à la compilation Ahead-of-time. Oui, le startup de ces applications est grandement réduit. Oui, GraalVM est bien intégrée dans des frameworks tels que Micronaut et Quarkus. Et donc oui, GraalVM rend ses lettres de noblesse au langage Java, qui devient très pertinent dans le monde des micro-services. 😛

Dans ce talk, nous nous intéresserons à l'autre grand objectif de GraalVM, qui est de mélanger librement plusieurs langages dans des applications multi-langages ou polyglottes: imaginez une application dont le code source mêle le Java, le JavaScript, le Python, et le Rust! 🤯 GraalVM permet donc aux développeurs de choisir librement le bon langage pour la tâche à résoudre, sans faire de compromis sur les performances.

Nous allons étudier les mécanismes de GraalVM permettant des applications polyglottes. Nous présenterons également Truffle, un outil associé à GraalVM pour écrire son propre langage.

Et bien sûr nous écrirons, en live, une application multi-langages!

@arnaudbos
Copy link
Member

@swallez & @pgillet pouvez-vous me partager vos slides por favor? J'attaque les vidéos !

@pgillet
Copy link

pgillet commented Jan 6, 2020

Here we are! Merci encore pour cette soirée.

GraalVM.pdf

GraalVM.zip

@swallez
Copy link
Member Author

swallez commented Jan 6, 2020

Les miennes sont ici: https://docs.google.com/presentation/d/1-hT1pJBskehoJ50_5bDCrYug0w_Nj_NbP7Chdk7hTcY/edit

Dis-moi si tu veux un autre format (PDF & co).

@arnaudbos
Copy link
Member

C'est parfait, merci à vous !

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Language Java, Kotlin, Scala, Clojure, Eta, etc. Also non-JVM langs, but not JavaScript
Projects
None yet
Development

No branches or pull requests

5 participants