3. Langages alternatives pour la JVM
Java ≠ JVM
● Java : Langage qui compile vers du bytecode
● JVM : Machine virtuelle qui exécute du bytecode
4. La JVM en tant que plate-forme
● Build once, run everywhere
○ Des implémentations de JVM pour la plupart du
hardware et OS
○ Bytecode format pivot indépendant de la plate-forme
● Tendance à s'affranchir de l'OS
○ Côté client : navigateur comme plate-forme
○ Côté serveur : JVM comme plate-forme
5. Pourquoi des nouveaux langages
If all you have is a hammer,
everything looks like a nail
Java est un très bon langage généraliste, mais
pas la solution ultime
● Scripting ?
● Programmation fonctionnelle ?
● Simplification et réduction du boilerplate ?
6. Pourquoi des nouveaux
langages sur la JVM
● La cible est le bytecode
○ Pas besoin d'implémenter la compilation vers le
format natif de chaque OS
● Profiter de l'écosystème Java
○ Bibliothèques, serveurs, outils...
○ Courbe d'adoption moins ardue
● Support pour langages à typage dynamique
○ JSR 292, InvokeDynamic
○ Intégrée à la JVM depuis Java 1.7
7. Quels sont ces langages ?
● Des langages nouveaux :
○ Clojure, Groovy, Scala, Ceylon, Kotlin...
● Des implémentations d'autres langages
○ JRuby (Ruby), Jython (Python), Rhino (JS), Elastic
COBOL (Cobol), JGNAT (Ada), Luaj (Lua)...
8. Jython
Interprète Python écrit en Java, créé en 1997
●
●
●
●
Compilation de code Python en bytecode
Héritage de classes Java par des classes Python
Scripting de code Python dans un programme Java
Utilisation d'objets Java dans du code Python
Très utilisé pour prototypage, scripting et exploration des
classes Java
http://www.jython.org/
9. JRuby
Interprète Ruby écrit en Java, créé en 2001
● Équivalent de Jython pour Ruby
● Capable de faire tourner Rails
● Plus rapide que l'implémentation de référence
○ Option JIT
http://www.jruby.org/
10. Groovy
Langage de POO destiné à la plate-forme Java
● Inspiré de Python, Ruby et Smalltalk
● Syntaxe très proche de Java
● Compilé
○ soit à la volée dynamiquement
○ soit classiquement vers bytecode
● Typages statique et dynamique
● Support natif pour listes, maps, et regex
● Fermetures ou clôtures (closures)
● Surcharge des opérateurs
http://groovy.codehaus.org/
11. Ceylon
Nouveau langage pour la JVM par RedHat
"Java tel qu'ils serait si il avait été
développé aujourd'hui"
● Typage statique
○ Types union et intersection
● Syntaxe régulière
○ Sucre syntactique ajouté
● Modulaire
○ Dépôt Ceylon Herd
http://www.ceylon-lang.org/
12. Scala
Langage de programmation multi-paradigme
○ Programmations orientée objet et fonctionnelle
● Typage statique, syntaxe concise
● Compilé vers bytecode
● Intéropérabilité avec le code Java
http://www.scala-lang.org/
13. Le développeur multi-lingue
● Environnement JVM en mouvement continu
○ Nouveaux langages
○ Nouveaux frameworks
○ Nouveaux outils
● Ne pas se tenir à jour, ne pas apprendre =
stagner, régresser.
○ Un nouveau langage par an
○ Un nouveau framework tous les 3 mois