SlideShare una empresa de Scribd logo
1 de 34
Descargar para leer sin conexión
Conception d'Applications
Interactives :
Applications Web et JEE
Séance #5
J'ai besoin d'une appli we rapidement
On a un besoin !
Maintenant on fait comment ?
Développement rapide d'applications web ?
Comment fait-on quand on a besoin de créer rapidement
une petite application web d'entreprise ?
● La plupart des forges logicielles d'entreprise ne sont pas
adaptées à ce besoin...
Développement rapide d'applications web ?
● Réponse du freelance hipster
Java est ringard, lourd et compliqué, utilise quelque
chose de moderne comme Ruby on Rails !
Développement rapide d'applications web ?
● Réponse de la Production
Dans cette boîte on travaille sur la JVM,
et on a des normes. Ton truc d'hippie ne
rentrera pas dans mes serveurs !
Développement rapide d'applications web ?
● Réponse du manager
Nos équipes ne connaissent pas la techno,
les procédures ne sont pas là, le workflow n'est
pas prêt, et on ne sait pas chiffrer ça !
Et si on se trompe, à qui la faute ?
Développement rapide d'applications web ?
● Réponse du marketing
On a besoin de l'appli pour lundi !
C'est toujours pareil, vous dites toujours non !
On va faire appel à une web agency et
déployer sur le cloud, au moins ça sera fait...
Et moins cher !
Développement rapide d'applications web ?
● Et pourtant le besoin est là... Quoi faire ?
On est en 2013 !
Aujourd'hui on peut faire du développement
web rapide sur la JVM
Développement web
rapide ?
C'est quoi ce beans ?
● Framework MVC de développement web rapide
○ Full stack Framework
○ Générateurs de code : models, views, controllers
● Convention plutôt que configuration
○ Élimination de la tuyauterie
○ Pas de soupe au XML
○ Don’t Repeat Yourself (DRY)
● Orienté agilité, l'appli tourne dès le premier jour
Ruby a changé la façon de faire du
développement web
Un peu d'histoire : Ruby on Rails
● Frameworks orientés applications d'entreprise
○ Grosses applications
○ Cycles de développement long
○ Grosses équipes de développeurs
○ Coût de setup projet élevé
● Peu adaptés à petites applications ou cycles rapides
Un peu d'histoire :
les outils JEE face à Rails
Concepts du
développement web
rapide ?
De quoi mon framework a besoin ?
Convention plutôt que configuration
● Le framework doit avoir des conventions qui définisent
comment coder
○ Si on suit les conventions, il n'y a pas de tuyauterie à faire
● Le framework doit permettre de coder autrement
○ Pour des besoins pas adaptées à la convention
○ Dans ce cas, on doit faire la tuyauterie
● Pour que ça marche, ces cas doivent rester à la marge
○ Ratio 80% convention, 20% configuration maximum
Principe Don't Repeat Yourself (DRY)
Si on fait du web, suivons le web
When a web framework starts an architecture fight
with the web, the framework loses.
● PHP et Ruby on Rails l'ont bien compris
○ Si on fait du web, on s'adapte au web !
● Un framework de développent web rapide doit être
adapté au web
Modifiez, rechargez, c'est fait !
● Devoir redémarrer le serveur après une modif ?
● Redéployer car on a changé un fichier ?
● A nouveau, regardons PHP ou Ruby on Rails
○ Si on fait du web, on s'adapte au web !
● Avec un framework de développent web rapide il doit
suffit de recharger la page pour qu la modif est prise en
compte
○ Ca, c'est de la productivité !
Grails
Bridgekeeper: What... is your name?
Sir Lancelot: My name is Sir Lancelot of Camelot.
Bridgekeeper: What... is your quest?
Sir Lancelot: To seek the Holy Grail.
Bridgekeeper: What... is your favourite colour?
Sir Lancelot: Blue.
Bridgekeeper: Go on. Off you go.
Monty Python and the Holy Grail
Grails
● Framework de développement web rapide
○ Sur la JVM
○ Avec une intégration sans faille avec Java
● Inspiré par Ruby on Rails, Django et autres
○ Convention plutôt que configuration
○ Don’t Repeat Yourself (DRY)
Grails à la rescousse
Il y a quoi dans ?
● Développement en Groovy
● Très expressive
● Sans tuyauterie
○ Rapidité et simplicité :
change le code et recharge la page !
● Syntaxe familière pour développeurs Java
● Intégration sans faille avec Java
Il y a quoi d'autre dans ?
Groovy, baby !
Langage 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 regex
● Fermetures ou clôtures (closures)
● Surcharge des opérateurs
http://groovy.codehaus.org/
Grails n'est pas un jouet
● Si vous faites les choses à la façon Grails
○ Tout est simple, aucun boilerplate
● Pour les besoins exotiques
○ Vous pouvez mettre les mains dans Spring
○ Tout reste propre pour le reste de l'application
Mais il y a quoi sous le capot ?
● Spring Tool Suite (STS)
○ IDE basé sur Eclipse
○ Support pour toute la suite Spring
○ Support complet Grails (et Groovy, of course)
● IntelliJ Ultimate Edition
○ Support complet Grails (et Groovy, of course) via plugin
○ Payant
● NetBeans
○ Support complet Grails (et Groovy, of course via plugin
● Gedit, TextMate, Notepad++, même Emacs !
Et quel IDE j'utilise ?
● Les développeurs cools jouent avec Play Framework
Mais si je veux être encore plus hype ?
Play! Framework
Je veux jouer !
Le projet
Play! est un framework pour
● faire du développement web
● avec une haute productivité
● avec l'état de l'art des technologies web
● sur la JVM
● double modèle de développement
○ Java ou Scala
- productivité et plaisir
● Conçu par des développeurs web pour des
développeurs web
● Gestion simple, flexible et puissante du protocole HTTP
○ Framework web -> HTTP au centre
○ Stateless, request-response
● Facilité de démarrage
○ Courbe d'apprentissage douce
● Rapidité et simplicité : change le code et recharge la
page !
● Framework complet, full-stack
non plus n'est pas un jouet
● Modèle de programmation HTTP asynchrone
● Architecture scalable de haute performance
● Modèle reactive, non bloquant
● Typage fort
● Architecture stateless basé sur HTTP
● Modifiez, rechargez, c'est fait !
● HTTP utilisé comme protocole, avec sa semantique
Le web a évolué
● On est au bord d'une nouvelle évolution :
○ Les requêtes asynchrones en temps réel
○ Des énormes flux de données
○ Les BDD non relationnelles
● Les frameworks classiques ont du mal à s'adapter
Les limites des frameworks
classiques
● Chaque utilisateur connecté consomme des
ressources
○ Mémoire, threads...
● Modèles basés sur l'attente active
○ Synchronisme entre requête et réponse
○ On bloque un thread côté serveur
● Les I/O sont bloquantes
Play! utilise un modèle réactif
● Inversion de contrôle
○ On agit que lorsqu'on a quelque chose à faire
● Sans perte de contrôle
○ Mais on est capable de garder le contrôle
● Iteratee/Enumerator IO
● Eclipse
○ Avec ScalaIDE plugin
○ Support complet Play! (et Scala, of course)
● IntelliJ Ultimate Edition
○ Support complet Play! (et Scala, of course) via plugin
○ Payant
● NetBeans
○ Support complet Grails (et Groovy, of course via plugin
Et quel IDE j'utilise ?
Le mot de la fin
Un principe à ne pas oublier
Loi de l'outil
Si le seul outil que tu as est un marteau, tu vas t'attaquer
à tous les problèmes comme si ils étaient des clous
● Grails, Play et autres sont adaptés à un type de besoin
● GWT, Spring, JSF et autres sont adaptés à un autre
Il faut utiliser chaque techno pour l'utilisation
pour laquelle il est pertinent
Show us something, dude !
Voici une petite démo

Más contenido relacionado

La actualidad más candente

ENIB 2015 2016 - CAI Web S02E01- Côté Navigateur 2/3 - HTML5 / CSS3 / Twitter...
ENIB 2015 2016 - CAI Web S02E01- Côté Navigateur 2/3 - HTML5 / CSS3 / Twitter...ENIB 2015 2016 - CAI Web S02E01- Côté Navigateur 2/3 - HTML5 / CSS3 / Twitter...
ENIB 2015 2016 - CAI Web S02E01- Côté Navigateur 2/3 - HTML5 / CSS3 / Twitter...Horacio Gonzalez
 
Pourquoi choisir un CMS Open Source ?
Pourquoi choisir un CMS Open Source ?Pourquoi choisir un CMS Open Source ?
Pourquoi choisir un CMS Open Source ?OSInet
 
Enib cours c.a.i. web - séance #5 - langages alternatives dans la jvm
Enib   cours c.a.i. web - séance #5 - langages alternatives dans la jvmEnib   cours c.a.i. web - séance #5 - langages alternatives dans la jvm
Enib cours c.a.i. web - séance #5 - langages alternatives dans la jvmHoracio Gonzalez
 
Web perf Silicon Comte
Web perf Silicon ComteWeb perf Silicon Comte
Web perf Silicon ComteSilicon Comté
 
GDG Rennes - Bootcamp Initiation Android - Théorie
GDG Rennes - Bootcamp Initiation Android -  ThéorieGDG Rennes - Bootcamp Initiation Android -  Théorie
GDG Rennes - Bootcamp Initiation Android - ThéorieHoracio Gonzalez
 
ENIB 2016 2017 - CAI Web S02E01- Côté navigateur 2/3 - HTML5, CSS3, Twitter B...
ENIB 2016 2017 - CAI Web S02E01- Côté navigateur 2/3 - HTML5, CSS3, Twitter B...ENIB 2016 2017 - CAI Web S02E01- Côté navigateur 2/3 - HTML5, CSS3, Twitter B...
ENIB 2016 2017 - CAI Web S02E01- Côté navigateur 2/3 - HTML5, CSS3, Twitter B...Horacio Gonzalez
 
Le gameday...un concept devopsludique
Le gameday...un concept devopsludiqueLe gameday...un concept devopsludique
Le gameday...un concept devopsludiqueEspritAgile
 
Js, quoi de neuf ? - strasbourg js - septembre 2016
Js, quoi de neuf ? - strasbourg js - septembre 2016Js, quoi de neuf ? - strasbourg js - septembre 2016
Js, quoi de neuf ? - strasbourg js - septembre 2016kraeger
 
ENIB 2015 2016 - CAI Web S02E01- Côté Navigateur 1/3 - HTTP, HTML, CSS JS
ENIB 2015 2016 - CAI Web S02E01- Côté Navigateur 1/3 - HTTP, HTML, CSS JSENIB 2015 2016 - CAI Web S02E01- Côté Navigateur 1/3 - HTTP, HTML, CSS JS
ENIB 2015 2016 - CAI Web S02E01- Côté Navigateur 1/3 - HTTP, HTML, CSS JSHoracio Gonzalez
 
Drupagora 2014 : Reprendre un projet avec Drupal quand on a des centaines de...
Drupagora 2014 :  Reprendre un projet avec Drupal quand on a des centaines de...Drupagora 2014 :  Reprendre un projet avec Drupal quand on a des centaines de...
Drupagora 2014 : Reprendre un projet avec Drupal quand on a des centaines de...Core-Techs
 
Pourquoi la documentation compte ?
Pourquoi la documentation compte ?Pourquoi la documentation compte ?
Pourquoi la documentation compte ?sarahhaim shl
 
Ionic, react native, native script
Ionic, react native, native scriptIonic, react native, native script
Ionic, react native, native scriptStéphanie MOALLIC
 
ASP.NET MVC 6
ASP.NET MVC 6ASP.NET MVC 6
ASP.NET MVC 6Microsoft
 
ENIB 2013-2014 - CAI Web #1: Côté navigateur 3/3
ENIB 2013-2014 - CAI Web #1: Côté navigateur 3/3 ENIB 2013-2014 - CAI Web #1: Côté navigateur 3/3
ENIB 2013-2014 - CAI Web #1: Côté navigateur 3/3 Horacio Gonzalez
 

La actualidad más candente (20)

Livre Blanc Web temps réel - Node JS
Livre Blanc Web temps réel - Node JSLivre Blanc Web temps réel - Node JS
Livre Blanc Web temps réel - Node JS
 
ENIB 2015 2016 - CAI Web S02E01- Côté Navigateur 2/3 - HTML5 / CSS3 / Twitter...
ENIB 2015 2016 - CAI Web S02E01- Côté Navigateur 2/3 - HTML5 / CSS3 / Twitter...ENIB 2015 2016 - CAI Web S02E01- Côté Navigateur 2/3 - HTML5 / CSS3 / Twitter...
ENIB 2015 2016 - CAI Web S02E01- Côté Navigateur 2/3 - HTML5 / CSS3 / Twitter...
 
Ionic
IonicIonic
Ionic
 
Livre Drupal avance
Livre Drupal avanceLivre Drupal avance
Livre Drupal avance
 
Pourquoi choisir un CMS Open Source ?
Pourquoi choisir un CMS Open Source ?Pourquoi choisir un CMS Open Source ?
Pourquoi choisir un CMS Open Source ?
 
Introduction à Node.js
Introduction à Node.js Introduction à Node.js
Introduction à Node.js
 
Les performances Web mobile
Les performances Web mobileLes performances Web mobile
Les performances Web mobile
 
Enib cours c.a.i. web - séance #5 - langages alternatives dans la jvm
Enib   cours c.a.i. web - séance #5 - langages alternatives dans la jvmEnib   cours c.a.i. web - séance #5 - langages alternatives dans la jvm
Enib cours c.a.i. web - séance #5 - langages alternatives dans la jvm
 
Web perf Silicon Comte
Web perf Silicon ComteWeb perf Silicon Comte
Web perf Silicon Comte
 
GDG Rennes - Bootcamp Initiation Android - Théorie
GDG Rennes - Bootcamp Initiation Android -  ThéorieGDG Rennes - Bootcamp Initiation Android -  Théorie
GDG Rennes - Bootcamp Initiation Android - Théorie
 
ENIB 2016 2017 - CAI Web S02E01- Côté navigateur 2/3 - HTML5, CSS3, Twitter B...
ENIB 2016 2017 - CAI Web S02E01- Côté navigateur 2/3 - HTML5, CSS3, Twitter B...ENIB 2016 2017 - CAI Web S02E01- Côté navigateur 2/3 - HTML5, CSS3, Twitter B...
ENIB 2016 2017 - CAI Web S02E01- Côté navigateur 2/3 - HTML5, CSS3, Twitter B...
 
Le gameday...un concept devopsludique
Le gameday...un concept devopsludiqueLe gameday...un concept devopsludique
Le gameday...un concept devopsludique
 
Js, quoi de neuf ? - strasbourg js - septembre 2016
Js, quoi de neuf ? - strasbourg js - septembre 2016Js, quoi de neuf ? - strasbourg js - septembre 2016
Js, quoi de neuf ? - strasbourg js - septembre 2016
 
CasperJS
CasperJSCasperJS
CasperJS
 
ENIB 2015 2016 - CAI Web S02E01- Côté Navigateur 1/3 - HTTP, HTML, CSS JS
ENIB 2015 2016 - CAI Web S02E01- Côté Navigateur 1/3 - HTTP, HTML, CSS JSENIB 2015 2016 - CAI Web S02E01- Côté Navigateur 1/3 - HTTP, HTML, CSS JS
ENIB 2015 2016 - CAI Web S02E01- Côté Navigateur 1/3 - HTTP, HTML, CSS JS
 
Drupagora 2014 : Reprendre un projet avec Drupal quand on a des centaines de...
Drupagora 2014 :  Reprendre un projet avec Drupal quand on a des centaines de...Drupagora 2014 :  Reprendre un projet avec Drupal quand on a des centaines de...
Drupagora 2014 : Reprendre un projet avec Drupal quand on a des centaines de...
 
Pourquoi la documentation compte ?
Pourquoi la documentation compte ?Pourquoi la documentation compte ?
Pourquoi la documentation compte ?
 
Ionic, react native, native script
Ionic, react native, native scriptIonic, react native, native script
Ionic, react native, native script
 
ASP.NET MVC 6
ASP.NET MVC 6ASP.NET MVC 6
ASP.NET MVC 6
 
ENIB 2013-2014 - CAI Web #1: Côté navigateur 3/3
ENIB 2013-2014 - CAI Web #1: Côté navigateur 3/3 ENIB 2013-2014 - CAI Web #1: Côté navigateur 3/3
ENIB 2013-2014 - CAI Web #1: Côté navigateur 3/3
 

Destacado

Enib cours c.a.i. web - séance #1 - html5 css3-js - 1
Enib   cours c.a.i. web - séance #1 - html5 css3-js - 1Enib   cours c.a.i. web - séance #1 - html5 css3-js - 1
Enib cours c.a.i. web - séance #1 - html5 css3-js - 1Horacio Gonzalez
 
Ux092 formation-mise-en-place-d-annuaire-ldap
Ux092 formation-mise-en-place-d-annuaire-ldapUx092 formation-mise-en-place-d-annuaire-ldap
Ux092 formation-mise-en-place-d-annuaire-ldapCERTyou Formation
 
Africavenue France : annuaire afro
Africavenue France : annuaire afroAfricavenue France : annuaire afro
Africavenue France : annuaire afroBoris Jobs
 
Présentation Complus Régie
Présentation Complus Régie Présentation Complus Régie
Présentation Complus Régie Ludovic Baudry
 
Portfolio QR code design | Custom QR code
Portfolio QR code design | Custom QR codePortfolio QR code design | Custom QR code
Portfolio QR code design | Custom QR codeaestetype
 
10 03 clients ldap
10 03 clients ldap10 03 clients ldap
10 03 clients ldapNoël
 
Vas'y l'annuaire des commerces de proximité
Vas'y l'annuaire des commerces de proximitéVas'y l'annuaire des commerces de proximité
Vas'y l'annuaire des commerces de proximitéthierryvasyweb
 
Réalités augmentées en bibliothèque : des passerelles entre ressources physiq...
Réalités augmentées en bibliothèque : des passerelles entre ressources physiq...Réalités augmentées en bibliothèque : des passerelles entre ressources physiq...
Réalités augmentées en bibliothèque : des passerelles entre ressources physiq...Thomas Chaimbault-Petitjean
 
20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache MavenArnaud Héritier
 
JCertif 2012 : Maven par la pratique
JCertif 2012 : Maven par la pratiqueJCertif 2012 : Maven par la pratique
JCertif 2012 : Maven par la pratiqueRossi Oddet
 
Spring Framework Petclinic sample application
Spring Framework Petclinic sample applicationSpring Framework Petclinic sample application
Spring Framework Petclinic sample applicationAntoine Rey
 
Bonnes pratiques des applications java prêtes pour la production
Bonnes pratiques des applications java prêtes pour la productionBonnes pratiques des applications java prêtes pour la production
Bonnes pratiques des applications java prêtes pour la productionCyrille Le Clerc
 
Introduction à spring boot
Introduction à spring bootIntroduction à spring boot
Introduction à spring bootAntoine Rey
 
Construire son application web de gestion de contenu d'annuaire LDAP
Construire son application web de gestion de contenu d'annuaire LDAPConstruire son application web de gestion de contenu d'annuaire LDAP
Construire son application web de gestion de contenu d'annuaire LDAPClément OUDOT
 
Presentation Spring, Spring MVC
Presentation Spring, Spring MVCPresentation Spring, Spring MVC
Presentation Spring, Spring MVCNathaniel Richand
 
Rapport PFE : Développement D'une application de gestion des cartes de fidéli...
Rapport PFE : Développement D'une application de gestion des cartes de fidéli...Rapport PFE : Développement D'une application de gestion des cartes de fidéli...
Rapport PFE : Développement D'une application de gestion des cartes de fidéli...Riadh K.
 

Destacado (20)

YaJUG - Spring 3.0
YaJUG - Spring 3.0YaJUG - Spring 3.0
YaJUG - Spring 3.0
 
Enib cours c.a.i. web - séance #1 - html5 css3-js - 1
Enib   cours c.a.i. web - séance #1 - html5 css3-js - 1Enib   cours c.a.i. web - séance #1 - html5 css3-js - 1
Enib cours c.a.i. web - séance #1 - html5 css3-js - 1
 
Imagera.fr
Imagera.frImagera.fr
Imagera.fr
 
Ux092 formation-mise-en-place-d-annuaire-ldap
Ux092 formation-mise-en-place-d-annuaire-ldapUx092 formation-mise-en-place-d-annuaire-ldap
Ux092 formation-mise-en-place-d-annuaire-ldap
 
Africavenue France : annuaire afro
Africavenue France : annuaire afroAfricavenue France : annuaire afro
Africavenue France : annuaire afro
 
Présentation Complus Régie
Présentation Complus Régie Présentation Complus Régie
Présentation Complus Régie
 
Portfolio QR code design | Custom QR code
Portfolio QR code design | Custom QR codePortfolio QR code design | Custom QR code
Portfolio QR code design | Custom QR code
 
10 03 clients ldap
10 03 clients ldap10 03 clients ldap
10 03 clients ldap
 
Vas'y l'annuaire des commerces de proximité
Vas'y l'annuaire des commerces de proximitéVas'y l'annuaire des commerces de proximité
Vas'y l'annuaire des commerces de proximité
 
Réalités augmentées en bibliothèque : des passerelles entre ressources physiq...
Réalités augmentées en bibliothèque : des passerelles entre ressources physiq...Réalités augmentées en bibliothèque : des passerelles entre ressources physiq...
Réalités augmentées en bibliothèque : des passerelles entre ressources physiq...
 
20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven
 
JCertif 2012 : Maven par la pratique
JCertif 2012 : Maven par la pratiqueJCertif 2012 : Maven par la pratique
JCertif 2012 : Maven par la pratique
 
Tp java ee.pptx
Tp java ee.pptxTp java ee.pptx
Tp java ee.pptx
 
Spring Framework Petclinic sample application
Spring Framework Petclinic sample applicationSpring Framework Petclinic sample application
Spring Framework Petclinic sample application
 
Bonnes pratiques des applications java prêtes pour la production
Bonnes pratiques des applications java prêtes pour la productionBonnes pratiques des applications java prêtes pour la production
Bonnes pratiques des applications java prêtes pour la production
 
Introduction à spring boot
Introduction à spring bootIntroduction à spring boot
Introduction à spring boot
 
Soutenance PFE 2012
Soutenance PFE 2012Soutenance PFE 2012
Soutenance PFE 2012
 
Construire son application web de gestion de contenu d'annuaire LDAP
Construire son application web de gestion de contenu d'annuaire LDAPConstruire son application web de gestion de contenu d'annuaire LDAP
Construire son application web de gestion de contenu d'annuaire LDAP
 
Presentation Spring, Spring MVC
Presentation Spring, Spring MVCPresentation Spring, Spring MVC
Presentation Spring, Spring MVC
 
Rapport PFE : Développement D'une application de gestion des cartes de fidéli...
Rapport PFE : Développement D'une application de gestion des cartes de fidéli...Rapport PFE : Développement D'une application de gestion des cartes de fidéli...
Rapport PFE : Développement D'une application de gestion des cartes de fidéli...
 

Similar a Enib cours c.a.i. web - séance #5 - j’ai besoin d’une appli web rapidement !

Gulp fiction, Builder, tester, livrer, sans tomber dans les poms - breizhcam...
Gulp fiction, Builder, tester, livrer, sans tomber dans les poms  - breizhcam...Gulp fiction, Builder, tester, livrer, sans tomber dans les poms  - breizhcam...
Gulp fiction, Builder, tester, livrer, sans tomber dans les poms - breizhcam...mbrechet
 
Enib cours c.a.i. web - séance #6 : introduction à node js
Enib   cours c.a.i. web - séance #6 : introduction à node jsEnib   cours c.a.i. web - séance #6 : introduction à node js
Enib cours c.a.i. web - séance #6 : introduction à node jsHoracio Gonzalez
 
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
 
Cours Devops Sparks.pptx.pdf
Cours Devops Sparks.pptx.pdfCours Devops Sparks.pptx.pdf
Cours Devops Sparks.pptx.pdfboulonvert
 
Des poneys à Liberation.fr
Des poneys à Liberation.frDes poneys à Liberation.fr
Des poneys à Liberation.frliberation_dev
 
JUGSummerCamp2023-RendezMoiMonFront.pdf
JUGSummerCamp2023-RendezMoiMonFront.pdfJUGSummerCamp2023-RendezMoiMonFront.pdf
JUGSummerCamp2023-RendezMoiMonFront.pdfOlivierThierry9
 
Formation Spring Avancé gratuite par Ippon 2014
Formation Spring Avancé gratuite par Ippon 2014Formation Spring Avancé gratuite par Ippon 2014
Formation Spring Avancé gratuite par Ippon 2014Ippon
 
Industrialisation des environnements de dev avec Puppet et Amazon (mais en fa...
Industrialisation des environnements de dev avec Puppet et Amazon (mais en fa...Industrialisation des environnements de dev avec Puppet et Amazon (mais en fa...
Industrialisation des environnements de dev avec Puppet et Amazon (mais en fa...Nicolas Silberman
 
Edge SEO & Cloud SEO : Comment faire du SEO dans le cloud quand tout le reste...
Edge SEO & Cloud SEO : Comment faire du SEO dans le cloud quand tout le reste...Edge SEO & Cloud SEO : Comment faire du SEO dans le cloud quand tout le reste...
Edge SEO & Cloud SEO : Comment faire du SEO dans le cloud quand tout le reste...Fasterize
 
Responsible Design ou Le web moderne à destination de tous
Responsible Design ou Le web moderne à destination de tousResponsible Design ou Le web moderne à destination de tous
Responsible Design ou Le web moderne à destination de tousjwajsberg
 
Le Edge SEO : comment faire du SEO dans le Cloud quand tout le reste a échoué
Le Edge SEO : comment faire du SEO dans le Cloud quand tout le reste a échouéLe Edge SEO : comment faire du SEO dans le Cloud quand tout le reste a échoué
Le Edge SEO : comment faire du SEO dans le Cloud quand tout le reste a échouéPhilippe YONNET
 
[Agile Laval 2016] La relecture de code : avant tout des pratiques
[Agile Laval 2016] La relecture de code : avant tout des pratiques[Agile Laval 2016] La relecture de code : avant tout des pratiques
[Agile Laval 2016] La relecture de code : avant tout des pratiquesEric SIBER
 
Level up your ci-cd experience
Level up your ci-cd experienceLevel up your ci-cd experience
Level up your ci-cd experienceFrederic Leger
 
Saas Libre
Saas LibreSaas Libre
Saas Libregrolland
 
Formation html5 CSS3 offerte par ippon 2014
Formation html5 CSS3 offerte par ippon 2014Formation html5 CSS3 offerte par ippon 2014
Formation html5 CSS3 offerte par ippon 2014Ippon
 
Présentation Rex GWT 2.0
Présentation Rex GWT 2.0Présentation Rex GWT 2.0
Présentation Rex GWT 2.0Ippon
 
Au coeur du framework .net 4.5.1
Au coeur du framework .net 4.5.1Au coeur du framework .net 4.5.1
Au coeur du framework .net 4.5.1Cellenza
 
Spring Batch - Julien Jakubowski - November 2010
Spring Batch - Julien Jakubowski - November 2010Spring Batch - Julien Jakubowski - November 2010
Spring Batch - Julien Jakubowski - November 2010JUG Lausanne
 

Similar a Enib cours c.a.i. web - séance #5 - j’ai besoin d’une appli web rapidement ! (20)

Gulp fiction, Builder, tester, livrer, sans tomber dans les poms - breizhcam...
Gulp fiction, Builder, tester, livrer, sans tomber dans les poms  - breizhcam...Gulp fiction, Builder, tester, livrer, sans tomber dans les poms  - breizhcam...
Gulp fiction, Builder, tester, livrer, sans tomber dans les poms - breizhcam...
 
Enib cours c.a.i. web - séance #6 : introduction à node js
Enib   cours c.a.i. web - séance #6 : introduction à node jsEnib   cours c.a.i. web - séance #6 : introduction à node js
Enib cours c.a.i. web - séance #6 : introduction à node js
 
Forum PHP 2014 day 1
Forum PHP 2014 day 1Forum PHP 2014 day 1
Forum PHP 2014 day 1
 
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 !
 
Cours Devops Sparks.pptx.pdf
Cours Devops Sparks.pptx.pdfCours Devops Sparks.pptx.pdf
Cours Devops Sparks.pptx.pdf
 
Des poneys à Liberation.fr
Des poneys à Liberation.frDes poneys à Liberation.fr
Des poneys à Liberation.fr
 
JUGSummerCamp2023-RendezMoiMonFront.pdf
JUGSummerCamp2023-RendezMoiMonFront.pdfJUGSummerCamp2023-RendezMoiMonFront.pdf
JUGSummerCamp2023-RendezMoiMonFront.pdf
 
Formation Spring Avancé gratuite par Ippon 2014
Formation Spring Avancé gratuite par Ippon 2014Formation Spring Avancé gratuite par Ippon 2014
Formation Spring Avancé gratuite par Ippon 2014
 
Industrialisation des environnements de dev avec Puppet et Amazon (mais en fa...
Industrialisation des environnements de dev avec Puppet et Amazon (mais en fa...Industrialisation des environnements de dev avec Puppet et Amazon (mais en fa...
Industrialisation des environnements de dev avec Puppet et Amazon (mais en fa...
 
Edge SEO & Cloud SEO : Comment faire du SEO dans le cloud quand tout le reste...
Edge SEO & Cloud SEO : Comment faire du SEO dans le cloud quand tout le reste...Edge SEO & Cloud SEO : Comment faire du SEO dans le cloud quand tout le reste...
Edge SEO & Cloud SEO : Comment faire du SEO dans le cloud quand tout le reste...
 
Responsible Design ou Le web moderne à destination de tous
Responsible Design ou Le web moderne à destination de tousResponsible Design ou Le web moderne à destination de tous
Responsible Design ou Le web moderne à destination de tous
 
Le Edge SEO : comment faire du SEO dans le Cloud quand tout le reste a échoué
Le Edge SEO : comment faire du SEO dans le Cloud quand tout le reste a échouéLe Edge SEO : comment faire du SEO dans le Cloud quand tout le reste a échoué
Le Edge SEO : comment faire du SEO dans le Cloud quand tout le reste a échoué
 
Sulu LE CMS Ultime
Sulu LE CMS UltimeSulu LE CMS Ultime
Sulu LE CMS Ultime
 
[Agile Laval 2016] La relecture de code : avant tout des pratiques
[Agile Laval 2016] La relecture de code : avant tout des pratiques[Agile Laval 2016] La relecture de code : avant tout des pratiques
[Agile Laval 2016] La relecture de code : avant tout des pratiques
 
Level up your ci-cd experience
Level up your ci-cd experienceLevel up your ci-cd experience
Level up your ci-cd experience
 
Saas Libre
Saas LibreSaas Libre
Saas Libre
 
Formation html5 CSS3 offerte par ippon 2014
Formation html5 CSS3 offerte par ippon 2014Formation html5 CSS3 offerte par ippon 2014
Formation html5 CSS3 offerte par ippon 2014
 
Présentation Rex GWT 2.0
Présentation Rex GWT 2.0Présentation Rex GWT 2.0
Présentation Rex GWT 2.0
 
Au coeur du framework .net 4.5.1
Au coeur du framework .net 4.5.1Au coeur du framework .net 4.5.1
Au coeur du framework .net 4.5.1
 
Spring Batch - Julien Jakubowski - November 2010
Spring Batch - Julien Jakubowski - November 2010Spring Batch - Julien Jakubowski - November 2010
Spring Batch - Julien Jakubowski - November 2010
 

Más de Horacio Gonzalez

Il n'y a pas que Polymer dans la vie… - RennesJS - 2017-06-27
Il n'y a pas que Polymer dans la vie… - RennesJS - 2017-06-27Il n'y a pas que Polymer dans la vie… - RennesJS - 2017-06-27
Il n'y a pas que Polymer dans la vie… - RennesJS - 2017-06-27Horacio Gonzalez
 
But there is no web component for that - Web Components Remote Conference - 2...
But there is no web component for that - Web Components Remote Conference - 2...But there is no web component for that - Web Components Remote Conference - 2...
But there is no web component for that - Web Components Remote Conference - 2...Horacio Gonzalez
 
Mixité dans le monde des WebComponents - DevFest Toulouse - 2017-09-27
 Mixité dans le monde des WebComponents - DevFest Toulouse - 2017-09-27 Mixité dans le monde des WebComponents - DevFest Toulouse - 2017-09-27
Mixité dans le monde des WebComponents - DevFest Toulouse - 2017-09-27Horacio Gonzalez
 
Battle of Frameworks: Polymer - Meetup Paris Web Components - 2016-09
Battle of Frameworks: Polymer - Meetup Paris Web Components - 2016-09Battle of Frameworks: Polymer - Meetup Paris Web Components - 2016-09
Battle of Frameworks: Polymer - Meetup Paris Web Components - 2016-09Horacio Gonzalez
 
Mixing Web Components - Best of Web Paris - 2016 06-09
Mixing Web Components - Best of Web Paris - 2016 06-09Mixing Web Components - Best of Web Paris - 2016 06-09
Mixing Web Components - Best of Web Paris - 2016 06-09Horacio Gonzalez
 
Polymer in the real life - Devoxx France - 2016 04-20
Polymer in the real life - Devoxx France - 2016 04-20Polymer in the real life - Devoxx France - 2016 04-20
Polymer in the real life - Devoxx France - 2016 04-20Horacio Gonzalez
 
Warp10: collect, store and manipulate sensor data - BreizhCamp - 2016 03-24
Warp10: collect, store and manipulate sensor data - BreizhCamp - 2016 03-24 Warp10: collect, store and manipulate sensor data - BreizhCamp - 2016 03-24
Warp10: collect, store and manipulate sensor data - BreizhCamp - 2016 03-24 Horacio Gonzalez
 
ENIB 2015 2016 - CAI Web S02E03- Forge JS 1/4 - La forge JavaScript
ENIB 2015 2016 - CAI Web S02E03- Forge JS 1/4 - La forge JavaScriptENIB 2015 2016 - CAI Web S02E03- Forge JS 1/4 - La forge JavaScript
ENIB 2015 2016 - CAI Web S02E03- Forge JS 1/4 - La forge JavaScriptHoracio Gonzalez
 
ENIB 2015 2016 - CAI Web S02E01- Côté Navigateur 3/3 - Web Components avec Po...
ENIB 2015 2016 - CAI Web S02E01- Côté Navigateur 3/3 - Web Components avec Po...ENIB 2015 2016 - CAI Web S02E01- Côté Navigateur 3/3 - Web Components avec Po...
ENIB 2015 2016 - CAI Web S02E01- Côté Navigateur 3/3 - Web Components avec Po...Horacio Gonzalez
 
ENIB 2015 2016 - CAI Web S02E03 - Forge JS 2/4 - MongoDB and NoSQL
ENIB 2015 2016 - CAI Web S02E03 - Forge JS 2/4 - MongoDB and NoSQLENIB 2015 2016 - CAI Web S02E03 - Forge JS 2/4 - MongoDB and NoSQL
ENIB 2015 2016 - CAI Web S02E03 - Forge JS 2/4 - MongoDB and NoSQLHoracio Gonzalez
 
ENIB 2015-2016 - CAI Web - S01E01- MongoDB and NoSQL
ENIB 2015-2016 - CAI Web - S01E01- MongoDB and NoSQLENIB 2015-2016 - CAI Web - S01E01- MongoDB and NoSQL
ENIB 2015-2016 - CAI Web - S01E01- MongoDB and NoSQLHoracio Gonzalez
 
ENIB 2015-2016 - CAI Web - S01E01- La forge JavaScript
ENIB 2015-2016 - CAI Web - S01E01- La forge JavaScriptENIB 2015-2016 - CAI Web - S01E01- La forge JavaScript
ENIB 2015-2016 - CAI Web - S01E01- La forge JavaScriptHoracio Gonzalez
 
ENIB 2015-2016 - CAI Web - S01E01- Côté navigateur 1/3 - HTTP, HTML, CSS, JS
ENIB 2015-2016 - CAI Web -  S01E01- Côté navigateur 1/3 - HTTP, HTML, CSS, JSENIB 2015-2016 - CAI Web -  S01E01- Côté navigateur 1/3 - HTTP, HTML, CSS, JS
ENIB 2015-2016 - CAI Web - S01E01- Côté navigateur 1/3 - HTTP, HTML, CSS, JSHoracio Gonzalez
 
ENIB 2015-2016 - CAI Web - S01E01- Côté navigateur 3/3 - Web components avec ...
ENIB 2015-2016 - CAI Web - S01E01- Côté navigateur 3/3 - Web components avec ...ENIB 2015-2016 - CAI Web - S01E01- Côté navigateur 3/3 - Web components avec ...
ENIB 2015-2016 - CAI Web - S01E01- Côté navigateur 3/3 - Web components avec ...Horacio Gonzalez
 
Beyond Polymer - JUG Summer Camp - 2015-09-18
Beyond Polymer - JUG Summer Camp - 2015-09-18Beyond Polymer - JUG Summer Camp - 2015-09-18
Beyond Polymer - JUG Summer Camp - 2015-09-18Horacio Gonzalez
 
Mixing Web Components - Paris Web Components - 2015 09-16
Mixing Web Components - Paris Web Components - 2015 09-16 Mixing Web Components - Paris Web Components - 2015 09-16
Mixing Web Components - Paris Web Components - 2015 09-16 Horacio Gonzalez
 
Devoxx France - Web Components, Polymer et Material Design
Devoxx France -  Web Components, Polymer et Material DesignDevoxx France -  Web Components, Polymer et Material Design
Devoxx France - Web Components, Polymer et Material DesignHoracio Gonzalez
 
Steven Le Roux - Kafka et Storm au service de la lutte antiDDoS à OVH - Soiré...
Steven Le Roux - Kafka et Storm au service de la lutte antiDDoS à OVH - Soiré...Steven Le Roux - Kafka et Storm au service de la lutte antiDDoS à OVH - Soiré...
Steven Le Roux - Kafka et Storm au service de la lutte antiDDoS à OVH - Soiré...Horacio Gonzalez
 
2014 03-25 - GDG Nantes - Web Components avec Polymer
2014 03-25 - GDG Nantes - Web Components avec Polymer2014 03-25 - GDG Nantes - Web Components avec Polymer
2014 03-25 - GDG Nantes - Web Components avec PolymerHoracio Gonzalez
 
Bootcamp d'Initiation à Android - 2013/11/30 - Live coding : Hello world!
Bootcamp d'Initiation à Android  - 2013/11/30 - Live coding :   Hello world!Bootcamp d'Initiation à Android  - 2013/11/30 - Live coding :   Hello world!
Bootcamp d'Initiation à Android - 2013/11/30 - Live coding : Hello world!Horacio Gonzalez
 

Más de Horacio Gonzalez (20)

Il n'y a pas que Polymer dans la vie… - RennesJS - 2017-06-27
Il n'y a pas que Polymer dans la vie… - RennesJS - 2017-06-27Il n'y a pas que Polymer dans la vie… - RennesJS - 2017-06-27
Il n'y a pas que Polymer dans la vie… - RennesJS - 2017-06-27
 
But there is no web component for that - Web Components Remote Conference - 2...
But there is no web component for that - Web Components Remote Conference - 2...But there is no web component for that - Web Components Remote Conference - 2...
But there is no web component for that - Web Components Remote Conference - 2...
 
Mixité dans le monde des WebComponents - DevFest Toulouse - 2017-09-27
 Mixité dans le monde des WebComponents - DevFest Toulouse - 2017-09-27 Mixité dans le monde des WebComponents - DevFest Toulouse - 2017-09-27
Mixité dans le monde des WebComponents - DevFest Toulouse - 2017-09-27
 
Battle of Frameworks: Polymer - Meetup Paris Web Components - 2016-09
Battle of Frameworks: Polymer - Meetup Paris Web Components - 2016-09Battle of Frameworks: Polymer - Meetup Paris Web Components - 2016-09
Battle of Frameworks: Polymer - Meetup Paris Web Components - 2016-09
 
Mixing Web Components - Best of Web Paris - 2016 06-09
Mixing Web Components - Best of Web Paris - 2016 06-09Mixing Web Components - Best of Web Paris - 2016 06-09
Mixing Web Components - Best of Web Paris - 2016 06-09
 
Polymer in the real life - Devoxx France - 2016 04-20
Polymer in the real life - Devoxx France - 2016 04-20Polymer in the real life - Devoxx France - 2016 04-20
Polymer in the real life - Devoxx France - 2016 04-20
 
Warp10: collect, store and manipulate sensor data - BreizhCamp - 2016 03-24
Warp10: collect, store and manipulate sensor data - BreizhCamp - 2016 03-24 Warp10: collect, store and manipulate sensor data - BreizhCamp - 2016 03-24
Warp10: collect, store and manipulate sensor data - BreizhCamp - 2016 03-24
 
ENIB 2015 2016 - CAI Web S02E03- Forge JS 1/4 - La forge JavaScript
ENIB 2015 2016 - CAI Web S02E03- Forge JS 1/4 - La forge JavaScriptENIB 2015 2016 - CAI Web S02E03- Forge JS 1/4 - La forge JavaScript
ENIB 2015 2016 - CAI Web S02E03- Forge JS 1/4 - La forge JavaScript
 
ENIB 2015 2016 - CAI Web S02E01- Côté Navigateur 3/3 - Web Components avec Po...
ENIB 2015 2016 - CAI Web S02E01- Côté Navigateur 3/3 - Web Components avec Po...ENIB 2015 2016 - CAI Web S02E01- Côté Navigateur 3/3 - Web Components avec Po...
ENIB 2015 2016 - CAI Web S02E01- Côté Navigateur 3/3 - Web Components avec Po...
 
ENIB 2015 2016 - CAI Web S02E03 - Forge JS 2/4 - MongoDB and NoSQL
ENIB 2015 2016 - CAI Web S02E03 - Forge JS 2/4 - MongoDB and NoSQLENIB 2015 2016 - CAI Web S02E03 - Forge JS 2/4 - MongoDB and NoSQL
ENIB 2015 2016 - CAI Web S02E03 - Forge JS 2/4 - MongoDB and NoSQL
 
ENIB 2015-2016 - CAI Web - S01E01- MongoDB and NoSQL
ENIB 2015-2016 - CAI Web - S01E01- MongoDB and NoSQLENIB 2015-2016 - CAI Web - S01E01- MongoDB and NoSQL
ENIB 2015-2016 - CAI Web - S01E01- MongoDB and NoSQL
 
ENIB 2015-2016 - CAI Web - S01E01- La forge JavaScript
ENIB 2015-2016 - CAI Web - S01E01- La forge JavaScriptENIB 2015-2016 - CAI Web - S01E01- La forge JavaScript
ENIB 2015-2016 - CAI Web - S01E01- La forge JavaScript
 
ENIB 2015-2016 - CAI Web - S01E01- Côté navigateur 1/3 - HTTP, HTML, CSS, JS
ENIB 2015-2016 - CAI Web -  S01E01- Côté navigateur 1/3 - HTTP, HTML, CSS, JSENIB 2015-2016 - CAI Web -  S01E01- Côté navigateur 1/3 - HTTP, HTML, CSS, JS
ENIB 2015-2016 - CAI Web - S01E01- Côté navigateur 1/3 - HTTP, HTML, CSS, JS
 
ENIB 2015-2016 - CAI Web - S01E01- Côté navigateur 3/3 - Web components avec ...
ENIB 2015-2016 - CAI Web - S01E01- Côté navigateur 3/3 - Web components avec ...ENIB 2015-2016 - CAI Web - S01E01- Côté navigateur 3/3 - Web components avec ...
ENIB 2015-2016 - CAI Web - S01E01- Côté navigateur 3/3 - Web components avec ...
 
Beyond Polymer - JUG Summer Camp - 2015-09-18
Beyond Polymer - JUG Summer Camp - 2015-09-18Beyond Polymer - JUG Summer Camp - 2015-09-18
Beyond Polymer - JUG Summer Camp - 2015-09-18
 
Mixing Web Components - Paris Web Components - 2015 09-16
Mixing Web Components - Paris Web Components - 2015 09-16 Mixing Web Components - Paris Web Components - 2015 09-16
Mixing Web Components - Paris Web Components - 2015 09-16
 
Devoxx France - Web Components, Polymer et Material Design
Devoxx France -  Web Components, Polymer et Material DesignDevoxx France -  Web Components, Polymer et Material Design
Devoxx France - Web Components, Polymer et Material Design
 
Steven Le Roux - Kafka et Storm au service de la lutte antiDDoS à OVH - Soiré...
Steven Le Roux - Kafka et Storm au service de la lutte antiDDoS à OVH - Soiré...Steven Le Roux - Kafka et Storm au service de la lutte antiDDoS à OVH - Soiré...
Steven Le Roux - Kafka et Storm au service de la lutte antiDDoS à OVH - Soiré...
 
2014 03-25 - GDG Nantes - Web Components avec Polymer
2014 03-25 - GDG Nantes - Web Components avec Polymer2014 03-25 - GDG Nantes - Web Components avec Polymer
2014 03-25 - GDG Nantes - Web Components avec Polymer
 
Bootcamp d'Initiation à Android - 2013/11/30 - Live coding : Hello world!
Bootcamp d'Initiation à Android  - 2013/11/30 - Live coding :   Hello world!Bootcamp d'Initiation à Android  - 2013/11/30 - Live coding :   Hello world!
Bootcamp d'Initiation à Android - 2013/11/30 - Live coding : Hello world!
 

Enib cours c.a.i. web - séance #5 - j’ai besoin d’une appli web rapidement !

  • 1. Conception d'Applications Interactives : Applications Web et JEE Séance #5 J'ai besoin d'une appli we rapidement
  • 2. On a un besoin ! Maintenant on fait comment ?
  • 3. Développement rapide d'applications web ? Comment fait-on quand on a besoin de créer rapidement une petite application web d'entreprise ? ● La plupart des forges logicielles d'entreprise ne sont pas adaptées à ce besoin...
  • 4. Développement rapide d'applications web ? ● Réponse du freelance hipster Java est ringard, lourd et compliqué, utilise quelque chose de moderne comme Ruby on Rails !
  • 5. Développement rapide d'applications web ? ● Réponse de la Production Dans cette boîte on travaille sur la JVM, et on a des normes. Ton truc d'hippie ne rentrera pas dans mes serveurs !
  • 6. Développement rapide d'applications web ? ● Réponse du manager Nos équipes ne connaissent pas la techno, les procédures ne sont pas là, le workflow n'est pas prêt, et on ne sait pas chiffrer ça ! Et si on se trompe, à qui la faute ?
  • 7. Développement rapide d'applications web ? ● Réponse du marketing On a besoin de l'appli pour lundi ! C'est toujours pareil, vous dites toujours non ! On va faire appel à une web agency et déployer sur le cloud, au moins ça sera fait... Et moins cher !
  • 8. Développement rapide d'applications web ? ● Et pourtant le besoin est là... Quoi faire ? On est en 2013 ! Aujourd'hui on peut faire du développement web rapide sur la JVM
  • 10. ● Framework MVC de développement web rapide ○ Full stack Framework ○ Générateurs de code : models, views, controllers ● Convention plutôt que configuration ○ Élimination de la tuyauterie ○ Pas de soupe au XML ○ Don’t Repeat Yourself (DRY) ● Orienté agilité, l'appli tourne dès le premier jour Ruby a changé la façon de faire du développement web Un peu d'histoire : Ruby on Rails
  • 11. ● Frameworks orientés applications d'entreprise ○ Grosses applications ○ Cycles de développement long ○ Grosses équipes de développeurs ○ Coût de setup projet élevé ● Peu adaptés à petites applications ou cycles rapides Un peu d'histoire : les outils JEE face à Rails
  • 12. Concepts du développement web rapide ? De quoi mon framework a besoin ?
  • 13. Convention plutôt que configuration ● Le framework doit avoir des conventions qui définisent comment coder ○ Si on suit les conventions, il n'y a pas de tuyauterie à faire ● Le framework doit permettre de coder autrement ○ Pour des besoins pas adaptées à la convention ○ Dans ce cas, on doit faire la tuyauterie ● Pour que ça marche, ces cas doivent rester à la marge ○ Ratio 80% convention, 20% configuration maximum Principe Don't Repeat Yourself (DRY)
  • 14. Si on fait du web, suivons le web When a web framework starts an architecture fight with the web, the framework loses. ● PHP et Ruby on Rails l'ont bien compris ○ Si on fait du web, on s'adapte au web ! ● Un framework de développent web rapide doit être adapté au web
  • 15. Modifiez, rechargez, c'est fait ! ● Devoir redémarrer le serveur après une modif ? ● Redéployer car on a changé un fichier ? ● A nouveau, regardons PHP ou Ruby on Rails ○ Si on fait du web, on s'adapte au web ! ● Avec un framework de développent web rapide il doit suffit de recharger la page pour qu la modif est prise en compte ○ Ca, c'est de la productivité !
  • 16. Grails Bridgekeeper: What... is your name? Sir Lancelot: My name is Sir Lancelot of Camelot. Bridgekeeper: What... is your quest? Sir Lancelot: To seek the Holy Grail. Bridgekeeper: What... is your favourite colour? Sir Lancelot: Blue. Bridgekeeper: Go on. Off you go. Monty Python and the Holy Grail
  • 17. Grails ● Framework de développement web rapide ○ Sur la JVM ○ Avec une intégration sans faille avec Java ● Inspiré par Ruby on Rails, Django et autres ○ Convention plutôt que configuration ○ Don’t Repeat Yourself (DRY) Grails à la rescousse
  • 18. Il y a quoi dans ?
  • 19. ● Développement en Groovy ● Très expressive ● Sans tuyauterie ○ Rapidité et simplicité : change le code et recharge la page ! ● Syntaxe familière pour développeurs Java ● Intégration sans faille avec Java Il y a quoi d'autre dans ?
  • 20. Groovy, baby ! Langage 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 regex ● Fermetures ou clôtures (closures) ● Surcharge des opérateurs http://groovy.codehaus.org/
  • 21. Grails n'est pas un jouet ● Si vous faites les choses à la façon Grails ○ Tout est simple, aucun boilerplate ● Pour les besoins exotiques ○ Vous pouvez mettre les mains dans Spring ○ Tout reste propre pour le reste de l'application Mais il y a quoi sous le capot ?
  • 22. ● Spring Tool Suite (STS) ○ IDE basé sur Eclipse ○ Support pour toute la suite Spring ○ Support complet Grails (et Groovy, of course) ● IntelliJ Ultimate Edition ○ Support complet Grails (et Groovy, of course) via plugin ○ Payant ● NetBeans ○ Support complet Grails (et Groovy, of course via plugin ● Gedit, TextMate, Notepad++, même Emacs ! Et quel IDE j'utilise ?
  • 23. ● Les développeurs cools jouent avec Play Framework Mais si je veux être encore plus hype ?
  • 25. Le projet Play! est un framework pour ● faire du développement web ● avec une haute productivité ● avec l'état de l'art des technologies web ● sur la JVM ● double modèle de développement ○ Java ou Scala
  • 26. - productivité et plaisir ● Conçu par des développeurs web pour des développeurs web ● Gestion simple, flexible et puissante du protocole HTTP ○ Framework web -> HTTP au centre ○ Stateless, request-response ● Facilité de démarrage ○ Courbe d'apprentissage douce ● Rapidité et simplicité : change le code et recharge la page ! ● Framework complet, full-stack
  • 27. non plus n'est pas un jouet ● Modèle de programmation HTTP asynchrone ● Architecture scalable de haute performance ● Modèle reactive, non bloquant ● Typage fort ● Architecture stateless basé sur HTTP ● Modifiez, rechargez, c'est fait ! ● HTTP utilisé comme protocole, avec sa semantique
  • 28. Le web a évolué ● On est au bord d'une nouvelle évolution : ○ Les requêtes asynchrones en temps réel ○ Des énormes flux de données ○ Les BDD non relationnelles ● Les frameworks classiques ont du mal à s'adapter
  • 29. Les limites des frameworks classiques ● Chaque utilisateur connecté consomme des ressources ○ Mémoire, threads... ● Modèles basés sur l'attente active ○ Synchronisme entre requête et réponse ○ On bloque un thread côté serveur ● Les I/O sont bloquantes
  • 30. Play! utilise un modèle réactif ● Inversion de contrôle ○ On agit que lorsqu'on a quelque chose à faire ● Sans perte de contrôle ○ Mais on est capable de garder le contrôle ● Iteratee/Enumerator IO
  • 31. ● Eclipse ○ Avec ScalaIDE plugin ○ Support complet Play! (et Scala, of course) ● IntelliJ Ultimate Edition ○ Support complet Play! (et Scala, of course) via plugin ○ Payant ● NetBeans ○ Support complet Grails (et Groovy, of course via plugin Et quel IDE j'utilise ?
  • 32. Le mot de la fin Un principe à ne pas oublier
  • 33. Loi de l'outil Si le seul outil que tu as est un marteau, tu vas t'attaquer à tous les problèmes comme si ils étaient des clous ● Grails, Play et autres sont adaptés à un type de besoin ● GWT, Spring, JSF et autres sont adaptés à un autre Il faut utiliser chaque techno pour l'utilisation pour laquelle il est pertinent
  • 34. Show us something, dude ! Voici une petite démo