web-dev-qa-db-fra.com

Redéployer des alternatives à JRebel

JRebel permet de redéployer le code nouvellement compilé sans redémarrer l'application. Je me demande s'il existe une alternative (gratuite?). La page FAQ répond à cette question, mais je suis sûr qu'elle est biaisée en faveur de JRebel. Cette question a été posée il y a un an sur ce site, mais je la ramène pour voir si quelqu'un a de nouvelles informations.

Par ailleurs, j'aime beaucoup JRebel, mais s'il existe une alternative gratuite, je suis disposée à l'essayer.

Une note supplémentaire, je travaille sur un projet open source, et ils offrent des licences gratuites d'un an aux personnes qui peuvent prouver qu'elles sont sur un projet open source. Ce qui fonctionne bien pour moi (www.kuali.org), mais je ne serai pas sur ce projet pour toujours.

183
Jay

Jetez un œil à DCEVM , il s’agit d’une modification du HotSpot VM qui autorise des redéfinitions de classes illimitées au moment de l’exécution. Vous pouvez ajouter/supprimer des champs et des méthodes et modifier les super types d'une classe au moment de l'exécution. Les fonctionnalités de DCEVM pourraient être intégrées dans une future mise à jour de Java dans le cadre de JEP 159 .

Les fichiers binaires disponibles sur le site d'origine sont limités à Java 6u25 et aux versions antérieures de Java 7. Le projet a été créé pour Github et prend en charge les versions récentes. de Java 7 et 8. Le responsable fournit des fichiers binaires pour les machines virtuelles 32/64 bits sous Windows/Linux. À partir de Java 11, le projet a été déplacé vers un nouveau référentiel GitHub et fournit désormais des fichiers binaires pour OS X.

DCEVM est packagé pour Debian et Ubuntu, il est facilement intégré à OpenJDK et peut être appelé avec Java -dcevm. Le nom du package dépend de la version du JDK par défaut:

93
Emmanuel Bourg

Hotswap Agent est une extension de DCEVM qui prend en charge de nombreux frameworks Java (définition du bean Spring rechargeable, mappage d'entités Hibernate, configuration du niveau de journalisation, ...).

Il existe également beaucoup de documentation sur la configuration de DCEVM et de binaires compilés pour Java 1.7.

40
edudant

Au printemps, les gars, utilisés pour le rechargement de Grails mais fonctionnent avec Java aussi:

https://github.com/SpringSource/spring-loaded

20
Ramon

DCEVM prend en charge les redéfinitions de classes améliorées et est disponible pour les JDK7 et JDK8 actuels.

https://github.com/dcevm/dcevm/releases

HotswapAgent est une alternative gratuite de JRebel et prend en charge DCEVM dans divers cadres.

http://hotswapagent.org/

19
tak3shi

J'ai écrit un article sur DCEVM : Spring-mvc + Velocity + DCEVM

Je pense que cela en vaut la peine, car mon environnement fonctionne sans problème.

11
Rafael Sanches

J'ai travaillé sur un projet open source qui vous permet de remplacer à chaud des classes au-delà de ce que l'échange à chaud permet: https://github.com/fakereplace/fakereplace

Cela peut ou peut ne pas fonctionner pour vous, mais tout retour est apprécié

9
Stuart Douglas

Vous voudrez peut-être jeter un coup d'oeil à ceci:

Prise en charge de HotSwap: l'architecture orientée objet du Java HotSpot VM active des fonctionnalités avancées telles que la redéfinition de classe à la volée ou "HotSwap". Cette fonctionnalité offre la possibilité de remplacer le code modifié dans une application en cours d'exécution via les API du débogueur. HotSwap ajoute des fonctionnalités à l'architecture de débogueur de plate-forme Java, permettant à une classe d'être mise à jour pendant son exécution sous le contrôle d'un débogueur . Cela permet également d'effectuer des opérations de profilage par échange de pointage dans les versions de méthodes dans lesquelles du code de profilage a été inséré.

Pour le moment, cela ne permet que le redéploiement du corps de méthode nouvellement compilé sans redémarrer l'application. Tout ce que vous avez à faire est de l'exécuter avec un débogueur. Je l'ai essayé dans Eclipse et cela fonctionne à merveille.

En outre, comme Emmanuel Bourg l'a mentionné dans sa réponse ( JEP 159 ), on espère pouvoir soutenir l'ajout de supertypes et l'ajout et la suppression de méthodes et de champs.

Référence: Livre blanc Java 135217: Fiabilité, disponibilité et facilité d'entretien

4
Alex