SlideShare une entreprise Scribd logo
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

Contenu connexe

Tendances

Java (8) eXperiments - DevoxxFR 2016
Java (8) eXperiments - DevoxxFR 2016Java (8) eXperiments - DevoxxFR 2016
Java (8) eXperiments - DevoxxFR 2016
François Sarradin
 
PHP 5.3, PHP Next
PHP 5.3, PHP NextPHP 5.3, PHP Next
PHP 5.3, PHP Next
SQLI
 
XebiConFr 15 - Swift dans la vraie vie
XebiConFr 15 - Swift dans la vraie vieXebiConFr 15 - Swift dans la vraie vie
XebiConFr 15 - Swift dans la vraie vie
Publicis Sapient Engineering
 
Performance et optimisation de PrestaShop
Performance et optimisation de PrestaShopPerformance et optimisation de PrestaShop
Performance et optimisation de PrestaShop
PrestaShop
 
JAVA 8
JAVA 8JAVA 8
Node.js, le pavé dans la mare
Node.js, le pavé dans la mareNode.js, le pavé dans la mare
Node.js, le pavé dans la mare
Valtech
 
Retours sur java 8 devoxx fr 2016
Retours sur java 8 devoxx fr 2016Retours sur java 8 devoxx fr 2016
Retours sur java 8 devoxx fr 2016
Jean-Michel Doudoux
 
Grails from scratch to prod - MixIT 2011
Grails from scratch to prod - MixIT 2011Grails from scratch to prod - MixIT 2011
Grails from scratch to prod - MixIT 2011
Aurélien Maury
 
Introduction à SBT
Introduction à SBTIntroduction à SBT
Introduction à SBT
Jean Detoeuf
 
Introduction TypeScript
Introduction TypeScriptIntroduction TypeScript
Introduction TypeScript
felixbillon
 
Nouveautés de java 8
Nouveautés de java 8Nouveautés de java 8
Nouveautés de java 8
Florian Beaufumé
 
Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013
Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013
Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013
Julien Jakubowski
 
Swift, opportunités et perspectives du dernier langage d'Apple
Swift, opportunités et perspectives du dernier langage d'AppleSwift, opportunités et perspectives du dernier langage d'Apple
Swift, opportunités et perspectives du dernier langage d'Apple
Damien GOSSET
 
Xhprof
XhprofXhprof

Tendances (15)

Java (8) eXperiments - DevoxxFR 2016
Java (8) eXperiments - DevoxxFR 2016Java (8) eXperiments - DevoxxFR 2016
Java (8) eXperiments - DevoxxFR 2016
 
La programmation fonctionnelle en javascript / PF
La programmation fonctionnelle en javascript / PFLa programmation fonctionnelle en javascript / PF
La programmation fonctionnelle en javascript / PF
 
PHP 5.3, PHP Next
PHP 5.3, PHP NextPHP 5.3, PHP Next
PHP 5.3, PHP Next
 
XebiConFr 15 - Swift dans la vraie vie
XebiConFr 15 - Swift dans la vraie vieXebiConFr 15 - Swift dans la vraie vie
XebiConFr 15 - Swift dans la vraie vie
 
Performance et optimisation de PrestaShop
Performance et optimisation de PrestaShopPerformance et optimisation de PrestaShop
Performance et optimisation de PrestaShop
 
JAVA 8
JAVA 8JAVA 8
JAVA 8
 
Node.js, le pavé dans la mare
Node.js, le pavé dans la mareNode.js, le pavé dans la mare
Node.js, le pavé dans la mare
 
Retours sur java 8 devoxx fr 2016
Retours sur java 8 devoxx fr 2016Retours sur java 8 devoxx fr 2016
Retours sur java 8 devoxx fr 2016
 
Grails from scratch to prod - MixIT 2011
Grails from scratch to prod - MixIT 2011Grails from scratch to prod - MixIT 2011
Grails from scratch to prod - MixIT 2011
 
Introduction à SBT
Introduction à SBTIntroduction à SBT
Introduction à SBT
 
Introduction TypeScript
Introduction TypeScriptIntroduction TypeScript
Introduction TypeScript
 
Nouveautés de java 8
Nouveautés de java 8Nouveautés de java 8
Nouveautés de java 8
 
Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013
Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013
Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013
 
Swift, opportunités et perspectives du dernier langage d'Apple
Swift, opportunités et perspectives du dernier langage d'AppleSwift, opportunités et perspectives du dernier langage d'Apple
Swift, opportunités et perspectives du dernier langage d'Apple
 
Xhprof
XhprofXhprof
Xhprof
 

En vedette

Groovy presentation.
Groovy presentation.Groovy presentation.
Groovy presentation.
Infinity
 
Présentation Groovy
Présentation GroovyPrésentation Groovy
Présentation Groovy
JS Bournival
 
Introduction to Grails
Introduction to GrailsIntroduction to Grails
Introduction to Grails
Hiten Pratap Singh
 
Application Architectures in Grails
Application Architectures in GrailsApplication Architectures in Grails
Application Architectures in Grails
Peter Ledbrook
 
Enib cours c.a.i. web - séance #5 : td grails
Enib   cours c.a.i. web - séance #5 : td grailsEnib   cours c.a.i. web - séance #5 : td grails
Enib cours c.a.i. web - séance #5 : td grails
Horacio Gonzalez
 
Grails Un Framework Web Agile
Grails Un Framework Web AgileGrails Un Framework Web Agile
Grails Un Framework Web Agile
Nabil Adouani
 

En vedette (6)

Groovy presentation.
Groovy presentation.Groovy presentation.
Groovy presentation.
 
Présentation Groovy
Présentation GroovyPrésentation Groovy
Présentation Groovy
 
Introduction to Grails
Introduction to GrailsIntroduction to Grails
Introduction to Grails
 
Application Architectures in Grails
Application Architectures in GrailsApplication Architectures in Grails
Application Architectures in Grails
 
Enib cours c.a.i. web - séance #5 : td grails
Enib   cours c.a.i. web - séance #5 : td grailsEnib   cours c.a.i. web - séance #5 : td grails
Enib cours c.a.i. web - séance #5 : td grails
 
Grails Un Framework Web Agile
Grails Un Framework Web AgileGrails Un Framework Web Agile
Grails Un Framework Web Agile
 

Similaire à Dynamic Languages

Séminaire Ruby on Rails (novembre 2010)
Séminaire Ruby on Rails (novembre 2010)Séminaire Ruby on Rails (novembre 2010)
Séminaire Ruby on Rails (novembre 2010)
Novelys
 
Rich Desktop Applications
Rich Desktop ApplicationsRich Desktop Applications
Rich Desktop Applications
goldoraf
 
Java 5, un blian
Java 5, un blianJava 5, un blian
Java 5, un blian
tareq
 
Java 5, un bilan
Java 5,  un bilanJava 5,  un bilan
Java 5, un bilan
teejug
 
Asp Au Service Des Mv Ps
Asp Au Service Des Mv PsAsp Au Service Des Mv Ps
Asp Au Service Des Mv Ps
Gregory Renard
 
Réu technodejs
Réu technodejsRéu technodejs
Réu technodejs
naholyr
 
Découverte du moteur de rendu du projet Spartan
Découverte du moteur de rendu du projet SpartanDécouverte du moteur de rendu du projet Spartan
Découverte du moteur de rendu du projet Spartan
Microsoft
 
Une visite guidée d’Internet Explorer 9 et HTML5 pour les développeurs Web
Une visite guidée d’Internet Explorer 9 et HTML5 pour les développeurs WebUne visite guidée d’Internet Explorer 9 et HTML5 pour les développeurs Web
Une visite guidée d’Internet Explorer 9 et HTML5 pour les développeurs Web
Frédéric Harper
 
Java Database Connectivity
Java Database ConnectivityJava Database Connectivity
Java Database Connectivity
Korteby Farouk
 
Présentation de nodejs
Présentation de nodejsPrésentation de nodejs
Présentation de nodejs
13p
 
Soutenance Zend Framework vs Symfony
Soutenance Zend Framework vs SymfonySoutenance Zend Framework vs Symfony
Soutenance Zend Framework vs Symfony
Vincent Composieux
 
Javascript as a first programming language : votre IC prête pour la révolution !
Javascript as a first programming language : votre IC prête pour la révolution !Javascript as a first programming language : votre IC prête pour la révolution !
Javascript as a first programming language : votre IC prête pour la révolution !
VISEO
 
Formation java script
Formation java scriptFormation java script
Formation java script
Romdhani Asma
 
Big Data Viz (and much more!) with Apache Zeppelin
Big Data Viz (and much more!) with Apache ZeppelinBig Data Viz (and much more!) with Apache Zeppelin
Big Data Viz (and much more!) with Apache Zeppelin
Bruno Bonnin
 
Nouveautés JavaScript dans le monde Microsoft
Nouveautés JavaScript dans le monde MicrosoftNouveautés JavaScript dans le monde Microsoft
Nouveautés JavaScript dans le monde Microsoft
davrous
 
Domain-Specific Languages avec Groovy
Domain-Specific Languages avec GroovyDomain-Specific Languages avec Groovy
Domain-Specific Languages avec Groovy
Guillaume Laforge
 
Google App Engine For Java
Google App Engine For JavaGoogle App Engine For Java
Google App Engine For Java
tcouery
 
Démystification de Spring une histoire de pattern
Démystification de Spring une histoire de patternDémystification de Spring une histoire de pattern
Démystification de Spring une histoire de pattern
letourneur2
 
Web dev open door
Web dev   open doorWeb dev   open door
Web dev open door
LeTesteur
 
Vert.x 3
Vert.x 3Vert.x 3
Vert.x 3
Xavier MARIN
 

Similaire à Dynamic Languages (20)

Séminaire Ruby on Rails (novembre 2010)
Séminaire Ruby on Rails (novembre 2010)Séminaire Ruby on Rails (novembre 2010)
Séminaire Ruby on Rails (novembre 2010)
 
Rich Desktop Applications
Rich Desktop ApplicationsRich Desktop Applications
Rich Desktop Applications
 
Java 5, un blian
Java 5, un blianJava 5, un blian
Java 5, un blian
 
Java 5, un bilan
Java 5,  un bilanJava 5,  un bilan
Java 5, un bilan
 
Asp Au Service Des Mv Ps
Asp Au Service Des Mv PsAsp Au Service Des Mv Ps
Asp Au Service Des Mv Ps
 
Réu technodejs
Réu technodejsRéu technodejs
Réu technodejs
 
Découverte du moteur de rendu du projet Spartan
Découverte du moteur de rendu du projet SpartanDécouverte du moteur de rendu du projet Spartan
Découverte du moteur de rendu du projet Spartan
 
Une visite guidée d’Internet Explorer 9 et HTML5 pour les développeurs Web
Une visite guidée d’Internet Explorer 9 et HTML5 pour les développeurs WebUne visite guidée d’Internet Explorer 9 et HTML5 pour les développeurs Web
Une visite guidée d’Internet Explorer 9 et HTML5 pour les développeurs Web
 
Java Database Connectivity
Java Database ConnectivityJava Database Connectivity
Java Database Connectivity
 
Présentation de nodejs
Présentation de nodejsPrésentation de nodejs
Présentation de nodejs
 
Soutenance Zend Framework vs Symfony
Soutenance Zend Framework vs SymfonySoutenance Zend Framework vs Symfony
Soutenance Zend Framework vs Symfony
 
Javascript as a first programming language : votre IC prête pour la révolution !
Javascript as a first programming language : votre IC prête pour la révolution !Javascript as a first programming language : votre IC prête pour la révolution !
Javascript as a first programming language : votre IC prête pour la révolution !
 
Formation java script
Formation java scriptFormation java script
Formation java script
 
Big Data Viz (and much more!) with Apache Zeppelin
Big Data Viz (and much more!) with Apache ZeppelinBig Data Viz (and much more!) with Apache Zeppelin
Big Data Viz (and much more!) with Apache Zeppelin
 
Nouveautés JavaScript dans le monde Microsoft
Nouveautés JavaScript dans le monde MicrosoftNouveautés JavaScript dans le monde Microsoft
Nouveautés JavaScript dans le monde Microsoft
 
Domain-Specific Languages avec Groovy
Domain-Specific Languages avec GroovyDomain-Specific Languages avec Groovy
Domain-Specific Languages avec Groovy
 
Google App Engine For Java
Google App Engine For JavaGoogle App Engine For Java
Google App Engine For Java
 
Démystification de Spring une histoire de pattern
Démystification de Spring une histoire de patternDémystification de Spring une histoire de pattern
Démystification de Spring une histoire de pattern
 
Web dev open door
Web dev   open doorWeb dev   open door
Web dev open door
 
Vert.x 3
Vert.x 3Vert.x 3
Vert.x 3
 

Plus de Tugdual Grall

Introduction to Streaming with Apache Flink
Introduction to Streaming with Apache FlinkIntroduction to Streaming with Apache Flink
Introduction to Streaming with Apache Flink
Tugdual Grall
 
Introduction to Streaming with Apache Flink
Introduction to Streaming with Apache FlinkIntroduction to Streaming with Apache Flink
Introduction to Streaming with Apache Flink
Tugdual Grall
 
Fast Cars, Big Data - How Streaming Can Help Formula 1
Fast Cars, Big Data - How Streaming Can Help Formula 1Fast Cars, Big Data - How Streaming Can Help Formula 1
Fast Cars, Big Data - How Streaming Can Help Formula 1
Tugdual Grall
 
Lambda Architecture: The Best Way to Build Scalable and Reliable Applications!
Lambda Architecture: The Best Way to Build Scalable and Reliable Applications!Lambda Architecture: The Best Way to Build Scalable and Reliable Applications!
Lambda Architecture: The Best Way to Build Scalable and Reliable Applications!
Tugdual Grall
 
Big Data Journey
Big Data JourneyBig Data Journey
Big Data Journey
Tugdual Grall
 
Proud to be Polyglot - Riviera Dev 2015
Proud to be Polyglot - Riviera Dev 2015Proud to be Polyglot - Riviera Dev 2015
Proud to be Polyglot - Riviera Dev 2015
Tugdual Grall
 
Introduction to NoSQL with MongoDB - SQLi Workshop
Introduction to NoSQL with MongoDB - SQLi WorkshopIntroduction to NoSQL with MongoDB - SQLi Workshop
Introduction to NoSQL with MongoDB - SQLi Workshop
Tugdual Grall
 
Enabling Telco to Build and Run Modern Applications
Enabling Telco to Build and Run Modern Applications Enabling Telco to Build and Run Modern Applications
Enabling Telco to Build and Run Modern Applications
Tugdual Grall
 
MongoDB and Hadoop
MongoDB and HadoopMongoDB and Hadoop
MongoDB and Hadoop
Tugdual Grall
 
Proud to be polyglot
Proud to be polyglotProud to be polyglot
Proud to be polyglot
Tugdual Grall
 
Drop your table ! MongoDB Schema Design
Drop your table ! MongoDB Schema DesignDrop your table ! MongoDB Schema Design
Drop your table ! MongoDB Schema Design
Tugdual Grall
 
Devoxx 2014 : Atelier MongoDB - Decouverte de MongoDB 2.6
Devoxx 2014 : Atelier MongoDB - Decouverte de MongoDB 2.6Devoxx 2014 : Atelier MongoDB - Decouverte de MongoDB 2.6
Devoxx 2014 : Atelier MongoDB - Decouverte de MongoDB 2.6
Tugdual Grall
 
Some cool features of MongoDB
Some cool features of MongoDBSome cool features of MongoDB
Some cool features of MongoDB
Tugdual Grall
 
Building Your First MongoDB Application
Building Your First MongoDB ApplicationBuilding Your First MongoDB Application
Building Your First MongoDB Application
Tugdual Grall
 
Opensourceday 2014-iot
Opensourceday 2014-iotOpensourceday 2014-iot
Opensourceday 2014-iot
Tugdual Grall
 
Neotys conference
Neotys conferenceNeotys conference
Neotys conference
Tugdual Grall
 
Softshake 2013: Introduction to NoSQL with Couchbase
Softshake 2013: Introduction to NoSQL with CouchbaseSoftshake 2013: Introduction to NoSQL with Couchbase
Softshake 2013: Introduction to NoSQL with Couchbase
Tugdual Grall
 
Introduction to NoSQL with Couchbase
Introduction to NoSQL with CouchbaseIntroduction to NoSQL with Couchbase
Introduction to NoSQL with Couchbase
Tugdual Grall
 
Why and How to integrate Hadoop and NoSQL?
Why and How to integrate Hadoop and NoSQL?Why and How to integrate Hadoop and NoSQL?
Why and How to integrate Hadoop and NoSQL?
Tugdual Grall
 
NoSQL Matters 2013 - Introduction to Map Reduce with Couchbase 2.0
NoSQL Matters 2013 - Introduction to Map Reduce with Couchbase 2.0NoSQL Matters 2013 - Introduction to Map Reduce with Couchbase 2.0
NoSQL Matters 2013 - Introduction to Map Reduce with Couchbase 2.0
Tugdual Grall
 

Plus de Tugdual Grall (20)

Introduction to Streaming with Apache Flink
Introduction to Streaming with Apache FlinkIntroduction to Streaming with Apache Flink
Introduction to Streaming with Apache Flink
 
Introduction to Streaming with Apache Flink
Introduction to Streaming with Apache FlinkIntroduction to Streaming with Apache Flink
Introduction to Streaming with Apache Flink
 
Fast Cars, Big Data - How Streaming Can Help Formula 1
Fast Cars, Big Data - How Streaming Can Help Formula 1Fast Cars, Big Data - How Streaming Can Help Formula 1
Fast Cars, Big Data - How Streaming Can Help Formula 1
 
Lambda Architecture: The Best Way to Build Scalable and Reliable Applications!
Lambda Architecture: The Best Way to Build Scalable and Reliable Applications!Lambda Architecture: The Best Way to Build Scalable and Reliable Applications!
Lambda Architecture: The Best Way to Build Scalable and Reliable Applications!
 
Big Data Journey
Big Data JourneyBig Data Journey
Big Data Journey
 
Proud to be Polyglot - Riviera Dev 2015
Proud to be Polyglot - Riviera Dev 2015Proud to be Polyglot - Riviera Dev 2015
Proud to be Polyglot - Riviera Dev 2015
 
Introduction to NoSQL with MongoDB - SQLi Workshop
Introduction to NoSQL with MongoDB - SQLi WorkshopIntroduction to NoSQL with MongoDB - SQLi Workshop
Introduction to NoSQL with MongoDB - SQLi Workshop
 
Enabling Telco to Build and Run Modern Applications
Enabling Telco to Build and Run Modern Applications Enabling Telco to Build and Run Modern Applications
Enabling Telco to Build and Run Modern Applications
 
MongoDB and Hadoop
MongoDB and HadoopMongoDB and Hadoop
MongoDB and Hadoop
 
Proud to be polyglot
Proud to be polyglotProud to be polyglot
Proud to be polyglot
 
Drop your table ! MongoDB Schema Design
Drop your table ! MongoDB Schema DesignDrop your table ! MongoDB Schema Design
Drop your table ! MongoDB Schema Design
 
Devoxx 2014 : Atelier MongoDB - Decouverte de MongoDB 2.6
Devoxx 2014 : Atelier MongoDB - Decouverte de MongoDB 2.6Devoxx 2014 : Atelier MongoDB - Decouverte de MongoDB 2.6
Devoxx 2014 : Atelier MongoDB - Decouverte de MongoDB 2.6
 
Some cool features of MongoDB
Some cool features of MongoDBSome cool features of MongoDB
Some cool features of MongoDB
 
Building Your First MongoDB Application
Building Your First MongoDB ApplicationBuilding Your First MongoDB Application
Building Your First MongoDB Application
 
Opensourceday 2014-iot
Opensourceday 2014-iotOpensourceday 2014-iot
Opensourceday 2014-iot
 
Neotys conference
Neotys conferenceNeotys conference
Neotys conference
 
Softshake 2013: Introduction to NoSQL with Couchbase
Softshake 2013: Introduction to NoSQL with CouchbaseSoftshake 2013: Introduction to NoSQL with Couchbase
Softshake 2013: Introduction to NoSQL with Couchbase
 
Introduction to NoSQL with Couchbase
Introduction to NoSQL with CouchbaseIntroduction to NoSQL with Couchbase
Introduction to NoSQL with Couchbase
 
Why and How to integrate Hadoop and NoSQL?
Why and How to integrate Hadoop and NoSQL?Why and How to integrate Hadoop and NoSQL?
Why and How to integrate Hadoop and NoSQL?
 
NoSQL Matters 2013 - Introduction to Map Reduce with Couchbase 2.0
NoSQL Matters 2013 - Introduction to Map Reduce with Couchbase 2.0NoSQL Matters 2013 - Introduction to Map Reduce with Couchbase 2.0
NoSQL Matters 2013 - Introduction to Map Reduce with Couchbase 2.0
 

Dynamic Languages

  • 1. Langages Dynamiques Simplification du Développement Simplification du Développement Simplification du Développement Tugdual Grall
  • 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)
  • 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
  • 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
  • 6. De Nombreux languages pour Java VM JavaOne 2008
  • 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
  • 8. Démonstration JavaScript & Java6 JavaScript & Java6 JavaScript & Java6
  • 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} );
  • 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. 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
  • 14. Groovy Groovy est un langage de programmation dynamique et agile pour la machine virtuelle Java (JavaVM) Groovy Java Java VM ByteCode
  • 15. 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
  • 16. 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
  • 17. Groovy Markup Native Support for Markup Languages Support de structures hierarchiques par le code XML XHTML Ant Swing SWT Possibilité d’extensions
  • 18. 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 }
  • 19. Développement Simplifié Les Langages Dynamiques pour développer des applications Web développer des applications Web développer des applications Web
  • 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 ( C reate R ead U pdate D elete)
  • 21. 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
  • 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. IBM Project Zero Une nouvelle alternative... Une nouvelle alternative... Une nouvelle alternative...
  • 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é
  • 25. JavaFX Une nouvelle alternative... Une nouvelle alternative... Une nouvelle alternative...
  • 26. JavaFX: Introduction Annoncé durant JavaOne 2007 Utilise la plateforme Java pour développer des UI Est Constitué de: JavaFX Script JavaFX Mobile
  • 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