Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

  • Login to see the comments

  • Be the first to like this

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

  1. 1. Conception dApplicationsInteractives :Applications Web et JEESéance #5Langages alternatives dans la JVM
  2. 2. Langages alternatives pour la JVM
  3. 3. Langages alternatives pour la JVMJava ≠ 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 duhardware et OS○ Bytecode format pivot indépendant de la plate-forme● Tendance à saffranchir de lOS○ Côté client : navigateur comme plate-forme○ Côté serveur : JVM comme plate-forme
  5. 5. Pourquoi des nouveaux langagesIf all you have is a hammer,everything looks like a nailJava est un très bon langage généraliste, maispas la solution ultime● Scripting ?● Programmation fonctionnelle ?● Simplification et réduction du boilerplate ?
  6. 6. Pourquoi des nouveaux langagessur la JVM● Le target est le bytecode○ Pas besoin dimplémenter la compilation vers leformat natif de chaque OS● Profiter de lécosystème Java○ Bibliothèques, serveurs, outils...○ Courbe dadoption 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 dautres langages○ JRuby (Ruby), Jython (Python), Rhino (JS), ElasticCOBOL (Cobol), JGNAT (Ada), Luaj (Lua)...
  8. 8. JythonInterprè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 dobjets Java dans du code PythonTrès utilisé pour prototypage, scripting et exploration desclasses Javahttp://www.jython.org/
  9. 9. JRubyInterprète Ruby écrit en Java, créé en 2001● Equivalente de Jython pout Ruby● Capable de faire tourner Rails● Plus rapide que limplémentation deréférence○ Option JIThttp://www.jruby.org/
  10. 10. GroovyLangage 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 expressionsrégulières● Fermetures ou clôtures (closures)● Surcharge des opérateurshttp://groovy.codehaus.org/
  11. 11. CeylonNouveau langage pour la JVM par RedHat● "Java tel quils serait si il avait été développéaujourdhui"● Typage statique○ Types union et intersection● Syntaxe régulière○ Sucre syntactique ajouté● Modulaire○ Dépôt Ceylon Herdhttp://www.ceylon-lang.org/
  12. 12. ScalaLangage de programmation multi-paradigme○ Programmations orientée objet et fonctionnelle● Typage statique, syntaxe concise● Compilé vers bytecode● Intéropérabilité avec le code Javahttp://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

×