Langages Dynamiques Simplification du Développement Simplification du Développement Simplification du Développement Tugdua...
Scripts: le retour...
Les Scripts: aujourd’hui <ul><li>Scripting: </li></ul><ul><ul><li>PHP, Ruby On Rails pour les applications Web </li></ul><...
Les Scripts: Pourquoi? <ul><li>Prototypage/Tests </li></ul><ul><ul><li>Shell, Builds, manipulation de données, tests unita...
Java et les languages de Scripts <ul><li>Java est une plateforme avec un langage nommé Java </li></ul><ul><li>Réutilisatio...
De Nombreux languages pour Java VM JavaOne 2008
Java et Scripting <ul><li>Dans cette présentation </li></ul><ul><ul><li>Javascript dans la VM </li></ul></ul><ul><ul><ul><...
Démonstration JavaScript & Java6 JavaScript & Java6 JavaScript & Java6
Javascript depuis Java import javax.scripting.* String fLocation = &quot;/demo/customer-validation.js&quot;; ScriptEngineM...
Plus Simple ?
Code en Java public class FilterApp { public static void main(String[] args) { List<String> list = new ArrayList(); list.a...
Code en Groovy def list = [&quot;Olaf&quot;,&quot;Tug&quot;,&quot;John&quot;,&quot;Dave&quot;] def data = list.findAll { i...
Un langage Dynamique
Groovy <ul><li>Groovy est un langage de programmation  dynamique et agile pour la machine virtuelle  Java (JavaVM) </li></...
Groovy 101 <ul><li>Tout est objet (pas de types primitifs) </li></ul><ul><li>Typage Dynamique (optionnel) </li></ul><ul><l...
Groovy 101 (Cont.) <ul><li>Support des expressions régulières </li></ul><ul><li>if ( &quot;name&quot; ==~ &quot;na.*&quot;...
Groovy Markup Native Support for Markup Languages <ul><li>Support de structures hierarchiques par le code </li></ul><ul><u...
Groovy SQL Easy RDBMS Access <ul><li>JDBC simplifié </li></ul><ul><ul><li>def sql = Sql.newInstance(url, usr, pwd, driver)...
Développement Simplifié Les Langages Dynamiques pour  développer des applications Web développer des applications Web déve...
RAD: l’utilisation la plus courante <ul><li>Convention plutot que Configuration </li></ul><ul><li>Utiliser le coté “Dynami...
Introduction à * Rails Ruby On Rails and Grails overview Ruby On Rails Grails <ul><li>aka: RoR & Rails </li></ul><ul><li>C...
Demonstration Création d’une application avec Rails/Grails Création d’une application avec Rails/Grails Création d’une app...
IBM Project Zero Une nouvelle alternative... Une nouvelle alternative... Une nouvelle alternative...
Project Zero: Introduction <ul><li>Une nouvelle plateforme </li></ul><ul><ul><li>Créer </li></ul></ul><ul><ul><ul><li>Déve...
JavaFX Une nouvelle alternative... Une nouvelle alternative... Une nouvelle alternative...
JavaFX: Introduction <ul><li>Annoncé durant JavaOne 2007 </li></ul><ul><li>Utilise la plateforme Java pour développer des ...
JavaFX : Déploiement <ul><li>JavaFX se base sur Java donc... </li></ul><ul><ul><li>Deployé sous forme de JAR </li></ul></u...
Conclusion Questions Questions Questions
Fin... Langages DynamiquesSimplification du Développement
Prochain SlideShare
Chargement dans…5
×

Dynamic Languages

2 687 vues

Publié le

Une presentation generique sur les langages dynamiques et les frameworks associés (RoR, Grails, IBM Project Zero)

Publié dans : Technologie
0 commentaire
1 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

Aucun téléchargement
Vues
Nombre de vues
2 687
Sur SlideShare
0
Issues des intégrations
0
Intégrations
13
Actions
Partages
0
Téléchargements
0
Commentaires
0
J’aime
1
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Dynamic Languages

  1. 1. Langages Dynamiques Simplification du Développement Simplification du Développement Simplification du Développement Tugdual Grall
  2. 2. Scripts: le retour...
  3. 3. Les Scripts: aujourd’hui <ul><li>Scripting: </li></ul><ul><ul><li>PHP, Ruby On Rails pour les applications Web </li></ul></ul><ul><ul><li>Python, Perl pour les taches administratives </li></ul></ul><ul><ul><li>Javascript dans le navigateur avec AJAX </li></ul></ul><ul><li>JCP a inclus de nouveaux standards pour les scripts </li></ul><ul><ul><li>Groovy (JSR-241), BeanShell (JSR-274) </li></ul></ul><ul><ul><li>Inclusion des scripts dans Java par la JSR-223 </li></ul></ul><ul><li>Sun a embauché le créateur de JRuby, Microsoft le createur d’IronPython </li></ul><ul><li>Les scripts arrivent dans les entreprises: </li></ul><ul><ul><li>Simplification des développements </li></ul></ul><ul><ul><li>Extensibilité grâce aux DSL (Domain Specific Languages) </li></ul></ul>
  4. 4. Les Scripts: Pourquoi? <ul><li>Prototypage/Tests </li></ul><ul><ul><li>Shell, Builds, manipulation de données, tests unitaires, génération de code </li></ul></ul><ul><li>Création de nouvelles applications </li></ul><ul><ul><li>Nouvelles applications Web </li></ul></ul><ul><li>Intégration aux SI et ses applications </li></ul><ul><ul><li>Configuration par programmation </li></ul></ul><ul><ul><li>Ecriture règles métiers </li></ul></ul><ul><ul><li>Personnalisation des applications </li></ul></ul>
  5. 5. Java et les languages de Scripts <ul><li>Java est une plateforme avec un langage nommé Java </li></ul><ul><li>Réutilisation de la plateforme Java avec un language dynamique </li></ul><ul><ul><li>Accéder les ressources JavaEE </li></ul></ul><ul><ul><li>Réutilisation des API du monde Java </li></ul></ul><ul><li>Standardisation </li></ul><ul><ul><li>Intégration Java et Scripts: JSR-223 </li></ul></ul><ul><ul><li>Nouveaux Langages: Groovy (JSR-241), BeanShell(JSR-274) </li></ul></ul><ul><ul><li>Javascript fait maintenant partie de Java (6) par le biais de la JSR 223 </li></ul></ul>
  6. 6. De Nombreux languages pour Java VM JavaOne 2008
  7. 7. Java et Scripting <ul><li>Dans cette présentation </li></ul><ul><ul><li>Javascript dans la VM </li></ul></ul><ul><ul><ul><li>Dans Java 6 </li></ul></ul></ul><ul><ul><ul><li>Basé sur le projet Rhino </li></ul></ul></ul><ul><ul><li>Groovy </li></ul></ul><ul><ul><ul><li>Langage Open Source </li></ul></ul></ul><ul><ul><li>Grails/Rails </li></ul></ul><ul><ul><ul><li>Frameworks de developpement Web nouvelle génération </li></ul></ul></ul><ul><ul><li>JavaFX </li></ul></ul><ul><ul><ul><li>la réponse de Sun à MSFT SilverLight/Adobe Flex </li></ul></ul></ul><ul><ul><li>Project Zero </li></ul></ul>
  8. 8. Démonstration JavaScript & Java6 JavaScript & Java6 JavaScript & Java6
  9. 9. Javascript depuis Java import javax.scripting.* String fLocation = &quot;/demo/customer-validation.js&quot;; ScriptEngineManager manager = new ScriptEngineManager(); ScriptEngine engine = manager.getEngineByName(&quot; JavaScript &quot;); engine.eval(new InputStreamReader( new FileInputStream(fLocation))); inv = ( Invocable ) engine; inv. invoke (&quot;getCustomerDiscount&quot;, new Object[] {customerType} );
  10. 10. Plus Simple ?
  11. 11. Code en Java public class FilterApp { public static void main(String[] args) { List<String> list = new ArrayList(); list.add(&quot;Olaf&quot;); list.add(&quot;Tug&quot;); list.add(&quot;John&quot;); list.add(&quot;Dave&quot;); 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; } }
  12. 12. Code en Groovy def list = [&quot;Olaf&quot;,&quot;Tug&quot;,&quot;John&quot;,&quot;Dave&quot;] def data = list.findAll { it.size() >= 4 } println data.size() data.each { println it } Java 25-30 lignes / Groovy 4 lignes
  13. 13. Un langage Dynamique
  14. 14. Groovy <ul><li>Groovy est un langage de programmation dynamique et agile pour la machine virtuelle Java (JavaVM) </li></ul>Groovy Java Java VM ByteCode
  15. 15. Groovy 101 <ul><li>Tout est objet (pas de types primitifs) </li></ul><ul><li>Typage Dynamique (optionnel) </li></ul><ul><li>int a = 2 </li></ul><ul><li>def str = &quot;Hello&quot; </li></ul><ul><li>Simplification des lists, maps, arrays, beans, etc. </li></ul><ul><li>def list = [&quot;Rod&quot;, 3, new Date()] </li></ul><ul><li>def myMap = [Neeta:32, Eric:34] </li></ul><ul><li>Closures </li></ul><ul><li>myMap.each( {name, age -> println &quot;$name is $age years old&quot; }) </li></ul><ul><li>>Eric is 34 years old </li></ul><ul><li>>Neeta is 32 years old </li></ul>
  16. 16. Groovy 101 (Cont.) <ul><li>Support des expressions régulières </li></ul><ul><li>if ( &quot;name&quot; ==~ &quot;na.*&quot; ) { println &quot;match!&quot; } </li></ul><ul><li>-> match! </li></ul><ul><li>Surcharge des operateurs </li></ul><ul><li>def list = [1, 2, 3] + [4, 5, 6] </li></ul><ul><li>list.each { print it } </li></ul><ul><li>-> 123456 </li></ul><ul><li>Autoboxing & polymorphisme sur les collections, arrays, maps, beans, String, iterators, etc. </li></ul><ul><li>String[] array = ['cat', 'dog', 'mouse'] </li></ul><ul><li>def str = 'hello' </li></ul><ul><li>Println&quot;${array.size()},${str.size()}, ${list.size()} -> 3,5,6 </li></ul>
  17. 17. Groovy Markup Native Support for Markup Languages <ul><li>Support de structures hierarchiques par le code </li></ul><ul><ul><li>XML </li></ul></ul><ul><ul><li>XHTML </li></ul></ul><ul><ul><li>Ant </li></ul></ul><ul><ul><li>Swing </li></ul></ul><ul><ul><li>SWT </li></ul></ul><ul><li>Possibilité d’extensions </li></ul>
  18. 18. Groovy SQL Easy RDBMS Access <ul><li>JDBC simplifié </li></ul><ul><ul><li>def sql = Sql.newInstance(url, usr, pwd, driver) </li></ul></ul><ul><ul><li>sql.execute(&quot;insert into table values ($foo, $bar)&quot;) </li></ul></ul><ul><ul><li>sql.execute(&quot;insert into table values(?,?)&quot;, [a, b]) </li></ul></ul><ul><ul><li>sql.eachRow(&quot;select * from EMPLOYEES&quot;) { print it.name } </li></ul></ul><ul><ul><li>def list = sql.rows(&quot;select * from EMPLOYEES&quot;) </li></ul></ul><ul><li>DataSet </li></ul><ul><ul><li>def set = sql.dataSet(&quot;EMPLOYEES&quot;) </li></ul></ul><ul><ul><li>set.add(name: &quot;Johnny&quot;, age: 33) </li></ul></ul><ul><ul><li>set.each { user -> println user.name } </li></ul></ul><ul><ul><li>set.findAll { it.age > 22 && it.age < 42 } </li></ul></ul>
  19. 19. Développement Simplifié Les Langages Dynamiques pour développer des applications Web développer des applications Web développer des applications Web
  20. 20. RAD: l’utilisation la plus courante <ul><li>Convention plutot que Configuration </li></ul><ul><li>Utiliser le coté “Dynamique” des langages </li></ul><ul><li>Création et apprentissage facilité par le scaffolding </li></ul><ul><li>Orienté CRUD ( C reate R ead U pdate D elete) </li></ul>
  21. 21. Introduction à * Rails Ruby On Rails and Grails overview Ruby On Rails Grails <ul><li>aka: RoR & Rails </li></ul><ul><li>Convention over ConfigurationDon’t Repeat Yourself (DRY)Basé sur Ruby </li></ul><ul><li>Déployé sous forme de script CGI/Fast CGI or in its own server (WEBRick) </li></ul><ul><li>Mais aussi JRuby/JRubyOnRails... </li></ul><ul><li>Inspiré par RoRDon’t Repeat Yourself (DRY)Basé sur Groovy </li></ul><ul><li>Utilise Java EE,Spring et autres frameworks Java </li></ul><ul><li>Deployé sous forme d’application Web Java EE </li></ul>
  22. 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
  23. 23. IBM Project Zero Une nouvelle alternative... Une nouvelle alternative... Une nouvelle alternative...
  24. 24. Project Zero: Introduction <ul><li>Une nouvelle plateforme </li></ul><ul><ul><li>Créer </li></ul></ul><ul><ul><ul><li>Développer des applications rapidement en utilisant un langage de script, REST, et AJAX </li></ul></ul></ul><ul><ul><li>Assembler </li></ul></ul><ul><ul><ul><li>Mash-up les différents services et flux pour créer des “composite applications” </li></ul></ul></ul><ul><ul><li>Executer </li></ul></ul><ul><ul><ul><li>Déploiement rapide: l’application est le serveur </li></ul></ul></ul><ul><li>Une nouvelle approche pour IBM </li></ul><ul><ul><li>Développer sur le Web, en Open Source </li></ul></ul><ul><ul><li>Faire évoluer la plateforme en fonction des retours de la communauté </li></ul></ul>
  25. 25. JavaFX Une nouvelle alternative... Une nouvelle alternative... Une nouvelle alternative...
  26. 26. JavaFX: Introduction <ul><li>Annoncé durant JavaOne 2007 </li></ul><ul><li>Utilise la plateforme Java pour développer des UI </li></ul><ul><li>Est Constitué de: </li></ul><ul><ul><li>JavaFX Script </li></ul></ul><ul><ul><li>JavaFX Mobile </li></ul></ul>
  27. 27. JavaFX : Déploiement <ul><li>JavaFX se base sur Java donc... </li></ul><ul><ul><li>Deployé sous forme de JAR </li></ul></ul><ul><ul><li>Stand alone Java Application </li></ul></ul><ul><ul><li>Java Web Start (JNLP) </li></ul></ul><ul><ul><li>Applets </li></ul></ul><ul><li>Optimisation du déploiement grâce au Java Kernel </li></ul><ul><ul><li>Une nouvelle facon d’installer JavaRE 6u10 </li></ul></ul><ul><ul><li>Fait partie du “Customer JRE” </li></ul></ul><ul><ul><ul><li>Quickstarter, Java Kernel, Deploiement Toolkit, Windows Graphic Performance, Nimbus Look & Feel </li></ul></ul></ul>
  28. 28. Conclusion Questions Questions Questions
  29. 29. Fin... Langages DynamiquesSimplification du Développement

×