ENIB 2013-2014 - CAI Web #3: Langages alternatives dans la JVM
-
Upload
horacio-gonzalez -
Category
Technology
-
view
335 -
download
1
Transcript of ENIB 2013-2014 - CAI Web #3: Langages alternatives dans la JVM
Conception d'Applications Interactives :
Applications Web et JEESéance #3
Langages alternatives dans la JVM
Langages alternatives pour la JVM
Langages alternatives pour la JVM
Java ≠ JVM
● Java : Langage qui compile vers du bytecode● JVM : Machine virtuelle qui exécute du bytecode
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
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 ?
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
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)...
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/
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/
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/
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/
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/
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