Developpez.com - Rubrique Java

Le Club des Développeurs et IT Pro

L'outil JRebel, anciennement JavaRebel, est disponible en version 2.1

Avec un meilleur support de Struts 1.x/2.x

Le 2009-10-07 23:29:10, par Ricky81, Expert éminent sénior
Bonsoir,

Une fois le renommage de JavaRebel en JRebel passé (trademark Java quand tu nous tiens), les équipes de ZeroTurnaround n'en ont pour autant pas oublié d'améliorer le produit.

La nouvelle release 2.1 se focalise essentiellement sur les 2 version majeures de Struts, avec :
  • un nouveau plugin pour Struts 1.x
  • la mise à jour du plugin Struts 2.x


Dans les deux cas, JRebel permet désormais la prise en compte à chaud des modifications du mapping des classes Action (mapping XML ou par annotations).

En complément, on notera également :
  • support de GlassFish v3 et du conteneur OSGi Felix sur lequel ce dernier repose
  • l'envoi de statistiques anonymes d'utilisation de JRebel vers la base centralisée de l'éditeur (possibilité de le désactiver), afin de permettre à ce dernier d'avoir une meilleure visibilité sur les besoins et d'adapter sa roadmap
  • correction de divers bugs
  • renommage de javarebel.jar en jrebel.jar


Petit rappel de ce qu'est JRebel :

L'outil JRebel permet d'améliorer la productivité du développement Java. Il se présente sous la forme d'un agent pour la JVM qui permet le remplacement à chaud du bytecode des classes de l'application. Par conséquent, une grande partie des modifications de code peut être prise en compte par l'application sans nécessiter de redémarrer cette dernière.
Utilisez vous JRebel au quotidien ? Sauriez vous quantifier le gain de temps qu'il vous apporte en modifiant à la volée le bytecode pour les classes que vous modifiez ?

La page de présentation de JRebel
Téléchargez la dernière version gratuite
Matrice de comparaison avec/sans JRebel

Source
  Discussion forum
2 commentaires
  • djo.mos
    Expert éminent
    Envoyé par Ricky81

    Utilisez vous JRebel au quotidien ? Sauriez vous quantifier le gain de temps qu'il vous apporte en modifiant à la volée le bytecode pour les classes que vous modifiez ?
    Oui, et non. Oui j'utilise JRebel au quotidien, et non, je ne saurais quantifier le temps qu'il me fait gagner tellement c'est beaucoup

    Plus sérieusement, voici quelques use-cases de JRebel (en ce qui me concerne) :

    - Je l'utilise sur le développement d'un serveur métier en OSGi (à base d'equinox), et le hot reloading marche avec equinox depuis longtemps déjà
    - Je l'utilise sur le développement d'applications Eclipse RCP. Là où j'ai fréquemment besoin de jouer sur les vues et éditeurs, en tweakant le layout, l'intitulé des labels, l'ajout de composants, etc. Au lieu de relancer tout l'applpication pour voir ce genre de modifs, je ne fais que fermer et réouvrir la vue ou l'éditeur (ou la page de préférences), et hop.
    - Je l'utilise sur le développement d'applications Web avec Wicket. Wicket étant basé sur Java principalement, et offrant lui même des mécanismes pour recharger régulièrement les fichiers de ressources (properties, html, css), voir une modif qu'on vient de faire revient à un simple F5 sur le navigateur, à la PHP quoi

    Bon, d'un autre part, JRebel ne gère pas tous les changements qu'on peut effectuer, genre si on modifie la classe parente ou les interfaces implémentés, ou encore si on ajoute/modifie un champ static final.

    De plus, de temps en temps (plutôt rarement, mais ça arrive), JRebel déconne parfois lors du rechargement ce qui peut conduire à un comportement bizarre de l'application.

    Dans le cas d'OSGi, JRebel ne supporte pas les changements qu'on effectue sur le manifest.

    Mais dans l'ensemble, je ne peux plus considérer un développement Java sérieux sans JRebel dans la boite à outils.

    P.S.: Je n'ai aucune affiliation avec ZeroTurnaround, et je n'essais pas de leur faire de la pub gratuitement : c'est juste que j'apprécie beacoup leur produit qui se trouve être payant. Je suis plutôt proponent des alternatives Opensource, mais je n'en trouve pas dans ce cas-ci.
  • Baptiste Wicht
    Expert éminent sénior
    J'aurais une question pour ceux qui utilisent JRebel : Est-ce que JRebel supporte le reloading d'un Jar complet ?

    Je travaille sur une application modulaire, je dois générer le jar d'un projet pour déployer un module, est-ce que JRebel peut remplacer un Jar par un autre ?

    Seul le core est éxécuté directement sans passer par un Jar.