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 #5
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
● 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
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
● 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/
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/
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

Tendances

Node.js et les nouvelles technologies javascript
Node.js et les nouvelles technologies javascriptNode.js et les nouvelles technologies javascript
Node.js et les nouvelles technologies javascriptKhalid Jebbari
 
Solutions Linux 2014 – Alter Way : Industrialisation des développements en Ja...
Solutions Linux 2014 – Alter Way : Industrialisation des développements en Ja...Solutions Linux 2014 – Alter Way : Industrialisation des développements en Ja...
Solutions Linux 2014 – Alter Way : Industrialisation des développements en Ja...ALTER WAY
 
Développez dans le futur, dès maintenant !
Développez dans le futur, dès maintenant !Développez dans le futur, dès maintenant !
Développez dans le futur, dès maintenant !Mathieu Parisot
 
LLVM, clang & c++
LLVM, clang & c++LLVM, clang & c++
LLVM, clang & c++cppfrug
 
Symphonie pour PHP industrialisé en agilité majeure
Symphonie pour PHP industrialisé en agilité majeureSymphonie pour PHP industrialisé en agilité majeure
Symphonie pour PHP industrialisé en agilité majeureJonathan Bonzy
 
Enib cours c.a.i. web - séance #6 : introduction à node js
Enib   cours c.a.i. web - séance #6 : introduction à node jsEnib   cours c.a.i. web - séance #6 : introduction à node js
Enib cours c.a.i. web - séance #6 : introduction à node jsHoracio Gonzalez
 
ASP.NET 5: la révolution est en marche
ASP.NET 5: la révolution est en marcheASP.NET 5: la révolution est en marche
ASP.NET 5: la révolution est en marcheMicrosoft
 
TypeScript for dummies
TypeScript for dummiesTypeScript for dummies
TypeScript for dummiesMicrosoft
 
WebHookIt @parisjs #4
WebHookIt @parisjs #4WebHookIt @parisjs #4
WebHookIt @parisjs #4Eric Abouaf
 
Active Server Pages (ASP)
Active Server Pages (ASP)Active Server Pages (ASP)
Active Server Pages (ASP)Saïd Radhouani
 
JRuby: l'alliance de Ruby avec Java
JRuby: l'alliance de Ruby avec JavaJRuby: l'alliance de Ruby avec Java
JRuby: l'alliance de Ruby avec JavaCyrille Bonnet
 

Tendances (11)

Node.js et les nouvelles technologies javascript
Node.js et les nouvelles technologies javascriptNode.js et les nouvelles technologies javascript
Node.js et les nouvelles technologies javascript
 
Solutions Linux 2014 – Alter Way : Industrialisation des développements en Ja...
Solutions Linux 2014 – Alter Way : Industrialisation des développements en Ja...Solutions Linux 2014 – Alter Way : Industrialisation des développements en Ja...
Solutions Linux 2014 – Alter Way : Industrialisation des développements en Ja...
 
Développez dans le futur, dès maintenant !
Développez dans le futur, dès maintenant !Développez dans le futur, dès maintenant !
Développez dans le futur, dès maintenant !
 
LLVM, clang & c++
LLVM, clang & c++LLVM, clang & c++
LLVM, clang & c++
 
Symphonie pour PHP industrialisé en agilité majeure
Symphonie pour PHP industrialisé en agilité majeureSymphonie pour PHP industrialisé en agilité majeure
Symphonie pour PHP industrialisé en agilité majeure
 
Enib cours c.a.i. web - séance #6 : introduction à node js
Enib   cours c.a.i. web - séance #6 : introduction à node jsEnib   cours c.a.i. web - séance #6 : introduction à node js
Enib cours c.a.i. web - séance #6 : introduction à node js
 
ASP.NET 5: la révolution est en marche
ASP.NET 5: la révolution est en marcheASP.NET 5: la révolution est en marche
ASP.NET 5: la révolution est en marche
 
TypeScript for dummies
TypeScript for dummiesTypeScript for dummies
TypeScript for dummies
 
WebHookIt @parisjs #4
WebHookIt @parisjs #4WebHookIt @parisjs #4
WebHookIt @parisjs #4
 
Active Server Pages (ASP)
Active Server Pages (ASP)Active Server Pages (ASP)
Active Server Pages (ASP)
 
JRuby: l'alliance de Ruby avec Java
JRuby: l'alliance de Ruby avec JavaJRuby: l'alliance de Ruby avec Java
JRuby: l'alliance de Ruby avec Java
 

En vedette

Crise(s), competences et identite numérique
Crise(s), competences et identite numériqueCrise(s), competences et identite numérique
Crise(s), competences et identite numériqueSamantha Slade
 
Veille annuelle 2010 1
Veille annuelle 2010 1Veille annuelle 2010 1
Veille annuelle 2010 1Agence Elan
 
Universidad autónoma de aguascalientes
Universidad autónoma de aguascalientesUniversidad autónoma de aguascalientes
Universidad autónoma de aguascalientesAdileneRega1903
 
Trabajozidane
TrabajozidaneTrabajozidane
Trabajozidanefer_lahoz
 
Primavera Sound 09
Primavera Sound 09Primavera Sound 09
Primavera Sound 09Fernando Gil
 
La Gerencia y Ciclo de Vida de los Proyectos
La Gerencia y Ciclo de Vida de los ProyectosLa Gerencia y Ciclo de Vida de los Proyectos
La Gerencia y Ciclo de Vida de los ProyectosFREDY BONILLA LEGUIZAMÓN
 
Sinalyzer PROJECT_presentación en español
Sinalyzer PROJECT_presentación en españolSinalyzer PROJECT_presentación en español
Sinalyzer PROJECT_presentación en españolEnertria,S.L.
 
Vers un espace public dans les mondes simulés en ligne ?
Vers un espace public dans les mondes simulés en ligne ? Vers un espace public dans les mondes simulés en ligne ?
Vers un espace public dans les mondes simulés en ligne ? Gehan Kamachi
 
Anael et le SU Agen.
Anael et le SU Agen.Anael et le SU Agen.
Anael et le SU Agen.Marc De Jongy
 
Rapport annuel 2014
Rapport annuel 2014Rapport annuel 2014
Rapport annuel 2014Mauve-marie
 
Algebralineal
AlgebralinealAlgebralineal
Algebralinealmadel7
 

En vedette (20)

Principios De Usabilidad
Principios De UsabilidadPrincipios De Usabilidad
Principios De Usabilidad
 
Crise(s), competences et identite numérique
Crise(s), competences et identite numériqueCrise(s), competences et identite numérique
Crise(s), competences et identite numérique
 
Veille annuelle 2010 1
Veille annuelle 2010 1Veille annuelle 2010 1
Veille annuelle 2010 1
 
La loi de l'énergie.
La loi de l'énergie.La loi de l'énergie.
La loi de l'énergie.
 
El espacio
El espacioEl espacio
El espacio
 
Universidad autónoma de aguascalientes
Universidad autónoma de aguascalientesUniversidad autónoma de aguascalientes
Universidad autónoma de aguascalientes
 
Trabajozidane
TrabajozidaneTrabajozidane
Trabajozidane
 
Escalas y Resultados en Moodle
Escalas y Resultados en MoodleEscalas y Resultados en Moodle
Escalas y Resultados en Moodle
 
Primavera Sound 09
Primavera Sound 09Primavera Sound 09
Primavera Sound 09
 
La Gerencia y Ciclo de Vida de los Proyectos
La Gerencia y Ciclo de Vida de los ProyectosLa Gerencia y Ciclo de Vida de los Proyectos
La Gerencia y Ciclo de Vida de los Proyectos
 
Sinalyzer PROJECT_presentación en español
Sinalyzer PROJECT_presentación en españolSinalyzer PROJECT_presentación en español
Sinalyzer PROJECT_presentación en español
 
Vers un espace public dans les mondes simulés en ligne ?
Vers un espace public dans les mondes simulés en ligne ? Vers un espace public dans les mondes simulés en ligne ?
Vers un espace public dans les mondes simulés en ligne ?
 
119segundos
119segundos119segundos
119segundos
 
PFW Site Blueprint
PFW Site BlueprintPFW Site Blueprint
PFW Site Blueprint
 
Anael et le SU Agen.
Anael et le SU Agen.Anael et le SU Agen.
Anael et le SU Agen.
 
Pourquoi avoir un site internet avec une version mobile
Pourquoi avoir un site internet avec une version mobilePourquoi avoir un site internet avec une version mobile
Pourquoi avoir un site internet avec une version mobile
 
Rapport annuel 2014
Rapport annuel 2014Rapport annuel 2014
Rapport annuel 2014
 
Fantastiques Incas
Fantastiques IncasFantastiques Incas
Fantastiques Incas
 
Algebralineal
AlgebralinealAlgebralineal
Algebralineal
 
Los Blogs en el aula digital
Los Blogs en el aula digitalLos Blogs en el aula digital
Los Blogs en el aula digital
 

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

Objet Direct Formation Java pour devenir autonome
Objet Direct Formation Java pour devenir autonomeObjet Direct Formation Java pour devenir autonome
Objet Direct Formation Java pour devenir autonomeformationobjetdirect
 
Enib cours c.a.i. web - séance #5 : scala play! framework
Enib   cours c.a.i. web - séance #5 : scala play! frameworkEnib   cours c.a.i. web - séance #5 : scala play! framework
Enib cours c.a.i. web - séance #5 : scala play! frameworkHoracio Gonzalez
 
Introduction à Play Framework 2
Introduction à Play Framework 2Introduction à Play Framework 2
Introduction à Play Framework 2Samy Dindane
 
ENIB 2013-2014 - CAI Web #3: J’ai besoin d’une appli web rapidement
ENIB 2013-2014 - CAI Web #3: J’ai besoin d’une appli web rapidementENIB 2013-2014 - CAI Web #3: J’ai besoin d’une appli web rapidement
ENIB 2013-2014 - CAI Web #3: J’ai besoin d’une appli web rapidementHoracio Gonzalez
 
FinistJUG - J’ai besoin d’une appli web rapidement
FinistJUG -   J’ai besoin d’une appli web rapidementFinistJUG -   J’ai besoin d’une appli web rapidement
FinistJUG - J’ai besoin d’une appli web rapidementHoracio Gonzalez
 
I le langage java d'una manière avancée introduction
I  le langage java d'una manière avancée introductionI  le langage java d'una manière avancée introduction
I le langage java d'una manière avancée introductionsabrine_hamdi
 
Une introduction à Javascript et ECMAScript 6
Une introduction à Javascript et ECMAScript 6Une introduction à Javascript et ECMAScript 6
Une introduction à Javascript et ECMAScript 6Jean-Baptiste Vigneron
 
Gwt oxiane-novae-lr
Gwt oxiane-novae-lrGwt oxiane-novae-lr
Gwt oxiane-novae-lroxmed
 
JavaScript: bonnes pratiques, astuces, et cauchemars
JavaScript: bonnes pratiques, astuces, et cauchemarsJavaScript: bonnes pratiques, astuces, et cauchemars
JavaScript: bonnes pratiques, astuces, et cauchemarsFabian Vilers
 
devoxx 2022 - 10 ans de Devoxx FR et de Java.pdf
devoxx 2022 - 10 ans de Devoxx FR et de Java.pdfdevoxx 2022 - 10 ans de Devoxx FR et de Java.pdf
devoxx 2022 - 10 ans de Devoxx FR et de Java.pdfJean-Michel Doudoux
 
Spring Batch - Julien Jakubowski - November 2010
Spring Batch - Julien Jakubowski - November 2010Spring Batch - Julien Jakubowski - November 2010
Spring Batch - Julien Jakubowski - November 2010JUG Lausanne
 
Soda sotm fr-2013_02_24
Soda sotm fr-2013_02_24Soda sotm fr-2013_02_24
Soda sotm fr-2013_02_24quicky_osm
 
Javaday Paris 2022 - Java en 2022 : profiter de Java 17
Javaday Paris 2022 - Java en 2022 : profiter de Java 17Javaday Paris 2022 - Java en 2022 : profiter de Java 17
Javaday Paris 2022 - Java en 2022 : profiter de Java 17Jean-Michel Doudoux
 
Soda sotm fr-2013_02_24
Soda sotm fr-2013_02_24Soda sotm fr-2013_02_24
Soda sotm fr-2013_02_24quicky_osm
 
Les plateformes de développement des web services
Les plateformes de développement des web servicesLes plateformes de développement des web services
Les plateformes de développement des web servicesoussemos
 
Qt4 et 5 pour Linux embarqué
Qt4 et 5 pour Linux embarquéQt4 et 5 pour Linux embarqué
Qt4 et 5 pour Linux embarquéAlexandre LAHAYE
 
Javascript & tools
Javascript & toolsJavascript & tools
Javascript & toolsSlim Soussi
 

Similaire à Enib cours c.a.i. web - séance #5 - langages alternatives dans la jvm (20)

Objet Direct Formation Java pour devenir autonome
Objet Direct Formation Java pour devenir autonomeObjet Direct Formation Java pour devenir autonome
Objet Direct Formation Java pour devenir autonome
 
Enib cours c.a.i. web - séance #5 : scala play! framework
Enib   cours c.a.i. web - séance #5 : scala play! frameworkEnib   cours c.a.i. web - séance #5 : scala play! framework
Enib cours c.a.i. web - séance #5 : scala play! framework
 
Introduction à Play Framework 2
Introduction à Play Framework 2Introduction à Play Framework 2
Introduction à Play Framework 2
 
ENIB 2013-2014 - CAI Web #3: J’ai besoin d’une appli web rapidement
ENIB 2013-2014 - CAI Web #3: J’ai besoin d’une appli web rapidementENIB 2013-2014 - CAI Web #3: J’ai besoin d’une appli web rapidement
ENIB 2013-2014 - CAI Web #3: J’ai besoin d’une appli web rapidement
 
FinistJUG - J’ai besoin d’une appli web rapidement
FinistJUG -   J’ai besoin d’une appli web rapidementFinistJUG -   J’ai besoin d’une appli web rapidement
FinistJUG - J’ai besoin d’une appli web rapidement
 
I le langage java d'una manière avancée introduction
I  le langage java d'una manière avancée introductionI  le langage java d'una manière avancée introduction
I le langage java d'una manière avancée introduction
 
Javaoop
JavaoopJavaoop
Javaoop
 
Une introduction à Javascript et ECMAScript 6
Une introduction à Javascript et ECMAScript 6Une introduction à Javascript et ECMAScript 6
Une introduction à Javascript et ECMAScript 6
 
Gwt oxiane-novae-lr
Gwt oxiane-novae-lrGwt oxiane-novae-lr
Gwt oxiane-novae-lr
 
JavaScript: bonnes pratiques, astuces, et cauchemars
JavaScript: bonnes pratiques, astuces, et cauchemarsJavaScript: bonnes pratiques, astuces, et cauchemars
JavaScript: bonnes pratiques, astuces, et cauchemars
 
devoxx 2022 - 10 ans de Devoxx FR et de Java.pdf
devoxx 2022 - 10 ans de Devoxx FR et de Java.pdfdevoxx 2022 - 10 ans de Devoxx FR et de Java.pdf
devoxx 2022 - 10 ans de Devoxx FR et de Java.pdf
 
Architecture .NET
Architecture .NETArchitecture .NET
Architecture .NET
 
Spring Batch - Julien Jakubowski - November 2010
Spring Batch - Julien Jakubowski - November 2010Spring Batch - Julien Jakubowski - November 2010
Spring Batch - Julien Jakubowski - November 2010
 
Soda sotm fr-2013_02_24
Soda sotm fr-2013_02_24Soda sotm fr-2013_02_24
Soda sotm fr-2013_02_24
 
Javaday Paris 2022 - Java en 2022 : profiter de Java 17
Javaday Paris 2022 - Java en 2022 : profiter de Java 17Javaday Paris 2022 - Java en 2022 : profiter de Java 17
Javaday Paris 2022 - Java en 2022 : profiter de Java 17
 
Soda sotm fr-2013_02_24
Soda sotm fr-2013_02_24Soda sotm fr-2013_02_24
Soda sotm fr-2013_02_24
 
Native script
Native scriptNative script
Native script
 
Les plateformes de développement des web services
Les plateformes de développement des web servicesLes plateformes de développement des web services
Les plateformes de développement des web services
 
Qt4 et 5 pour Linux embarqué
Qt4 et 5 pour Linux embarquéQt4 et 5 pour Linux embarqué
Qt4 et 5 pour Linux embarqué
 
Javascript & tools
Javascript & toolsJavascript & tools
Javascript & tools
 

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 cours c.a.i. web - séance #5 - langages alternatives dans la jvm

  • 1. Conception d'Applications Interactives : Applications Web et JEE Séance #5 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 ● 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