Vous aimez ce que vous lisez sur ce blog ?
Envie d'aller plus loin avec véritable formation d'expertise en Java ?
Venez suivre ma formation Masterclasse Expertise Java !

"Même un développeur experimenté a besoin de continuer à apprendre. Et dans cette formation... j'ai appris beaucoup !" - A.G., Java Champion

Sessions intra-entreprises sur demande : contact[at]mokatech.net.
Inscrivez-vous vite !

OpenSource Exchange : compte-rendu sur Glassfish V3

Glassfish V3 "Prelude"

Présentation réalisée par Alexis Moussine-Pouchkine.

Présentation

Tout d'abord, pourquoi "Glassfish" ?

One of the founders, Eduardo, says it means "transparent development". Another member of the team said, "It's see-through :-)". So the name "glassfish" is intended to depict the transparency of open source development, where everything is visible.

Glassfish V3 "Prelude" est la toute nouvelle version du serveur d'applications de chez Sun.
Cette version marque un tournant dans l'histoire de Glassfish, qui entend prouver que serveur d'application n'est pas synonyme de monolithisme et de lourdeur : démarrant en quelques secondes, le poisson de verre vient chasser directement sur les terres du tigre Tomcat, avec lequel il est d'ailleurs 100% compatible (connecteurs, valves...).

Selon le benchmark SPECjAppServer 2004[1], Glassfish est le serveur le plus performant du moment.

Architecture

Glassfish est un serveur modulaire, architecturé autour d'un coeur OSGi (Apache Felix), et composé notamment de :

  • Grizzly : serveur HTTP asynchrone
  • Sailfin : servlets SIP (JSR 116)
  • Metro : stack de Webservices, intéropérables avec ceux de Microsoft
  • Shoal : clustering
  • Jersey : implémentation de JAX-RS 1.0 (qualité production).

Il est également intéressant de noter que Glassfish est un serveur multi-langages : outre Java, il devrait être capable à terme d'héberger du Grails, JRuby, Python, PHP...

La partie administration a été également revue et améliorée, et peut maintenant être pilotée en REST sur le port d'administration. Un "UpdateCenter" intégré permet d'installer facilement les modules, comme par exemple les toutes dernières versions preview des spécifications Java EE 6 (les Servlets 3.0 devraient être bientôt disponibles).

Glassfish en pratique

Alexis a ensuite réalisé une petite démonstration orientée "productivité du développeur".

Tout d'abord, il a montré que, sur son ordinateur portable, le serveur démarrait en 4 secondes environ (dont la moitié imputable au conteneur OSGi), et pouvait déployer une application web complète en 3 secondes. Il nous a également expliqué que, pour minimiser l'empreinte mémoire, tout sous-système inutilisé était déchargé. Ainsi, lors de la suppression de l'unique application web, Grizzly a été stoppé.

Ensuite, Alexis a modifié le code d'une servlet de l'application de démonstration (un simple compteur de visites), afin de démontrer les capacités de rechargement à chaud. Ainsi, plus besoin de redéployer manuellement l'application à chaque modification du code. Personnellement, je trouve cette fonctionnalité très pratique, mais pas spécialement innovante : je l'utilise depuis des années avec Tomcat...
En revanche, la capacité de conserver intactes les sessions malgré les redéploiements est à mon sens une grande avancée : lors des phases de test, la phase de mise en situation d'un use-case peut être longue, et devoir la répéter après chaque correction et redéploiement est horriblement contre-productif. Le fait de retrouver directement l'application dans le même état que précédemment après un redéploiement est un vrai plus.

Pour terminer, Alexis a évoqué Glassfish Embedded, le mini-conteneur intégrable et pilotable via une API java. Dans ce mode, le conteneur OSGi n'est pas disponible, et vous composez votre serveur à la carte, en fonction des jars que vous embarquez. L'utilisation de l'ensemble est visiblement très simple :

  1. GlassFish glassfish = new GlassFish();
  2. glassfish.minimallyConfigure(8080);
  3. GFApplication app = glassfish.deploy(new File("path/to/simple.war"));
  4. ...
  5. app.undeploy();
  6. glassfish.stop();

Conclusion

Glassfish V3 Prelude m'a globalement fait bonne impression. Il réussit en tout cas à dépoussiérer l'image de lourdeur de ses prédécesseurs livrés avec les SDK J2EE.

Je suis particulièrement curieux de voir comment il va se faire une place, ou pas, dans le monde du PHP. A l'époque, Quercus sur serveur Resin avait mesuré des gains de performance de X2 à X10 sur des applications comme MediaWiki ou Drupal. Mais Resin n'a jamais vraiment percé, aussi était-ce resté relativement confidentiel. Avec un serveur plus "médiatique" comme Glassfish, les hébergeurs se décideront peut-être enfin à proposer du Java EE à bas coût ?

Notes

[1] SPECjAppServer 2004 est le nom de la dernière version du benchmark. Une nouvelle est prévue pour 2009. Merci à Alexis pour ces précisions !


Ajouter un commentaire

Le code HTML est affiché comme du texte et les adresses web sont automatiquement transformées.