Glassfish - serveur d'application Java EE
GlassFish est un serveur d’applications Java EE dont le développement a été initié et est aujourd’hui encore dirigé par SUN. Voyons tout de suite ce qui a pû motiver le lancement d’un tel projet alors qu’il existe déjà plusieurs solutions éprouvées dans le domaine.
Il faut tout d’abord noter que GlassFish est bel et bien un serveur d’application Java EE complet. Il surpasse donc les capacités de Tomcat par exemple qui ne propose qu’un conteneur de JSP/servlet sans le support des EJB entre autres. GlassFish joue donc directement dans la cour des Websphere et autres mais surtout dans celle de JBoss avec lequel il partage son ouverture de code. Le serveur d’application de SUN est disponible sous une double licence Common Development and Distribution License (CDDL) et GNU General Public License (GPL) avec exception du classpath. Le projet glassFish a été initié en 2005 et est aujourd’hui considéré comme un produit stable déjà utilisé en production comme SUN aime à le montrer sur ses blogs et en particulier avec des chiffres de traffic impressionnants sur l’exemple d’une application pour le site Wotif.com dès 2007.
Alexis Moussine-Pouchkine soulignait dès Janvier 2009 dans un Paris Java Users Group que GlassFish devançait JBoss dans le nombre de téléchargements quotidiens. Il faut évidemment faire attention au partis pris d’Alexis Moussine-Pouchkine qui est l’ambassadeur SUN du projet Glassfish mais cela dénote la montée en puissance de GlassFish dans nos environnements professionnels. SUN reprend une formule déjà éprouvée pour Tomcat : initier un projet de serveur et l’ouvrir tout en gardant les commandes afin de le faire avancer et de maintenir un lien fort avec ses utilisateurs directs pour pouvoir coller à leurs besoins réels.
Et SUN tient visiblement à les prendre en compte quand on regarde certaines caractéristiques affichées par son produit. Une des plus spectaculaire est sans doute son temps de démarrage qui est de l’ordre des 3 secondes alors qu’il avoisine les 30 secondes pour JBoss voir beaucoup plus pour certains de ses concurrents. Testez par vous-même : installez, lancez, copiez un WAR dans le répertoire d’auto-déploiement et quelques secondes après vous pourrez naviguer dans votre console web d’administration (sur le port 4848 de votre machine).
Il n’y a évidemment pas de miracle là-dessous : GlassFish au moment de démarrer ne va charger que les modules minimum dont il a besoin et devra ensuite charger les autres au moment où ils seront nécessaires. Mais cette gestion dynamique des modules n’est pas la seule innovation qui retiendra l’attention des développeurs : le concept de edit-save-refresh browser vous permet de modifier du code à chaud (par exemple le code d’une servlet) et de sauvegarder votre modification. Il suffit de rafraichir le navigateur pour voir la modification prise en compte. Ces deux point peuvent paraître mineurs car ils n’affectent évidemment pas l’utilisateur final de l’application mais ils prennent tout leurs sens quand on connait le temps qu’il faut habituellement passer en phase de développement à attendre que le serveur redémarre. Côté fonctionnalités intéressantes, GlassFish nous donne la possibilité de déployer des applications JRuby et Groovy, mais il propose aussi une interopérabilité accrue avec des services web .NET 3.0 et bien d’autres que SUN liste plus en détails ici. Pour ceux d’entre nous qui souhaitent suivre de près les performances de leurs serveurs d’applications, GlassFish Enterprise Manager permet d’avoir à disposition des sondes SNMP, intégrable dans la majorité des outils de supervision. GlassFish Enterprise Manager propose aussi son outil de statistiques, Performance Advisor, qui ouvre la voie à l’optimisation des performances de Glassfish avec son binôme Performance Monitor.
Ces dernières fonctionnalités sont arrivées avec la version 2.1 de GlassFish qui est considérée comme finale et supportée par SUNOracle en production. Elle est basée sur le standard Java EE 5 et dispose notamment de fonctionnalités de clustering et de répartition de charge. La version 3 “Prelude” est une final release qui implémente la partie web du standard Java EE 5. Attention, cette dernière version n’est pour l’instant pas encore supportée par SUN pour des environnements de production.
Article publié sur LinuxFr dans le cadre de mon activité professionnelle à Linagora.