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
● Le target 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
● Equivalente de Jython pout 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 expressions
régulières
● 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