SlideShare une entreprise Scribd logo
1  sur  13
Télécharger pour lire hors ligne
Conception d'Applications
Interactives :
Applications Web et JEE
Sé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

Contenu connexe

En vedette

Un nuage de fumée
Un nuage de fuméeUn nuage de fumée
Un nuage de fuméeiesboliches
 
Présentation logvad
Présentation logvadPrésentation logvad
Présentation logvadMaxime Aulit
 
Résumé du parcours académique
Résumé du parcours académiqueRésumé du parcours académique
Résumé du parcours académiquecristinaciochina
 
Veille et temps réel (3) : les moteurs temps réel
Veille et temps réel (3) : les moteurs temps réelVeille et temps réel (3) : les moteurs temps réel
Veille et temps réel (3) : les moteurs temps réelADBS
 
TRatamiento
TRatamientoTRatamiento
TRatamientoDoctor Z
 
En biel el voltor negre
En biel el voltor negreEn biel el voltor negre
En biel el voltor negremcm944
 
Billet sur l'Afghanistan
Billet sur l'AfghanistanBillet sur l'Afghanistan
Billet sur l'Afghanistanhgtice
 
GameProgram_Louisville
GameProgram_LouisvilleGameProgram_Louisville
GameProgram_LouisvilleGrace Vickers
 
201605_CValade_CV_CoordinationDiffusion
201605_CValade_CV_CoordinationDiffusion201605_CValade_CV_CoordinationDiffusion
201605_CValade_CV_CoordinationDiffusionClaire Valade
 
Entrepreneuriat et intrapreneuriat
Entrepreneuriat et intrapreneuriat Entrepreneuriat et intrapreneuriat
Entrepreneuriat et intrapreneuriat lancedafric.org
 
20130912 plurio présentation conseil régional de lorraine
20130912 plurio présentation conseil régional de lorraine20130912 plurio présentation conseil régional de lorraine
20130912 plurio présentation conseil régional de lorraineFrank Thinnes
 

En vedette (19)

Busquedas avanzadas en google
Busquedas avanzadas en googleBusquedas avanzadas en google
Busquedas avanzadas en google
 
Plaquette A2ie Cabinet Investigations Intelligence Economique Boillot 2010
Plaquette A2ie Cabinet Investigations Intelligence Economique Boillot 2010Plaquette A2ie Cabinet Investigations Intelligence Economique Boillot 2010
Plaquette A2ie Cabinet Investigations Intelligence Economique Boillot 2010
 
Un nuage de fumée
Un nuage de fuméeUn nuage de fumée
Un nuage de fumée
 
Le secret
Le secretLe secret
Le secret
 
Semana 8
Semana 8Semana 8
Semana 8
 
Présentation logvad
Présentation logvadPrésentation logvad
Présentation logvad
 
Résumé du parcours académique
Résumé du parcours académiqueRésumé du parcours académique
Résumé du parcours académique
 
Veille et temps réel (3) : les moteurs temps réel
Veille et temps réel (3) : les moteurs temps réelVeille et temps réel (3) : les moteurs temps réel
Veille et temps réel (3) : les moteurs temps réel
 
TRatamiento
TRatamientoTRatamiento
TRatamiento
 
En biel el voltor negre
En biel el voltor negreEn biel el voltor negre
En biel el voltor negre
 
Billet sur l'Afghanistan
Billet sur l'AfghanistanBillet sur l'Afghanistan
Billet sur l'Afghanistan
 
GameProgram_Louisville
GameProgram_LouisvilleGameProgram_Louisville
GameProgram_Louisville
 
Copia De Fontanarrosa
Copia De FontanarrosaCopia De Fontanarrosa
Copia De Fontanarrosa
 
osl-como
osl-comoosl-como
osl-como
 
201605_CValade_CV_CoordinationDiffusion
201605_CValade_CV_CoordinationDiffusion201605_CValade_CV_CoordinationDiffusion
201605_CValade_CV_CoordinationDiffusion
 
Entrepreneuriat et intrapreneuriat
Entrepreneuriat et intrapreneuriat Entrepreneuriat et intrapreneuriat
Entrepreneuriat et intrapreneuriat
 
Katelyn
KatelynKatelyn
Katelyn
 
20130912 plurio présentation conseil régional de lorraine
20130912 plurio présentation conseil régional de lorraine20130912 plurio présentation conseil régional de lorraine
20130912 plurio présentation conseil régional de lorraine
 
Xxxi Aniversario A
Xxxi Aniversario AXxxi Aniversario A
Xxxi Aniversario A
 

Plus de Horacio Gonzalez

Il n'y a pas que Polymer dans la vie… - RennesJS - 2017-06-27
Il n'y a pas que Polymer dans la vie… - RennesJS - 2017-06-27Il n'y a pas que Polymer dans la vie… - RennesJS - 2017-06-27
Il n'y a pas que Polymer dans la vie… - RennesJS - 2017-06-27Horacio Gonzalez
 
But there is no web component for that - Web Components Remote Conference - 2...
But there is no web component for that - Web Components Remote Conference - 2...But there is no web component for that - Web Components Remote Conference - 2...
But there is no web component for that - Web Components Remote Conference - 2...Horacio Gonzalez
 
Mixité dans le monde des WebComponents - DevFest Toulouse - 2017-09-27
 Mixité dans le monde des WebComponents - DevFest Toulouse - 2017-09-27 Mixité dans le monde des WebComponents - DevFest Toulouse - 2017-09-27
Mixité dans le monde des WebComponents - DevFest Toulouse - 2017-09-27Horacio Gonzalez
 
ENIB 2016 2017 - CAI Web S02E01- Côté navigateur 2/3 - HTML5, CSS3, Twitter B...
ENIB 2016 2017 - CAI Web S02E01- Côté navigateur 2/3 - HTML5, CSS3, Twitter B...ENIB 2016 2017 - CAI Web S02E01- Côté navigateur 2/3 - HTML5, CSS3, Twitter B...
ENIB 2016 2017 - CAI Web S02E01- Côté navigateur 2/3 - HTML5, CSS3, Twitter B...Horacio Gonzalez
 
ENIB 2016 2017 - CAI Web S02E01- Côté navigateur 1/3 - HTTP, HTML, CSS, JS
ENIB 2016 2017 - CAI Web S02E01- Côté navigateur 1/3 - HTTP, HTML, CSS, JSENIB 2016 2017 - CAI Web S02E01- Côté navigateur 1/3 - HTTP, HTML, CSS, JS
ENIB 2016 2017 - CAI Web S02E01- Côté navigateur 1/3 - HTTP, HTML, CSS, JSHoracio Gonzalez
 
Battle of Frameworks: Polymer - Meetup Paris Web Components - 2016-09
Battle of Frameworks: Polymer - Meetup Paris Web Components - 2016-09Battle of Frameworks: Polymer - Meetup Paris Web Components - 2016-09
Battle of Frameworks: Polymer - Meetup Paris Web Components - 2016-09Horacio Gonzalez
 
Mixing Web Components - Best of Web Paris - 2016 06-09
Mixing Web Components - Best of Web Paris - 2016 06-09Mixing Web Components - Best of Web Paris - 2016 06-09
Mixing Web Components - Best of Web Paris - 2016 06-09Horacio Gonzalez
 
Polymer in the real life - Devoxx France - 2016 04-20
Polymer in the real life - Devoxx France - 2016 04-20Polymer in the real life - Devoxx France - 2016 04-20
Polymer in the real life - Devoxx France - 2016 04-20Horacio Gonzalez
 
Warp10: collect, store and manipulate sensor data - BreizhCamp - 2016 03-24
Warp10: collect, store and manipulate sensor data - BreizhCamp - 2016 03-24 Warp10: collect, store and manipulate sensor data - BreizhCamp - 2016 03-24
Warp10: collect, store and manipulate sensor data - BreizhCamp - 2016 03-24 Horacio Gonzalez
 
ENIB 2015 2016 - CAI Web S02E03- Forge JS 1/4 - La forge JavaScript
ENIB 2015 2016 - CAI Web S02E03- Forge JS 1/4 - La forge JavaScriptENIB 2015 2016 - CAI Web S02E03- Forge JS 1/4 - La forge JavaScript
ENIB 2015 2016 - CAI Web S02E03- Forge JS 1/4 - La forge JavaScriptHoracio Gonzalez
 
ENIB 2015 2016 - CAI Web S02E01- Côté Navigateur 3/3 - Web Components avec Po...
ENIB 2015 2016 - CAI Web S02E01- Côté Navigateur 3/3 - Web Components avec Po...ENIB 2015 2016 - CAI Web S02E01- Côté Navigateur 3/3 - Web Components avec Po...
ENIB 2015 2016 - CAI Web S02E01- Côté Navigateur 3/3 - Web Components avec Po...Horacio Gonzalez
 
ENIB 2015 2016 - CAI Web S02E01- Côté Navigateur 2/3 - HTML5 / CSS3 / Twitter...
ENIB 2015 2016 - CAI Web S02E01- Côté Navigateur 2/3 - HTML5 / CSS3 / Twitter...ENIB 2015 2016 - CAI Web S02E01- Côté Navigateur 2/3 - HTML5 / CSS3 / Twitter...
ENIB 2015 2016 - CAI Web S02E01- Côté Navigateur 2/3 - HTML5 / CSS3 / Twitter...Horacio Gonzalez
 
ENIB 2015 2016 - CAI Web S02E03 - Forge JS 2/4 - MongoDB and NoSQL
ENIB 2015 2016 - CAI Web S02E03 - Forge JS 2/4 - MongoDB and NoSQLENIB 2015 2016 - CAI Web S02E03 - Forge JS 2/4 - MongoDB and NoSQL
ENIB 2015 2016 - CAI Web S02E03 - Forge JS 2/4 - MongoDB and NoSQLHoracio Gonzalez
 
ENIB 2015 2016 - CAI Web S02E01- Côté Navigateur 1/3 - HTTP, HTML, CSS JS
ENIB 2015 2016 - CAI Web S02E01- Côté Navigateur 1/3 - HTTP, HTML, CSS JSENIB 2015 2016 - CAI Web S02E01- Côté Navigateur 1/3 - HTTP, HTML, CSS JS
ENIB 2015 2016 - CAI Web S02E01- Côté Navigateur 1/3 - HTTP, HTML, CSS JSHoracio Gonzalez
 
ENIB 2015-2016 - CAI Web - S01E01- MongoDB and NoSQL
ENIB 2015-2016 - CAI Web - S01E01- MongoDB and NoSQLENIB 2015-2016 - CAI Web - S01E01- MongoDB and NoSQL
ENIB 2015-2016 - CAI Web - S01E01- MongoDB and NoSQLHoracio Gonzalez
 
ENIB 2015-2016 - CAI Web - S01E01- La forge JavaScript
ENIB 2015-2016 - CAI Web - S01E01- La forge JavaScriptENIB 2015-2016 - CAI Web - S01E01- La forge JavaScript
ENIB 2015-2016 - CAI Web - S01E01- La forge JavaScriptHoracio Gonzalez
 
ENIB 2015-2016 - CAI Web - S01E01- Côté navigateur 2/3 - HTML5, CSS3, Twitte...
ENIB 2015-2016 - CAI Web -  S01E01- Côté navigateur 2/3 - HTML5, CSS3, Twitte...ENIB 2015-2016 - CAI Web -  S01E01- Côté navigateur 2/3 - HTML5, CSS3, Twitte...
ENIB 2015-2016 - CAI Web - S01E01- Côté navigateur 2/3 - HTML5, CSS3, Twitte...Horacio Gonzalez
 
ENIB 2015-2016 - CAI Web - S01E01- Côté navigateur 1/3 - HTTP, HTML, CSS, JS
ENIB 2015-2016 - CAI Web -  S01E01- Côté navigateur 1/3 - HTTP, HTML, CSS, JSENIB 2015-2016 - CAI Web -  S01E01- Côté navigateur 1/3 - HTTP, HTML, CSS, JS
ENIB 2015-2016 - CAI Web - S01E01- Côté navigateur 1/3 - HTTP, HTML, CSS, JSHoracio Gonzalez
 
ENIB 2015-2016 - CAI Web - S01E01- Côté navigateur 3/3 - Web components avec ...
ENIB 2015-2016 - CAI Web - S01E01- Côté navigateur 3/3 - Web components avec ...ENIB 2015-2016 - CAI Web - S01E01- Côté navigateur 3/3 - Web components avec ...
ENIB 2015-2016 - CAI Web - S01E01- Côté navigateur 3/3 - Web components avec ...Horacio Gonzalez
 
Beyond Polymer - JUG Summer Camp - 2015-09-18
Beyond Polymer - JUG Summer Camp - 2015-09-18Beyond Polymer - JUG Summer Camp - 2015-09-18
Beyond Polymer - JUG Summer Camp - 2015-09-18Horacio Gonzalez
 

Plus de Horacio Gonzalez (20)

Il n'y a pas que Polymer dans la vie… - RennesJS - 2017-06-27
Il n'y a pas que Polymer dans la vie… - RennesJS - 2017-06-27Il n'y a pas que Polymer dans la vie… - RennesJS - 2017-06-27
Il n'y a pas que Polymer dans la vie… - RennesJS - 2017-06-27
 
But there is no web component for that - Web Components Remote Conference - 2...
But there is no web component for that - Web Components Remote Conference - 2...But there is no web component for that - Web Components Remote Conference - 2...
But there is no web component for that - Web Components Remote Conference - 2...
 
Mixité dans le monde des WebComponents - DevFest Toulouse - 2017-09-27
 Mixité dans le monde des WebComponents - DevFest Toulouse - 2017-09-27 Mixité dans le monde des WebComponents - DevFest Toulouse - 2017-09-27
Mixité dans le monde des WebComponents - DevFest Toulouse - 2017-09-27
 
ENIB 2016 2017 - CAI Web S02E01- Côté navigateur 2/3 - HTML5, CSS3, Twitter B...
ENIB 2016 2017 - CAI Web S02E01- Côté navigateur 2/3 - HTML5, CSS3, Twitter B...ENIB 2016 2017 - CAI Web S02E01- Côté navigateur 2/3 - HTML5, CSS3, Twitter B...
ENIB 2016 2017 - CAI Web S02E01- Côté navigateur 2/3 - HTML5, CSS3, Twitter B...
 
ENIB 2016 2017 - CAI Web S02E01- Côté navigateur 1/3 - HTTP, HTML, CSS, JS
ENIB 2016 2017 - CAI Web S02E01- Côté navigateur 1/3 - HTTP, HTML, CSS, JSENIB 2016 2017 - CAI Web S02E01- Côté navigateur 1/3 - HTTP, HTML, CSS, JS
ENIB 2016 2017 - CAI Web S02E01- Côté navigateur 1/3 - HTTP, HTML, CSS, JS
 
Battle of Frameworks: Polymer - Meetup Paris Web Components - 2016-09
Battle of Frameworks: Polymer - Meetup Paris Web Components - 2016-09Battle of Frameworks: Polymer - Meetup Paris Web Components - 2016-09
Battle of Frameworks: Polymer - Meetup Paris Web Components - 2016-09
 
Mixing Web Components - Best of Web Paris - 2016 06-09
Mixing Web Components - Best of Web Paris - 2016 06-09Mixing Web Components - Best of Web Paris - 2016 06-09
Mixing Web Components - Best of Web Paris - 2016 06-09
 
Polymer in the real life - Devoxx France - 2016 04-20
Polymer in the real life - Devoxx France - 2016 04-20Polymer in the real life - Devoxx France - 2016 04-20
Polymer in the real life - Devoxx France - 2016 04-20
 
Warp10: collect, store and manipulate sensor data - BreizhCamp - 2016 03-24
Warp10: collect, store and manipulate sensor data - BreizhCamp - 2016 03-24 Warp10: collect, store and manipulate sensor data - BreizhCamp - 2016 03-24
Warp10: collect, store and manipulate sensor data - BreizhCamp - 2016 03-24
 
ENIB 2015 2016 - CAI Web S02E03- Forge JS 1/4 - La forge JavaScript
ENIB 2015 2016 - CAI Web S02E03- Forge JS 1/4 - La forge JavaScriptENIB 2015 2016 - CAI Web S02E03- Forge JS 1/4 - La forge JavaScript
ENIB 2015 2016 - CAI Web S02E03- Forge JS 1/4 - La forge JavaScript
 
ENIB 2015 2016 - CAI Web S02E01- Côté Navigateur 3/3 - Web Components avec Po...
ENIB 2015 2016 - CAI Web S02E01- Côté Navigateur 3/3 - Web Components avec Po...ENIB 2015 2016 - CAI Web S02E01- Côté Navigateur 3/3 - Web Components avec Po...
ENIB 2015 2016 - CAI Web S02E01- Côté Navigateur 3/3 - Web Components avec Po...
 
ENIB 2015 2016 - CAI Web S02E01- Côté Navigateur 2/3 - HTML5 / CSS3 / Twitter...
ENIB 2015 2016 - CAI Web S02E01- Côté Navigateur 2/3 - HTML5 / CSS3 / Twitter...ENIB 2015 2016 - CAI Web S02E01- Côté Navigateur 2/3 - HTML5 / CSS3 / Twitter...
ENIB 2015 2016 - CAI Web S02E01- Côté Navigateur 2/3 - HTML5 / CSS3 / Twitter...
 
ENIB 2015 2016 - CAI Web S02E03 - Forge JS 2/4 - MongoDB and NoSQL
ENIB 2015 2016 - CAI Web S02E03 - Forge JS 2/4 - MongoDB and NoSQLENIB 2015 2016 - CAI Web S02E03 - Forge JS 2/4 - MongoDB and NoSQL
ENIB 2015 2016 - CAI Web S02E03 - Forge JS 2/4 - MongoDB and NoSQL
 
ENIB 2015 2016 - CAI Web S02E01- Côté Navigateur 1/3 - HTTP, HTML, CSS JS
ENIB 2015 2016 - CAI Web S02E01- Côté Navigateur 1/3 - HTTP, HTML, CSS JSENIB 2015 2016 - CAI Web S02E01- Côté Navigateur 1/3 - HTTP, HTML, CSS JS
ENIB 2015 2016 - CAI Web S02E01- Côté Navigateur 1/3 - HTTP, HTML, CSS JS
 
ENIB 2015-2016 - CAI Web - S01E01- MongoDB and NoSQL
ENIB 2015-2016 - CAI Web - S01E01- MongoDB and NoSQLENIB 2015-2016 - CAI Web - S01E01- MongoDB and NoSQL
ENIB 2015-2016 - CAI Web - S01E01- MongoDB and NoSQL
 
ENIB 2015-2016 - CAI Web - S01E01- La forge JavaScript
ENIB 2015-2016 - CAI Web - S01E01- La forge JavaScriptENIB 2015-2016 - CAI Web - S01E01- La forge JavaScript
ENIB 2015-2016 - CAI Web - S01E01- La forge JavaScript
 
ENIB 2015-2016 - CAI Web - S01E01- Côté navigateur 2/3 - HTML5, CSS3, Twitte...
ENIB 2015-2016 - CAI Web -  S01E01- Côté navigateur 2/3 - HTML5, CSS3, Twitte...ENIB 2015-2016 - CAI Web -  S01E01- Côté navigateur 2/3 - HTML5, CSS3, Twitte...
ENIB 2015-2016 - CAI Web - S01E01- Côté navigateur 2/3 - HTML5, CSS3, Twitte...
 
ENIB 2015-2016 - CAI Web - S01E01- Côté navigateur 1/3 - HTTP, HTML, CSS, JS
ENIB 2015-2016 - CAI Web -  S01E01- Côté navigateur 1/3 - HTTP, HTML, CSS, JSENIB 2015-2016 - CAI Web -  S01E01- Côté navigateur 1/3 - HTTP, HTML, CSS, JS
ENIB 2015-2016 - CAI Web - S01E01- Côté navigateur 1/3 - HTTP, HTML, CSS, JS
 
ENIB 2015-2016 - CAI Web - S01E01- Côté navigateur 3/3 - Web components avec ...
ENIB 2015-2016 - CAI Web - S01E01- Côté navigateur 3/3 - Web components avec ...ENIB 2015-2016 - CAI Web - S01E01- Côté navigateur 3/3 - Web components avec ...
ENIB 2015-2016 - CAI Web - S01E01- Côté navigateur 3/3 - Web components avec ...
 
Beyond Polymer - JUG Summer Camp - 2015-09-18
Beyond Polymer - JUG Summer Camp - 2015-09-18Beyond Polymer - JUG Summer Camp - 2015-09-18
Beyond Polymer - JUG Summer Camp - 2015-09-18
 

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

  • 1. Conception d'Applications Interactives : Applications Web et JEE Séance #3 Langages alternatives dans la JVM
  • 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