Dans la grande famille des serveurs Java, plusieurs objectifs se côtoient. Certains comme JBoss ou Glassfish jouent la carte de l'exhaustivité dans l'implémentation des fonctionnalités alors que d'autres se spécialisent. Parmi ces derniers, le serveur Jetty se distingue, lui, par son efficacité.
Avant toute chose, posons des bases saines : Jetty n'est pas exactement un serveur d'applications Java. En effet, il ne propose pas toutes les fonctionnalités nécessaires pour être appelé ainsi. Il n'y a par exemple pas de prise en charge native de la norme EJB : ceci peut être dévolu à des projets tiers comme par exemple OpenEJB ou EasyBeans en fonction des besoins de l'application cible. Jetty assume le rôle de serveur HTTP et de conteneur de servlets Java ce qui revient à une version très allégée d'un serveur d'applications. Cette particularité permet à Jetty de jouer la carte de la légèreté et de l'adaptabilité : après tout, rares sont les serveurs java qui peuvent se vanter à la fois d'être embarqués dans des téléphones, des systèmes distribués et participer à des programmes de calculs de sondes sur Mars !
Sur Terre, Jetty s'illustre par sa rapidité de lancement ainsi que par sa capacité à recharger des pages modifiées à chaud. Cette fonctionnalité est particulièrement utile aux développeurs qui n'ont de fait plus besoin de redémarrer leur serveur de test à chaque modification mineure d'une page.
Jetty dispose d'une intégration native dans Maven ce qui fait de lui un vrai bonheur quand il s'agit de l'ajouter à un projet Java comme on peut le voir dans certains tutoriels. L'intéressé est si léger qu'il a même été embarqué directement dans un plugin Eclipse ce qui résume son déploiement à trois clics dans le gestionnaire de mises à jour d'Eclipse via l'URL http://run-jetty-run.googlecode.com/svn/trunk/updatesite.
Voilà donc, dans la longue liste des serveurs Java, un exemple intéressant d'une serveur qui a su tirer son épingle du jeu avec une politique de niche. A la vue de sa success story, on peut se dire que c'est une recette viable !
# Netty
Posté par Gart Algar . Évalué à 5.
[^] # Re: Netty
Posté par ckyl . Évalué à 6.
- Netty c'est un framework pour développer des clients/serveurs réseaux à base d'I/O asynchrone.
- Jetty c'est un container de servlet et un serveur HTTP.
L'un te propose le paradigme servlet, et donc abstrait le protocole réseau, ne te donne aucun contrôle dessus, et te fournit des I/O synchrone. L'autre te propose de quoi développer ton propre protocole réseau et ne te fournis qu'un framework événementiel d'I/O asynchrone très bien foutu et rien au dessus.
Pour faire simple; si tu as besoin de développer un site web classique avec des servlets et tout, tu vas te diriger vers Jetty.
Si tu as besoin de fournir un service très particulier, tu repars du sol avec Netty. Ca peut être pour implémenter ton propre protocole ou par ce que ton cas d'utilisation est très particulier. Par exemple si tu veux fournir un service de vidéo en HTTP, Jetty n'est pas adapté et il vaut mieux construire ton propre serveur web.
Cela dit les deux ont en commun leur très grande qualité technique, une prise en main facile et une bonne documentation. Très agréable de travailler avec ces deux là !
[^] # Re: Netty
Posté par vrm (site web personnel) . Évalué à 2.
[^] # Re: Netty
Posté par ckyl . Évalué à 2.
Tu as raison, pour faire un serveur web avec netty/mina/grizzly il faut avoir une bonne raison puisque ça implique de réimplemanter HTTP soit même (ou tout du moins la partie dont on a besoin). Asyncweb fait ce sale boulot en se basant sur mina pour fournir un outil adapté à cette problématique particulière.
Au moins ce journal montre qu'en dehors des usines à gaz J2EE, il existe de très très bon projets qui simplifient vraiment la vie des développeurs.
[^] # Re: Netty
Posté par Gart Algar . Évalué à 4.
# container de servlet VS serveur d'application
Posté par ckyl . Évalué à 5.
Après je te suis totalement sur le fait que Jetty est super bien foutu et mérite son succès. Un plaisir à utiliser et lire son code. Ce n'est pas un hasard si énormément de projets ayant besoin de fournir un serveur HTTP l'embarquent ! C'est bien conçu, c'est fiable, tout est configurable et c'est léger.
[^] # Re: container de servlet VS serveur d'application
Posté par Florent Zara (site web personnel, Mastodon) . Évalué à 3.
# Pour la gestion des Datasources ?
Posté par syj . Évalué à 2.
Quand je crée un WAR et que je souhaite le déployer sur un nouveau serveur par un tiers ignorant en Servlet & Co. Je butte à chaque fois:
- sur la gestion des datasources pour la connexion à la base de donnée.
- ou le passage de paramètre de configuration.
Avec Tomcat , j'ai plusieurs solutions qui me laissent sur ma faim:
- l'édition manuel des fichiers XML de configuration
- l'utilisation de l'applis web d'administrations. Un vrai clickodrome et buggé à l'époque où je l'ai utilisé 2005.
- dans le war ou le déploiement du war en même temps qu'un context.xml via ANT
- l'ajout d'un fichier META-INF/context.xml au war.
Personnelement, j'ai opté pour la dernière qui est pratique mais imparfaite car elle est difficile à changer par l'utilisateur et elle pose des problèmes pour les mises à jours qui vont suivre.
Cela offre quoi comme solution Jetty pour répondre à ce problème ?
PS: J'avais essayé sur Websphère en 2005 (aussi :) ). Le côté "clickodrome" de l'époque était pire que l'application d'administration de Tomcat.
[^] # Re: Pour la gestion des Datasources ?
Posté par mathieu mathieu (site web personnel) . Évalué à 2.
J'utilise Jetty dans mes projets, et c'est vraiment un superbe outil.
Dans mes junits, j'initialise l'environnement jndi et lance le server d'application, puis je fais mes tests (appels webservice / requête http etc.).
Avec le plugin dédié maven, ca passe parfaitement sur une plateforme d'intégration.
Pour des raisons autres que techniques, le déploiement final se fera sous jboss, mais pour développer, debugger de manière efficace, je continue avec jetty, nettement plus rapide...
# il ne faut passe resin-ner
Posté par Arnaud . Évalué à 2.
Mais entre ces micro-conteneurs qui peuvent grossir selon les besoins et les serveur applicatifs full-JEE qui s'allègent et se modularisent (voir Glassfish v3, une merveille) j'ai comme l'impression que l'on s'oriente lentement mais surement vers une convergence fonctionnelle. :)
# Argument peu convaincant
Posté par Boa Treize (site web personnel) . Évalué à 4.
Heu, ça c'est une fonctionnalité de base de tout serveur digne de ce nom. Ça le fait très bien avec Tomcat, JBoss, GlassFish.
Ce n'est certainement pas un argument à mettre particulièrement en avant.
Sinon oui Jetty ça a l'air pas mal, comme concurrent de Tomcat.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.