• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Dynamic Languages
 

Dynamic Languages

on

  • 3,719 views

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

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

Statistics

Views

Total Views
3,719
Views on SlideShare
3,718
Embed Views
1

Actions

Likes
0
Downloads
0
Comments
0

1 Embed 1

http://www.slideshare.net 1

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Dynamic Languages Dynamic Languages Presentation Transcript

    • Langages Dynamiques Simplification du Développement Simplification du Développement Simplification du Développement Tugdual Grall
    • Scripts: le retour...
    • 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)
    • 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
    • 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
    • De Nombreux languages pour Java VM JavaOne 2008
    • 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
    • Démonstration JavaScript & Java6 JavaScript & Java6 JavaScript & Java6
    • 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} );
    • Plus Simple ?
    • 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; } }
    • 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
    • Un langage Dynamique
    • Groovy
      • Groovy est un langage de programmation dynamique et agile pour la machine virtuelle Java (JavaVM)
      Groovy Java Java VM ByteCode
    • Groovy 101
      • Tout est objet (pas de types primitifs)
      • Typage Dynamique (optionnel)
      • int a = 2
      • def str = &quot;Hello&quot;
      • Simplification des lists, maps, arrays, beans, etc.
      • def list = [&quot;Rod&quot;, 3, new Date()]
      • def myMap = [Neeta:32, Eric:34]
      • Closures
      • myMap.each( {name, age -> println &quot;$name is $age years old&quot; })
      • >Eric is 34 years old
      • >Neeta is 32 years old
    • Groovy 101 (Cont.)
      • Support des expressions régulières
      • if ( &quot;name&quot; ==~ &quot;na.*&quot; ) { println &quot;match!&quot; }
      • -> 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&quot;${array.size()},${str.size()}, ${list.size()} -> 3,5,6
    • Groovy Markup Native Support for Markup Languages
      • Support de structures hierarchiques par le code
        • XML
        • XHTML
        • Ant
        • Swing
        • SWT
      • Possibilité d’extensions
    • Groovy SQL Easy RDBMS Access
      • JDBC simplifié
        • def sql = Sql.newInstance(url, usr, pwd, driver)
        • sql.execute(&quot;insert into table values ($foo, $bar)&quot;)
        • sql.execute(&quot;insert into table values(?,?)&quot;, [a, b])
        • sql.eachRow(&quot;select * from EMPLOYEES&quot;) { print it.name }
        • def list = sql.rows(&quot;select * from EMPLOYEES&quot;)
      • DataSet
        • def set = sql.dataSet(&quot;EMPLOYEES&quot;)
        • set.add(name: &quot;Johnny&quot;, age: 33)
        • set.each { user -> println user.name }
        • set.findAll { it.age > 22 && it.age < 42 }
    • Développement Simplifié Les Langages Dynamiques pour développer des applications Web développer des applications Web développer des applications Web
    • 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 ( C reate R ead U pdate D elete)
    • Introduction à * Rails Ruby On Rails and Grails overview Ruby On Rails Grails
      • aka: RoR & Rails
      • Convention over ConfigurationDon’t Repeat Yourself (DRY)Basé sur Ruby
      • Déployé sous forme de script CGI/Fast CGI or in its own server (WEBRick)
      • Mais aussi JRuby/JRubyOnRails...
      • Inspiré par RoRDon’t Repeat Yourself (DRY)Basé sur Groovy
      • Utilise Java EE,Spring et autres frameworks Java
      • Deployé sous forme d’application Web Java EE
    • 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
    • IBM Project Zero Une nouvelle alternative... Une nouvelle alternative... Une nouvelle alternative...
    • 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é
    • JavaFX Une nouvelle alternative... Une nouvelle alternative... Une nouvelle alternative...
    • JavaFX: Introduction
      • Annoncé durant JavaOne 2007
      • Utilise la plateforme Java pour développer des UI
      • Est Constitué de:
        • JavaFX Script
        • JavaFX Mobile
    • 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
    • Conclusion Questions Questions Questions
    • Fin... Langages DynamiquesSimplification du Développement