ENIB 2013-2014 - CAI Web #3: Langages alternatives dans la JVM

628 vues

Publié le

Publié dans : Technologie
0 commentaire
1 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

Aucun téléchargement
Vues
Nombre de vues
628
Sur SlideShare
0
Issues des intégrations
0
Intégrations
2
Actions
Partages
0
Téléchargements
13
Commentaires
0
J’aime
1
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

ENIB 2013-2014 - CAI Web #3: Langages alternatives dans la JVM

  1. 1. Conception d'Applications Interactives : Applications Web et JEE Séance #3 Langages alternatives dans la JVM
  2. 2. Langages alternatives pour la JVM
  3. 3. Langages alternatives pour la JVM Java ≠ JVM ● Java : Langage qui compile vers du bytecode ● JVM : Machine virtuelle qui exécute du bytecode
  4. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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

×