Retours sur l’Aquarium Paris de Sun (2e partie)
Dans ce billet, je vais parler exclusivement de la conférence donnée par Roberto Chinicci sur la plateforme JavaEE6
JavaEE6
Roberto Chinnici, ingénieur pour Sun, qui a participé à diverses spécifications pour JavaEE6, est venu nous parler de cette nouvelle plateforme. Le but principal de la nouvelle version de Java Entreprise Edition sera d’accroître sa facilité d’utilisation et d’apprentissage, de la rendre également plus flexible, et plus "agile".
Les nouveautés
En ce qui concerne les nouveautés, les composants suivants seront intégrés à la plateforme :
- EJB 3.1 (JSR 318)
- JPA 2.0 (JSR 317)
- Servlet 3.0 (JSR 315)
- JSF 2.0 (JSR 314)
- JAX-RS 1.0 (JSR 311)
- Connector architecture 1.6 (JSR 322)
- Web beans 1.0 (JSR 299)
- Beans validation 1.0 (JSR 303)
Pour les versions de maintenance :
- JAXB 2.2
- JAX-WS 2.2
- JAX-RS 1.1
- EL 1.2
- JSP 1.2
Enfin, certains composants voient leur intégration encore incertaine :
Les profils
A cela va s’ajouter le principe des "profils". Il s’agit concrètement d’un regroupement de technologies plus ou moins communes. Le premier profil disponible (et pour l’instant le seul existant) sera le "Web Profile", comprenant :
- Servlets 3.0
- JSP 2.1
- JSR 45
- EL 1.2
- JSTL 1.2
- JSF 2.0
- EJB Lite 3.1
- JTA 1.1
- JPA 2.0
- JSR 250
ainsi que peut-être :
- JAX-RS 1.1
- WebBeans 1.0
Là se pose la question de la pertinence de ces modules. Certes, l’intérêt principal est d’alléger la plateforme, en ne fournissant que les technologies utiles. Par exemple, le développement d’une application non web n’aura que faire des Servlets ou encore de JSF ! Cependant, ne risque-t-on pas de multiplier les versions différentes de la plateforme JavaEE 6 ? La question est posée, sans doute y verra-t-on plus clair une fois que JavaEE6 sera disponible…
A noter que la création de nouveaux profils devra passer par un processus "JCP" (Java Community Process). Autant dire qu’il ne devrait pas y avoir pléthore de profils disponibles (cela peut être vu comme un avantage cela dit) !
"Elagage"
Un autre aspect de cette nouvelle plateforme est le "pruning" que l’on traduira par "élagage". Il s’agit tout simplement de définir des technologies comme optionnelles. On y retrouve ainsi :
- JAX-RPC (remplacée par JAX-WS)
- EJB Entity Beans (remplacée par JPA)
- JSR 88 (une API de déploiement d’applications qui n’a jamais été adoptée)
- JAXR
Ces technologies seront marquées dans la Javadoc comme optionelles, un peu à la façon dont on identifie les méthodes ou classes dépréciées avec le @deprecated.
Extensibilité
Toujours dans le but de faciliter l’utilisation de JavaEE6, Sun désire offrir un véritable mécanisme de support et de configurations de frameworks open-source. Il s’agirait, d’après ce que j’ai compris, de disposer d’un moyen générique de configurer des frameworks externes afin qu’ils puissent se "plugger" directement sur JavaEE6. Autre point d’importance : la plateforme facilitera le support des langages de scripting comme JRuby, Grails par exemple… Hélas, peu d’informations précises n’ont été données sur cette partie-là, mais c’est à surveiller de près !
Nouvelles technologies
Servlets 3.0
Enfin une nouvelle version des Servlets ! Grâce à cette nouvelle version, la configuration de nos servlets passera par trois parties :
- des annotations, comme @WebServlet, @ServletFilter…
- toujours le web.xml, mais qui deviendra plus léger
- des fragments de web.xml, qui permet de définir des parties de web.xml dans d’autres fichiers XML (un fragment par servlet ou par librairie par exemple).
Autres nouveautés apportées par cette version :
- une API pour enregistrer dynamiquement des servlets (lors du démarrage de l’application)
- le traitement asynchrone.
Concernant ce dernier point, il suffira d’annoter sa servlet avec @WebServlets(asyncSupported=true), puis d’utiliser les méthodes forward(String path), start(Runnable action) et complete().
EJB 3.1
Quelques nouveautés aussi du côté des EJB. Tout d’abord la possibilité de créer des EJB singleton grâce à l’annotation @Singleton. Il sera désormais possible de se passer de l’interface, et de n’avoir dès lors qu’une seule classe par type de bean. Nous y voyons aussi l’introduction des timers, toujours grâce aux annotations : @Schedule(dayOfWeek="Mon", hour="3", minutes="30" ).
Une autre annotation qui apparaitra sera celle @Asynchronous. Enfin, il sera possible d’adresser directement un bean via un nom JNDI de la forme suivante :
"java:global/(app)/(module)/(bean)#(interface)"
EJB 3.1 Lite
Une version "light" des EJB va aussi voir le jour. Cette version allégée est un sous-ensemble des EJB destiné avant tout à un usage externe à une plateforme complète. Elle pourra être utilisée par exemple avec JavaSE. Celle-ci comprendra :
- les sessions beans (statefull, stateless, singletons)
- les transactions et la sécurité
- les interceptors
- ejb-jar.xml
A noter que cette version pourra être packagée directement au sein d’un WAR (et sera par conséquent présent dans le même classloader que l’application).
Dates de sortie
Dernier point concernant la plateforme JavaEE6, ses dates de sorties :
- janvier 2009 pour l’ensemble des spécifications
- février 2009 pour un "final draft"
- mai 2009 pour la release.
De mon point de vue, même si je suis assez sceptique quant à l’introduction des profils, j’attends avec impatience cette plateforme, et en particulier les technologies liées au développement web (JSF 2.0, Servlet 3.0, WebBeans). A noter que GlassFish v3 devrait être en mi-2009 le premier serveur d’applications à disposer d’une compatibilité totale avec JavaEE6. Un autre bon point pour l’adoption de ce serveur !
A suivre…