SlideShare une entreprise Scribd logo
1  sur  29
Télécharger pour lire hors ligne
JAVA EE UN AMI QUIVOUSVEUT DU BIEN
Antoine Sabot-Durand: @antoine_sd
ANTOINE SABOT-DURAND
• Senior Software Engineer @Red Hat
• Java & OSS :
• CDI co-spec lead
• CDI community development
• Apache Deltaspike committer
• @antoine_sd
AGENDA
• Retour sur Java EE
• Mythes et réalités Java EE
• Conclusion
Previously on Java EE
JAVA EE HISTORY
1998 1999 2000 2001 2002 2003 2004 2005
Java Professional
Edition
J2EE 1.2
12/12/1999
J2EE 1.3
09/24/2001
J2EE 1.4
11/11/2003
2008 2009 2010 2011
Java EE 5
05/11/2006
Java EE 6
12/10/2009
2012 2013
Java EE 7
06/22/2013
2014 2015
2006
2016
2007
2017
Java EE 8
… 2017
JAVA EE 7 JSR
EJB 3.2
Servlet 3.1
CDI
Extensions
Bean
Validation
1.1
Batch 1.0
Web
Fragments
JCA 1.7JMS 2.0JPA 2.1
Managed Beans 1.0
Concurrency 1.0
Common
Annotations 1.1
Interceptors

1.2, JTA 1.2
CDI 1.1
JSF 2.2,

JSP 2.3,

EL 3.0
JAX-RS 2.0,
JAX-WS 2.2
JSON 1.0
WebSocket
1.0
JAVA EE 7 SERVERS
JBOSS WILDFLY
• Nouveau nom de JBoss AS
• Dénomination pour éviter la confusion avec JBoss EAP
• Supporte Java EE 7
• Rapide, Léger, administration polyvalente
• Developer Friendly
• Open Source
MYTHES ET RÉALITÉS
SUR JAVA EE
JAVA EE EST LOURD ET LENT
Faux
JAVA EE EST LOURD ET LENT
Depuis 2010
Temps de démarrage à vide Server Java EE JBoss
JBoss AS 5.1.0

Java EE 5
JBoss AS 7.1.1

Java EE 6
Wildfly 9.0.1

Java EE 7
0ms 4000ms 8000ms 12000ms 16000ms
2 346
2 960
16 000
LE DÉVELOPPEMENT JAVA EE
EST LENT, CONFUS ET COMPLIQUÉ
LES CRITIQUES
• Modèle de programmation pas clair
• Code difficile à tester ou débuger
• Le redéploiement systématique de l’appli est pénalisant (parce que
Java EE c’est lent)
MODÈLE DE PROGRAMMATION
• Depuis Java EE 6, CDI est le modèle de
programmation par défaut
• Adopté ou supportant les spécifications
majeure (JPA, JAX-RS, Servlet, JSF…), il
est devenu le ciment de la plateforme
TEST ET DEBUG
• Eclipse, NetBeans et IntelliJ permettent
tous de débuger du code s’exécutant
dans dans un navigateur
• JBoss Arquillian est la solution pour
pouvoir tester du code nécessitant un
ou plusieurs container
REDÉPLOIEMENT
• JRebel permet de réduire
considérablement le redéploiement de
l’application
• Version personnelle gratuite
• Fonctionne avec les 3 principaux IDE
du marché
DEMO
JAVA EE EST MONOLITHIQUE
SUR LETERRAIN…
• Aujourd’hui, tous les serveurs d’application sont modulaires et
permettent de définir sa propre stack
• GlassFish a ouvert la voie avec son architecture OSGi
• WildFly utilise un mécanisme similaire (JBoss Module)
• Websphere Liberty a également sa solution
UNE APPROCHE “LAZY”
• WildFly n’active plus les services non utilisés.
• De même pour GlassFish et Websphere
WILDLFY EST PATCHABLE
$ jboss-cli.sh --command="patch apply ~/Downloads/
wildfly-10.0.0.Beta2-weld-3.0.0.Alpha13-patch.zip"
{
"outcome" : "success",
"result" : {}
}
$
DEMO
JAVA EE N’EST PAS ASSEZ RICHE ET
EVOLUETRES LENTEMENT
JAVA EE N’EST PAS ASSEZ RICHE
• C’est vrai, mais la plateforme n’a pas vocation à être complète
• Chaque serveur dispose de spécificité qui viennent compléter la
plateforme
• Java EE est la base de la plateforme, le standard sur lequel les éditeurs
construisent leur plateforme
JAVA EE EVOLUE LENTEMENT
• C’est vrai… et faux depuis Java EE 6
• L’arrivée de CDI marque l’ajout dans Java EE d’un système
d’extension portable
• Java EE a désormais un ADN de mutable
JAVA EE A UNE ARCHITECTURE
BLOQUANTE
SUR LETERRAIN…
• Servlet 3.0 (Java EE 6) → servlet asynchrones
• EJB 3.1 (Java EE 6) → traitement asynchrone avec @Asynchronous
• Servlet 3.1 (Java EE 7) → utilisation des API I/O non bloquantes
• JAX-RS 2.0 (Java EE 7) → traitement asynchrone avec callback
• Concurrent utilities (Java EE 7) → Création de threads managées
CONCLUSION

Contenu connexe

Tendances

[Webinaire avec Océane Consulting] Utiliser Vaadin pour intégrer Nuxeo et Lif...
[Webinaire avec Océane Consulting] Utiliser Vaadin pour intégrer Nuxeo et Lif...[Webinaire avec Océane Consulting] Utiliser Vaadin pour intégrer Nuxeo et Lif...
[Webinaire avec Océane Consulting] Utiliser Vaadin pour intégrer Nuxeo et Lif...
Nuxeo
 

Tendances (20)

Node.js
Node.jsNode.js
Node.js
 
NodeJs, une introduction
NodeJs, une introductionNodeJs, une introduction
NodeJs, une introduction
 
Solutions Linux 2014 – Alter Way : Industrialisation des développements en Ja...
Solutions Linux 2014 – Alter Way : Industrialisation des développements en Ja...Solutions Linux 2014 – Alter Way : Industrialisation des développements en Ja...
Solutions Linux 2014 – Alter Way : Industrialisation des développements en Ja...
 
XebiConFr - 15 - Apache Mesos, ou comment exploiter les ressources de votre d...
XebiConFr - 15 - Apache Mesos, ou comment exploiter les ressources de votre d...XebiConFr - 15 - Apache Mesos, ou comment exploiter les ressources de votre d...
XebiConFr - 15 - Apache Mesos, ou comment exploiter les ressources de votre d...
 
Ansible meetup-jenkins
Ansible meetup-jenkinsAnsible meetup-jenkins
Ansible meetup-jenkins
 
JavaScript dans l'usine logicielle
JavaScript dans l'usine logicielleJavaScript dans l'usine logicielle
JavaScript dans l'usine logicielle
 
[Webinaire avec Océane Consulting] Utiliser Vaadin pour intégrer Nuxeo et Lif...
[Webinaire avec Océane Consulting] Utiliser Vaadin pour intégrer Nuxeo et Lif...[Webinaire avec Océane Consulting] Utiliser Vaadin pour intégrer Nuxeo et Lif...
[Webinaire avec Océane Consulting] Utiliser Vaadin pour intégrer Nuxeo et Lif...
 
Node.js et les nouvelles technologies javascript
Node.js et les nouvelles technologies javascriptNode.js et les nouvelles technologies javascript
Node.js et les nouvelles technologies javascript
 
2014.12.11 - TECH CONF #3 - Présentation Node.js
2014.12.11 - TECH CONF #3 - Présentation Node.js2014.12.11 - TECH CONF #3 - Présentation Node.js
2014.12.11 - TECH CONF #3 - Présentation Node.js
 
CocoaHeads Rennes #14: Programmation Responsive par Celedev
CocoaHeads Rennes #14: Programmation Responsive par CeledevCocoaHeads Rennes #14: Programmation Responsive par Celedev
CocoaHeads Rennes #14: Programmation Responsive par Celedev
 
[DevTestday] Azure service fabric - Radoine Douhou
[DevTestday] Azure service fabric -  Radoine Douhou[DevTestday] Azure service fabric -  Radoine Douhou
[DevTestday] Azure service fabric - Radoine Douhou
 
7 plugins de la communauté à ne pas manquer ! - Liferay France Symposium 2016
7 plugins de la communauté à ne pas manquer ! - Liferay France Symposium 20167 plugins de la communauté à ne pas manquer ! - Liferay France Symposium 2016
7 plugins de la communauté à ne pas manquer ! - Liferay France Symposium 2016
 
Serveurs core et virtualisation
Serveurs core et virtualisationServeurs core et virtualisation
Serveurs core et virtualisation
 
WebSocket avec Java EE 7
WebSocket avec Java EE 7WebSocket avec Java EE 7
WebSocket avec Java EE 7
 
[DevTestday] Continuous Delivery d'une Infra Dev/Test Azure - Olivier Delmotte
[DevTestday] Continuous Delivery d'une Infra Dev/Test Azure - Olivier Delmotte[DevTestday] Continuous Delivery d'une Infra Dev/Test Azure - Olivier Delmotte
[DevTestday] Continuous Delivery d'une Infra Dev/Test Azure - Olivier Delmotte
 
Microsoft Edge pour les développeurs web
Microsoft Edge pour les développeurs webMicrosoft Edge pour les développeurs web
Microsoft Edge pour les développeurs web
 
Présentation de Node.js
Présentation de Node.jsPrésentation de Node.js
Présentation de Node.js
 
Devops - VSTS - Source
Devops - VSTS - SourceDevops - VSTS - Source
Devops - VSTS - Source
 
VSTS Git
VSTS GitVSTS Git
VSTS Git
 
Microsoft Edge pour les développeurs web
Microsoft Edge pour les développeurs webMicrosoft Edge pour les développeurs web
Microsoft Edge pour les développeurs web
 

En vedette

Introduction to cdi given at java one 2014
Introduction to cdi given at java one 2014Introduction to cdi given at java one 2014
Introduction to cdi given at java one 2014
Antoine Sabot-Durand
 

En vedette (20)

Advanced CDI in live coding
Advanced CDI in live codingAdvanced CDI in live coding
Advanced CDI in live coding
 
CDI 2.0 is coming
CDI 2.0 is comingCDI 2.0 is coming
CDI 2.0 is coming
 
Mute Java EE DNA with CDI
Mute Java EE DNA with CDI Mute Java EE DNA with CDI
Mute Java EE DNA with CDI
 
CDI 1.1 university
CDI 1.1 universityCDI 1.1 university
CDI 1.1 university
 
Adopt a JSR: CDI 2.0 at Devoxx UK
Adopt a JSR: CDI 2.0 at Devoxx UKAdopt a JSR: CDI 2.0 at Devoxx UK
Adopt a JSR: CDI 2.0 at Devoxx UK
 
CDI 2.0 is upon us Devoxx
CDI 2.0 is upon us DevoxxCDI 2.0 is upon us Devoxx
CDI 2.0 is upon us Devoxx
 
CDI mis en pratique avec Seam Social et Weld OSGI
CDI mis en pratique avec Seam Social et Weld OSGICDI mis en pratique avec Seam Social et Weld OSGI
CDI mis en pratique avec Seam Social et Weld OSGI
 
Devoxx Java Social and Agorava
Devoxx Java Social and AgoravaDevoxx Java Social and Agorava
Devoxx Java Social and Agorava
 
Invoke dynamite in Java EE with invoke dynamic
Invoke dynamite in Java EE with invoke dynamicInvoke dynamite in Java EE with invoke dynamic
Invoke dynamite in Java EE with invoke dynamic
 
Apache Deltaspike the CDI Toolbox (Java One 2015)
Apache Deltaspike the CDI Toolbox (Java One 2015)Apache Deltaspike the CDI Toolbox (Java One 2015)
Apache Deltaspike the CDI Toolbox (Java One 2015)
 
CDI 2.0 is coming
CDI 2.0 is comingCDI 2.0 is coming
CDI 2.0 is coming
 
The path to cdi 2.0
The path to cdi 2.0The path to cdi 2.0
The path to cdi 2.0
 
Apache DeltaSpike the CDI toolbox
Apache DeltaSpike the CDI toolboxApache DeltaSpike the CDI toolbox
Apache DeltaSpike the CDI toolbox
 
Going further with CDI 1.2
Going further with CDI 1.2Going further with CDI 1.2
Going further with CDI 1.2
 
Introduction to cdi given at java one 2014
Introduction to cdi given at java one 2014Introduction to cdi given at java one 2014
Introduction to cdi given at java one 2014
 
Extending Java EE with CDI and JBoss Forge
Extending Java EE with CDI and JBoss ForgeExtending Java EE with CDI and JBoss Forge
Extending Java EE with CDI and JBoss Forge
 
Java EE 6 & Spring: A Lover's Quarrel
Java EE 6 & Spring: A Lover's QuarrelJava EE 6 & Spring: A Lover's Quarrel
Java EE 6 & Spring: A Lover's Quarrel
 
CDI In Real Life
CDI In Real LifeCDI In Real Life
CDI In Real Life
 
The Magnificent java EE 7 in Wildfly-O-Rama
The Magnificent java EE 7 in Wildfly-O-RamaThe Magnificent java EE 7 in Wildfly-O-Rama
The Magnificent java EE 7 in Wildfly-O-Rama
 
1/3 : introduction to CDI - Antoine Sabot-Durand
1/3 : introduction to CDI - Antoine Sabot-Durand1/3 : introduction to CDI - Antoine Sabot-Durand
1/3 : introduction to CDI - Antoine Sabot-Durand
 

Similaire à Java EE, un ami qui vous veut du bien

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
Cellenza
 
Play Framework
Play FrameworkPlay Framework
Play Framework
Armaklan
 
Presentation JEE et son écossystéme
Presentation JEE et son écossystémePresentation JEE et son écossystéme
Presentation JEE et son écossystéme
Algeria JUG
 

Similaire à Java EE, un ami qui vous veut du bien (20)

Javaoop
JavaoopJavaoop
Javaoop
 
Quoi de neuf à Devoxx France 2017 ?
Quoi de neuf à Devoxx France 2017 ?Quoi de neuf à Devoxx France 2017 ?
Quoi de neuf à Devoxx France 2017 ?
 
Appalications JEE avec Servlet/JSP
Appalications JEE avec Servlet/JSPAppalications JEE avec Servlet/JSP
Appalications JEE avec Servlet/JSP
 
Au cœur du Framework .NET 4.5.1
Au cœur du Framework .NET 4.5.1Au cœur du Framework .NET 4.5.1
Au cœur du Framework .NET 4.5.1
 
Lbv Dev Meetup #2
 Lbv Dev Meetup #2 Lbv Dev Meetup #2
Lbv Dev Meetup #2
 
Alphorm.com Formation Java, les fondamentaux
Alphorm.com Formation Java, les fondamentaux Alphorm.com Formation Java, les fondamentaux
Alphorm.com Formation Java, les fondamentaux
 
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
 
Java EE 6 Solutions Linux 2010
Java EE 6 Solutions Linux 2010Java EE 6 Solutions Linux 2010
Java EE 6 Solutions Linux 2010
 
Introduction JavaEE
Introduction JavaEEIntroduction JavaEE
Introduction JavaEE
 
Play Framework
Play FrameworkPlay Framework
Play Framework
 
gradle_lavajug
gradle_lavajuggradle_lavajug
gradle_lavajug
 
Laurent Duveau: Microsoft Edge pour les développeurs web
Laurent Duveau: Microsoft Edge pour les développeurs webLaurent Duveau: Microsoft Edge pour les développeurs web
Laurent Duveau: Microsoft Edge pour les développeurs web
 
Develop on Apache Ofbiz
Develop on Apache OfbizDevelop on Apache Ofbiz
Develop on Apache Ofbiz
 
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 !
 
Gwt oxiane-novae-lr
Gwt oxiane-novae-lrGwt oxiane-novae-lr
Gwt oxiane-novae-lr
 
Presentation JEE et son écossystéme
Presentation JEE et son écossystémePresentation JEE et son écossystéme
Presentation JEE et son écossystéme
 
Javavs net
Javavs netJavavs net
Javavs net
 
Présentation DevoxxFR 2015 sur GWT
Présentation DevoxxFR 2015 sur GWTPrésentation DevoxxFR 2015 sur GWT
Présentation DevoxxFR 2015 sur GWT
 
Devoxx fr
Devoxx frDevoxx fr
Devoxx fr
 
devoxx 2022 - 10 ans de Devoxx FR et de Java.pdf
devoxx 2022 - 10 ans de Devoxx FR et de Java.pdfdevoxx 2022 - 10 ans de Devoxx FR et de Java.pdf
devoxx 2022 - 10 ans de Devoxx FR et de Java.pdf
 

Java EE, un ami qui vous veut du bien

  • 1. JAVA EE UN AMI QUIVOUSVEUT DU BIEN Antoine Sabot-Durand: @antoine_sd
  • 2. ANTOINE SABOT-DURAND • Senior Software Engineer @Red Hat • Java & OSS : • CDI co-spec lead • CDI community development • Apache Deltaspike committer • @antoine_sd
  • 3. AGENDA • Retour sur Java EE • Mythes et réalités Java EE • Conclusion
  • 5. JAVA EE HISTORY 1998 1999 2000 2001 2002 2003 2004 2005 Java Professional Edition J2EE 1.2 12/12/1999 J2EE 1.3 09/24/2001 J2EE 1.4 11/11/2003 2008 2009 2010 2011 Java EE 5 05/11/2006 Java EE 6 12/10/2009 2012 2013 Java EE 7 06/22/2013 2014 2015 2006 2016 2007 2017 Java EE 8 … 2017
  • 6. JAVA EE 7 JSR EJB 3.2 Servlet 3.1 CDI Extensions Bean Validation 1.1 Batch 1.0 Web Fragments JCA 1.7JMS 2.0JPA 2.1 Managed Beans 1.0 Concurrency 1.0 Common Annotations 1.1 Interceptors
 1.2, JTA 1.2 CDI 1.1 JSF 2.2,
 JSP 2.3,
 EL 3.0 JAX-RS 2.0, JAX-WS 2.2 JSON 1.0 WebSocket 1.0
  • 7. JAVA EE 7 SERVERS
  • 8. JBOSS WILDFLY • Nouveau nom de JBoss AS • Dénomination pour éviter la confusion avec JBoss EAP • Supporte Java EE 7 • Rapide, Léger, administration polyvalente • Developer Friendly • Open Source
  • 10. JAVA EE EST LOURD ET LENT
  • 11. Faux JAVA EE EST LOURD ET LENT Depuis 2010
  • 12. Temps de démarrage à vide Server Java EE JBoss JBoss AS 5.1.0
 Java EE 5 JBoss AS 7.1.1
 Java EE 6 Wildfly 9.0.1
 Java EE 7 0ms 4000ms 8000ms 12000ms 16000ms 2 346 2 960 16 000
  • 13. LE DÉVELOPPEMENT JAVA EE EST LENT, CONFUS ET COMPLIQUÉ
  • 14. LES CRITIQUES • Modèle de programmation pas clair • Code difficile à tester ou débuger • Le redéploiement systématique de l’appli est pénalisant (parce que Java EE c’est lent)
  • 15. MODÈLE DE PROGRAMMATION • Depuis Java EE 6, CDI est le modèle de programmation par défaut • Adopté ou supportant les spécifications majeure (JPA, JAX-RS, Servlet, JSF…), il est devenu le ciment de la plateforme
  • 16. TEST ET DEBUG • Eclipse, NetBeans et IntelliJ permettent tous de débuger du code s’exécutant dans dans un navigateur • JBoss Arquillian est la solution pour pouvoir tester du code nécessitant un ou plusieurs container
  • 17. REDÉPLOIEMENT • JRebel permet de réduire considérablement le redéploiement de l’application • Version personnelle gratuite • Fonctionne avec les 3 principaux IDE du marché
  • 18. DEMO
  • 19. JAVA EE EST MONOLITHIQUE
  • 20. SUR LETERRAIN… • Aujourd’hui, tous les serveurs d’application sont modulaires et permettent de définir sa propre stack • GlassFish a ouvert la voie avec son architecture OSGi • WildFly utilise un mécanisme similaire (JBoss Module) • Websphere Liberty a également sa solution
  • 21. UNE APPROCHE “LAZY” • WildFly n’active plus les services non utilisés. • De même pour GlassFish et Websphere
  • 22. WILDLFY EST PATCHABLE $ jboss-cli.sh --command="patch apply ~/Downloads/ wildfly-10.0.0.Beta2-weld-3.0.0.Alpha13-patch.zip" { "outcome" : "success", "result" : {} } $
  • 23. DEMO
  • 24. JAVA EE N’EST PAS ASSEZ RICHE ET EVOLUETRES LENTEMENT
  • 25. JAVA EE N’EST PAS ASSEZ RICHE • C’est vrai, mais la plateforme n’a pas vocation à être complète • Chaque serveur dispose de spécificité qui viennent compléter la plateforme • Java EE est la base de la plateforme, le standard sur lequel les éditeurs construisent leur plateforme
  • 26. JAVA EE EVOLUE LENTEMENT • C’est vrai… et faux depuis Java EE 6 • L’arrivée de CDI marque l’ajout dans Java EE d’un système d’extension portable • Java EE a désormais un ADN de mutable
  • 27. JAVA EE A UNE ARCHITECTURE BLOQUANTE
  • 28. SUR LETERRAIN… • Servlet 3.0 (Java EE 6) → servlet asynchrones • EJB 3.1 (Java EE 6) → traitement asynchrone avec @Asynchronous • Servlet 3.1 (Java EE 7) → utilisation des API I/O non bloquantes • JAX-RS 2.0 (Java EE 7) → traitement asynchrone avec callback • Concurrent utilities (Java EE 7) → Création de threads managées