Mit JRebel kann neu kompilierter Code erneut bereitgestellt werden, ohne dass die Anwendung neu gestartet werden muss. Ich frage mich, ob es eine Alternative gibt (kostenlos?). Die FAQ- Seite beantwortet diese Frage, aber ich bin sicher, dass sie auf JRebel ausgerichtet ist. Diese Frage wurde vor einem Jahr auf dieser Website gestellt, aber ich rufe sie wieder auf, um zu sehen, ob jemand neue Informationen hat.
Nebenbei bemerkt, ich mag JRebel wirklich, aber wenn es eine kostenlose Alternative gibt, bin ich bereit, es zu versuchen.
Ein weiterer Hinweis: Ich arbeite an einem Open-Source-Projekt und sie bieten Personen, die nachweisen können, dass sie an einem Open-Source-Projekt teilnehmen, kostenlose einjährige Lizenzen an. Was für mich großartig funktioniert (www.kuali.org), aber ich werde nicht für immer an diesem Projekt teilnehmen.
Antworten:
Schauen Sie sich DCEVM an , eine Modifikation der HotSpot-VM, die zur Laufzeit unbegrenzte Neudefinitionen von Klassen ermöglicht. Sie können Felder und Methoden hinzufügen / entfernen und zur Laufzeit die Supertypen einer Klasse ändern. Die Funktionen von DCEVM können in ein zukünftiges Java-Update als Teil von JEP 159 integriert werden .
Die auf der ursprünglichen Site verfügbaren Binärdateien sind auf Java 6u25 und frühere Versionen von Java 7 beschränkt. Das Projekt wurde auf Github gespalten und unterstützt neuere Versionen von Java 7 und 8. Der Betreuer stellt Binärdateien für 32/64-Bit-VMs unter Windows / bereit. Linux. Ab Java 11 wurde das Projekt in ein neues GitHub- Repository verschoben und bietet nun auch Binärdateien für OS X.
DCEVM ist für Debian und Ubuntu gepackt, bequem in OpenJDK integriert und kann mit aufgerufen werden
java -dcevm
. Der Name des Pakets hängt von der Version des Standard-JDK ab:quelle
Hotswap Agent ist eine Erweiterung von DCEVM, die viele Java-Frameworks unterstützt (Spring Bean-Definition neu laden, Entity-Zuordnung im Ruhezustand, Einrichtung auf Logger-Ebene, ...).
Es gibt auch viele Dokumentationen zum Einrichten von DCEVM und kompilierten Binärdateien für Java 1.7.
quelle
DCEVM unterstützt erweiterte Klassenneudefinitionen und ist für das aktuelle JDK7 und JDK8 verfügbar.
https://github.com/dcevm/dcevm/releases
HotswapAgent ist eine kostenlose JRebel-Alternative und unterstützt DCEVM in verschiedenen Frameworks.
http://hotswapagent.org/
quelle
Von den Spring-Jungs, die zum Nachladen von Grails verwendet werden, aber auch mit Java funktionieren:
https://github.com/SpringSource/spring-loaded
quelle
Ich habe einen Artikel über DCEVM geschrieben : Spring-mvc + Velocity + DCEVM
Ich denke, es lohnt sich, da meine Umgebung ohne Probleme läuft.
quelle
Ich habe an einem Open-Source-Projekt gearbeitet, mit dem Sie Klassen über das hinaus ersetzen können, was Hot-Swap zulässt: https://github.com/fakereplace/fakereplace
Es kann für Sie funktionieren oder nicht, aber jedes Feedback wird geschätzt
quelle
Vielleicht möchten Sie einen Blick darauf werfen:
Dies ermöglicht derzeit nur die erneute Bereitstellung eines neu kompilierten Methodenkörpers, ohne die Anwendung neu zu starten. Alles was Sie tun müssen, ist es mit einem Debugger auszuführen. Ich habe es in Eclipse versucht und es funktioniert hervorragend.
Wie Emmanuel Bourg in seiner Antwort ( JEP 159 ) erwähnte , besteht auch die Hoffnung, Unterstützung für das Hinzufügen von Supertypen und das Hinzufügen und Entfernen von Methoden und Feldern zu erhalten.
Referenz: Java Whitepaper 135217: Zuverlässigkeit, Verfügbarkeit und Wartungsfreundlichkeit
quelle
JRebel ist kostenlos. Kaufen Sie es nicht. Wählen Sie auf der Seite "Kaufen" die Option "Kostenlos" (Optionsfeld). Wählen Sie dann "Sozial". Nach Ihrer Anmeldung erhalten Sie einen voll funktionsfähigen JRebel-Lizenzschlüssel. Sie können dann JRebel herunterladen oder den Schlüssel in Ihrer eingebetteten IDE-Version verwenden. Den Fang (ja, es gibt einen Haken) müssen Sie zulassen, dass sie einmal im Monat in Ihrem Namen (Werbung) auf Ihrer FB-Timeline oder Ihrem Twitter-Konto posten. Ich habe ihnen meinen Twitter-Account gegeben, kein Problem, ich benutze ihn nie und niemand, den ich kenne, benutzt ihn wirklich. Sparen Sie also 260 US-Dollar.
quelle