Slideshare.net (beta)

 

All comments

Add a comment on Slide 1

If you have a SlideShare account, login to comment; else you can comment as a guest


Showing 1-50 of 0 (more)

Dynamic Languages

From tgrall, 2 months ago

Une presentation generique sur les langages dynamiques et les fram more

459 views  |  0 comments  |  0 favorites
Download not available ?
 

Groups / Events

 

 
Embed
options

More Info

This slideshow is Public
Total Views: 459
on Slideshare: 459
from embeds: 0

Slideshow transcript

Slide 1: Langages Dynamiques Simplification du Développement Simplification du Développement Simplification du Développement Tugdual Grall

Slide 2: Scripts: le retour...

Slide 3: Les Scripts: aujourd’hui • Scripting: ‣ PHP, Ruby On Rails pour les applications Web ‣ Python, Perl pour les taches administratives ‣ Javascript dans le navigateur avec AJAX • JCP a inclus de nouveaux standards pour les scripts ‣ Groovy (JSR-241), BeanShell (JSR-274) ‣ Inclusion des scripts dans Java par la JSR-223 • Sun a embauché le créateur de JRuby, Microsoft le createur d’IronPython • Les scripts arrivent dans les entreprises: ‣ Simplification des développements ‣ Extensibilité grâce aux DSL (Domain Specific Languages) 3

Slide 4: Les Scripts: Pourquoi? • Prototypage/Tests ‣ Shell, Builds, manipulation de données, tests unitaires, génération de code • Création de nouvelles applications ‣ Nouvelles applications Web • Intégration aux SI et ses applications ‣ Configuration par programmation ‣ Ecriture règles métiers ‣ Personnalisation des applications 4

Slide 5: Java et les languages de Scripts • Java est une plateforme avec un langage nommé Java • Réutilisation de la plateforme Java avec un language dynamique ‣ Accéder les ressources JavaEE ‣ Réutilisation des API du monde Java • Standardisation ‣ Intégration Java et Scripts: JSR-223 ‣ Nouveaux Langages: Groovy (JSR-241), BeanShell(JSR-274) ‣ Javascript fait maintenant partie de Java (6) par le biais de la JSR 223 5

Slide 6: De Nombreux languages pour Java VM JavaOne 2008 6

Slide 7: Java et Scripting • Dans cette présentation ‣ Javascript dans la VM - Dans Java 6 - Basé sur le projet Rhino ‣ Groovy - Langage Open Source ‣ Grails/Rails - Frameworks de developpement Web nouvelle génération ‣ JavaFX - la réponse de Sun à MSFT SilverLight/Adobe Flex ‣ Project Zero 7

Slide 8: Démonstration JavaScript & Java6 JavaScript & Java6 JavaScript & Java6

Slide 9: Javascript depuis Java import javax.scripting.* String fLocation = "/demo/customer-validation.js"; ScriptEngineManager manager = new ScriptEngineManager(); ScriptEngine engine = manager.getEngineByName("JavaScript"); engine.eval(new InputStreamReader( new FileInputStream(fLocation))); inv = (Invocable) engine; inv.invoke("getCustomerDiscount", new Object[] {customerType} ); 9

Slide 10: Plus Simple ?

Slide 11: Code en Java public class FilterApp { public static void main(String[] args) { List<String> list = new ArrayList(); list.add("Olaf"); list.add("Tug"); list.add("John"); list.add("Dave"); FilterApp filter = new FilterApp(); List<String> data = filter.filterLongerThan(list,4); System.out.println(data.size()); Iterator it = data.iterator(); while (it.hasNext()) {System.out.println(it.next());} } public List filterLongerThan(List list, int length) { List<String> result = new ArrayList(); Iterator it = list.iterator(); while (it.hasNext()) { String item = (String)it.next(); if (item.length()>= length) {result.add(item);} } return result; } } 11

Slide 12: Code en Groovy def list = ["Olaf","Tug","John","Dave"] def data = list.findAll { it.size() >= 4 } println data.size() data.each { println it } Groovy 4 lignes 25-30 lignes / Java 12

Slide 13: Un langage Dynamique

Slide 14: Groovy • Groovy est un langage de programmation dynamique et agile pour la machine virtuelle Java (JavaVM) Groovy Java ByteCode Java VM 14

Slide 15: • Tout est objet (pas de types primitifs) • Typage Dynamique (optionnel) int a = 2 def str = "Hello" • Simplification des lists, maps, arrays, beans, etc. def list = ["Rod", 3, new Date()] def myMap = [Neeta:32, Eric:34] • Closures myMap.each( {name, age -> println "$name is $age years old" }) >Eric is 34 years old >Neeta is 32 years old 15

Slide 16: • Support des expressions régulières if ( "name" ==~ "na.*" ) { println "match!" } -> match! • Surcharge des operateurs def list = [1, 2, 3] + [4, 5, 6] list.each { print it } -> 123456 • Autoboxing & polymorphisme sur les collections, arrays, maps, beans, String, iterators, etc. String[] array = ['cat', 'dog', 'mouse'] def str = 'hello' Println"${array.size()},${str.size()}, ${list.size()} -> 3,5,6 16

Slide 17: • Support de structures hierarchiques par le code ‣ XML ‣ XHTML ‣ Ant ‣ Swing ‣ SWT • Possibilité d’extensions 17

Slide 18: • JDBC simplifié ‣ def sql = Sql.newInstance(url, usr, pwd, driver) ‣ sql.execute("insert into table values ($foo, $bar)") ‣ sql.execute("insert into table values(?,?)", [a, b]) ‣ sql.eachRow("select * from EMPLOYEES") { print it.name } ‣ def list = sql.rows("select * from EMPLOYEES") • DataSet ‣ def set = sql.dataSet("EMPLOYEES") ‣ set.add(name: "Johnny", age: 33) ‣ set.each { user -> println user.name } ‣ set.findAll { it.age > 22 && it.age < 42 } 18

Slide 19: Développement Simplifié Les Langages Dynamiques pour développer des applications Web développer des applications Web développer des applications Web

Slide 20: RAD: l’utilisation la plus courante • Convention plutot que Configuration • Utiliser le coté “Dynamique” des langages • Création et apprentissage facilité par le scaffolding • Orienté CRUD (Create Read Update Delete) 20

Slide 21: Ruby On Rails Grails • aka: RoR & Rails • Inspiré par RoRDon’t • Convention over Repeat Yourself (DRY)Basé ConfigurationDon’t Repeat sur Groovy Yourself (DRY)Basé sur • Utilise Java EE,Spring et Ruby autres frameworks Java • Déployé sous forme de • Deployé sous forme script CGI/Fast CGI or in d’application Web Java EE its own server (WEBRick) • Mais aussi JRuby/JRubyOnRails... 21

Slide 22: Demonstration Création d’une application avec Rails/Grails Création d’une application avec Rails/Grails Création d’une application avec Rails/Grails

Slide 23: IBM Project Zero Une nouvelle alternative... Une nouvelle alternative... Une nouvelle alternative...

Slide 24: Project Zero: Introduction • Une nouvelle plateforme ‣ Créer - Développer des applications rapidement en utilisant un langage de script, REST, et AJAX ‣ Assembler - Mash-up les différents services et flux pour créer des “composite applications” ‣ Executer - Déploiement rapide: l’application est le serveur • Une nouvelle approche pour IBM ‣ Développer sur le Web, en Open Source ‣ Faire évoluer la plateforme en fonction des retours de la communauté 24

Slide 25: JavaFX Une nouvelle alternative... Une nouvelle alternative... Une nouvelle alternative...

Slide 26: JavaFX: Introduction • Annoncé durant JavaOne 2007 • Utilise la plateforme Java pour développer des UI • Est Constitué de: ‣ JavaFX Script ‣ JavaFX Mobile 26

Slide 27: JavaFX : Déploiement • JavaFX se base sur Java donc... ‣ Deployé sous forme de JAR ‣ Stand alone Java Application ‣ Java Web Start (JNLP) ‣ Applets • Optimisation du déploiement grâce au Java Kernel ‣ Une nouvelle facon d’installer JavaRE 6u10 ‣ Fait partie du “Customer JRE” - Quickstarter, Java Kernel, Deploiement Toolkit, Windows Graphic Performance, Nimbus Look & Feel 27

Slide 28: Conclusion Questions Questions Questions

Slide 29: Langages DynamiquesSimplification du Développement Fin...