+ All Categories
Home > Documents > Enib cours c.a.i. web - séance #5 - langages alternatives dans la jvm

Enib cours c.a.i. web - séance #5 - langages alternatives dans la jvm

Date post: 06-Jul-2015
Category:
Upload: horacio-gonzalez
View: 177 times
Download: 0 times
Share this document with a friend
Popular Tags:
13
Conception d'Applications Interactives : Applications Web et JEE Séance #5 Langages alternatives dans la JVM
Transcript
Page 1: Enib   cours c.a.i. web - séance #5 - langages alternatives dans la jvm

Conception d'Applications Interactives :

Applications Web et JEESéance #5

Langages alternatives dans la JVM

Page 2: Enib   cours c.a.i. web - séance #5 - langages alternatives dans la jvm

Langages alternatives pour la JVM

Page 3: Enib   cours c.a.i. web - séance #5 - langages alternatives dans la jvm

Langages alternatives pour la JVM

Java ≠ JVM● Java : Langage qui compile vers du bytecode● JVM : Machine virtuelle qui exécute du bytecode

Page 4: Enib   cours c.a.i. web - séance #5 - langages alternatives dans la jvm

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

Page 5: Enib   cours c.a.i. web - séance #5 - langages alternatives dans la jvm

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 ?

Page 6: Enib   cours c.a.i. web - séance #5 - langages alternatives dans la jvm

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

Page 7: Enib   cours c.a.i. web - séance #5 - langages alternatives dans la jvm

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)...

Page 8: Enib   cours c.a.i. web - séance #5 - langages alternatives dans la jvm

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/

Page 9: Enib   cours c.a.i. web - séance #5 - langages alternatives dans la jvm

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/

Page 10: Enib   cours c.a.i. web - séance #5 - langages alternatives dans la jvm

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/

Page 11: Enib   cours c.a.i. web - séance #5 - langages alternatives dans la jvm

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/

Page 12: Enib   cours c.a.i. web - séance #5 - langages alternatives dans la jvm

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/

Page 13: Enib   cours c.a.i. web - séance #5 - langages alternatives dans la jvm

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


Recommended