Rencontre avec Toomas Römer à l’occasion de sa venue le 12 mai dernier au Paris JUG. Sur une idée de Florent Ramière de Jaxio, j’ai préparé quelques questions afin de vous expliquer tout d’abord le principe de JavaRebel, puis un peu l’histoire de la société ZeroTurnaround. L’interview s’est déroulé au Falstaff, la fameuse troisième mi-temps qui a lieu après chaque soirée du Paris JUG.
The original interview was conducted in English. You can try to use Google Translate but the quality is not great. French to English is never perfect. Sorry for english readers.
Bonjour Toomas, peux-tu te présenter en quelques mots ?
Je m’appelle Toomas Römer, je viens d’Estonie. Je suis l’un des fondateurs de la société ZeroTurnaround avec Jevgeni Kabanov. Je contribue sur le produit JavaRebel, JspWeaver et j’ai aussi travaillé sur le framework web Aranea. Mon blog : http://dow.ngra.de
A quoi sert JavaRebel ?
JavaRebel est un système qui permet de gagner du temps en évitant de devoir redéployer toute une application, en particulier avec les serveurs d’application J2EE. Pour cela, un agent s’installe dans la JVM. Il surveille un ensemble de répertoire que tu configures dans lequel se trouve tes classes, tes ressources, tes JSP, bref ton application. Lorsqu’une modification survient, l’agent se charge alors de remplacer ton code de manière transparente. Cela évite de devoir arrêter et relancer ton application.
Là où le Hotswap en Java est limité, JavaRebel par un système sophistiqué d’enrichissement du byte-code permet d’accélérer d’environ 80% le temps de développement. Tu peux ainsi ajouter des méthodes à une classe, changer ta configuration Spring, puis tester et valider immédiatement si le tout fonctionne. Les 2 seuls cas qui obligent encore à arrêter et relancer l’application sont l’ajout ou le retrait d’interface sur une Classe ou le changement d’une Superclasse.
Un tableau comparatif complet à cette adresse permet de comprendre ce qu’apporte JavaRebel.
D’où vient cette idée ?
Jevgeni Kabanov a eu l’idée en 2007, sur un besoin que chaque développeur J2EE connait : comment déployer rapidement une application sans perdre de temps ? J’étais à l’époque encore à l’armée, nous avons commencé à travailler dessus. ZeroTurnaround est maintenant une petite entreprise de 5 développeurs, ainsi que d’autres personnes pour la partie commerciale et la gestion. Nous avons participé à Devoxx 2008, à QCon et nous serons à JavaOne cette année.
Nos produits sont:
– JavaRebel pour accélérer le développement Java
– JSPWeaver supprime complétement la compilation des JSP en la remplaçant par son interprétation à l’exécution
– LiveRebel est notre solution de changement à chaud d’applications d’entreprise. Nous venons d’ouvrir la bétâ.
J’imagine que techniquement, vous avez dû rencontrer pas mal de difficultés non ?
Nos soucis ont surtout porté sur les vendeurs de JVM. Nous supportons la JVM HotSpot de SUN, Oracle JRockit, IBM J9 et l’Apple MRJ. Le support de la jvm d’IBM est celui qui nous a demandé le plus de travail. Lorsque l’application se plante, il était difficile, faute d’outils, d’avancer. Mais avec beaucoup d’efforts, nous pouvons aujourd’hui offrir le support de ces JVM.
Du côté des serveurs d’application nous supportons les plus connus (ndlr: liste complète ici). Comme tu le sais, les ClassLoader des serveurs d’application ne sont pas standards. Entre JBoss ApplicationServer et IBM Websphere, cela nous aussi demandé pas mal de travail. Caucho Resin était aussi assez difficile à mettre en place. Au final nous avons 10 containers supportés.
Parlons licence, comment fonctionnez-vous ?
JavaRebel est un produit commercial, tu peux avoir des licences d’évaluation de 3 Mois, ce qui laisse le temps de se faire une idée je pense de ses qualités. Nous mettons surtout en avant le temps, et donc l’argent gagné grâce à cet outil. Tu as d’ailleurs un outil d’estimation du coût sur la page d’accueil de notre site.
Le prix de la licence est de 59$ pour quelqu’un de seul, 149$ pour un salarié d’une entreprise et surtout, nous offrons gratuitement des licences aux projets Open-source ainsi qu’aux personnes avec une ceinture marron sur JavaBlackBelt !
(NDLR: 10 développeurs à 40 EUR/heure qui prennent 8 mn par cycle de compilation-développement-test et qui relancent ne serait-ce que 2 fois par heure l’application coûtent environ 158 000 EUR par an…)
Quelles méthodologies utilisez-vous pour ajouter le support d’un nouveau framework comme Spring ou Guice ?
Nous sommes nous même développeurs sur d’autres projets, nous suivons donc beaucoup l’actualité des frameworks que nous utilisons. La communauté des utilisateurs de JavaRebel via les forums sur Zeroturnaround nous font part aussi des cas qu’ils rencontrent, ce qui permet de faire évoluer le produit et de continuer à sortir une version environ tous les 3 mois.
Vous vous concentrez sur la stabilité de l’outil ou le support de nouveaux frameworks ?
Plutôt maintenant sur la stabilité, le panel des containers étant assez large.
Du côté des éditeurs comme Eclipse que tu nous as montré ou IDEA IntelliJ, bref des outils, qu’offrez-vous ?
Nous avons tout d’abord une documentation complète et gratuite sur le site pour que chacun puisse configurer son IDE favori, que ce soit Eclipse, IDEA IntelliJ ou Netbeans, avec qui j’ai eu un peu plus de mal. Nous avons un plugin dans IDEA IntelliJ, ainsi qu’un plugin Maven2 pour générer le fichier rebel.xml qui te permet de lister les répertoires de type target/classes utilisés par différents modules Maven2.
Une question : j’ai un serveur Weblogic sur Linux. Je travaille avec IDEA IntelliJ sur Windows. Comment faut-il configurer son environnement ?
JavaRebel fonctionne en surveillant tes classes, il n’y a pas d’accès réseau entre l’agent de la JVM et ton éditeur. Il faut donc que ton serveur Linux fonctionne avec une Webapp explosée, que ton répertoire sous Windows soit accessible à distance de Linux, avec un montage. Ou plus simplement, que tu aies par exemple un partage sur Linux afin de déposer tes classes à partir de Windows au moment de la compilation.
Là tu es d’accord que c’est pas non plus le plus facile non ?
Le cas le plus courant est quand même d’avoir tout sur sa propre machine non ? Serveur d’application et éditeur Java, afin de faciliter le développement. Nous avons beaucoup d’articles sur notre blog comme « Developping in Exploded Format » pour aider les développeurs à trouver la meilleur configuration possible.
Quels sont les autres fonctionnalités ?
JavaRebel est capable de recharger tes fichiers de configuration de Spring. Cela te permet d’ajouter un Bean, de le déclarer dans la configuration de spring, puis simplement de le tester tout de suite sans devoir arrêter et relancer ton serveur. Nous avons aussi le support de l’injection, avec AspectJ grâce à nos plugins, ainsi que Struts2, Google Guice, Tapestry4, Apache Wicket et WebObjects. (liste complète)
Le mot de la fin ?
Merci au Paris JUG, je vais aller ensuite à Tours puis Bordeaux. N’hésitez pas à télécharger et tester JavaRebel, contactez-nous si vous souhaitez une licence pour évaluer JavaRebel au delà des 30 jours de la période d’essai. Et à bientôt !
Merci Toomas
Merci Nicolas !
Références:
– La page JavaRebel sur le site de ZeroTurnaround
– Le blog de Toomas et de Jevgeni
– Jevgeni sur Twitter
– Toomas sur Twitter
– Exemple d’article de Jevgeni sur la lenteur de System.currentTime…