Alternativen zu JRebel erneut bereitstellen [geschlossen]

190

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.

Jay
quelle
53
Gute Frage. Wir haben auch nach einer Alternative zu JRebel gesucht, da die Verkaufsabteilung äußerst invasiv ist. Wir haben keine Probleme, für ein Produkt wie JRebel zu bezahlen, aber nicht, wenn sie unsere Entwickler und die IT-Abteilung rund um die Uhr belästigen.
Neu242
4
Es gibt eine Alternative zu jRebel von ZeroTurnAround: die kostenlose Version von Jrebel für OpenSource-Projekte und Studienfälle ... my.jrebel.com
Dellasavia
2
Ich weiß, es ist eine späte Antwort. Sie können sich Spring Loaded - ansehen , einen JVM-Agenten zum erneuten Laden von Änderungen an Klassendateien, während eine JVM ausgeführt wird. Es transformiert Klassen zur Ladezeit, um sie für ein späteres Nachladen zugänglich zu machen. Im Gegensatz zu 'Hot Code Replace', das nur einfache Änderungen zulässt, sobald eine JVM ausgeführt wird (z. B. Änderungen an Methodenkörpern), können Sie mit Spring Loaded Methoden / Felder / Konstruktoren und mehr hinzufügen / ändern / löschen ...
Simple-Solution
Eclipse-Debugger - ersetzt Ihren Live-Code sofort.
user1050755
Versuchen Sie, dies auf der Schwesterseite Software Recommendations Stack Exchange zu veröffentlichen .
Basil Bourque

Antworten:

97

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:

Emmanuel Bourg
quelle
5
Es funktioniert gut, ich fand es schneller und weniger speicherintensiv als JRebel. Die einzige Einschränkung besteht darin, sich an Java 6u25 zu halten.
Emmanuel Bourg
3
Vielen Dank. Ich habe den ganzen Tag ruiniert und versucht, jRebel dazu zu bringen, wie gewünscht zu arbeiten. DCEVM kam zur Rettung.
Alehro
4
Hier finden Sie vollständige Anweisungen zum Erstellen und Installieren von DCEVM unter JDK 7u45 und MacOSX: neu242.livejournal.com/52962.html
neu242
1
JEP 159 ist nicht Teil von JDK 8. Es wurde möglicherweise auf JDK 9 verschoben, aber noch keine Bestätigung.
KrishPrabakar
5
Hier finden Sie einige vollständige JVM 1.7-Binärdateien: dcevm.nentjes.com, sodass Sie Ihre JVM nicht patchen müssen. Ich habe den win64 ausprobiert und es hat super für mich funktioniert. Ich habe auch hier darüber gebloggt,
dnang
42

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.

edudant
quelle
5
Sie haben jetzt eine eigene Website: hotswapagent.org . Das Projekt ist ziemlich neu, aber es scheint ziemlich gut zu funktionieren.
Didier L
Ich habe dieses Tutorial befolgt, um es nach der Installation in Eclipse zu integrieren: tirthalpatel.blogspot.fr/2014/06/… es funktioniert wie ein Zauber
jpprade
@edudant Müssen wir nach der Installation von 'Hotswap Agent' DCEVM installieren? Weil ich DCEVM mit "sudo apt install openjdk-11-jre-dcevm" in Ubuntu 19.04 und auch mit dem Plugin in IntelliJ Ultimate 2019.1.3 installiert habe. Was nützt DCEVM, wenn Sie 'Hotswap Agent' installieren, geschweige denn JRebel?
20

Von den Spring-Jungs, die zum Nachladen von Grails verwendet werden, aber auch mit Java funktionieren:

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

Ramon
quelle
3
Ich möchte nicht meckern, aber federbelastet unterstützt das Neuladen von Abhängigkeiten nicht.
lbednaszynski
Soweit ich mich erinnere, gibt es Systemeigenschaften, mit denen Sie festlegen können, welche Pakete neu geladen werden sollen. Es hat andere Einschränkungen und ich würde wahrscheinlich auf jeden Fall lieber mit DCEVM gehen.
Ramon
1
"Welche Pakete müssen nachgeladen werden?" - richtig. Das von @lbednaszynski hervorgehobene Problem besteht darin, dass die abhängigen JARs nicht neu geladen werden. Dies ist für Maven-Projekte mit mehreren Modulen unerlässlich.
Marcel Stör
Dieses Projekt ist vorerst auf dem Dachboden!
Jpmottin
9

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

Stuart Douglas
quelle
4

Vielleicht möchten Sie einen Blick darauf werfen:

HotSwap-Unterstützung: Die objektorientierte Architektur der Java HotSpot VM ermöglicht erweiterte Funktionen wie die Neudefinition von Klassen im laufenden Betrieb oder "HotSwap". Diese Funktion bietet die Möglichkeit, geänderten Code in einer laufenden Anwendung über die Debugger-APIs zu ersetzen. HotSwap erweitert die Java Platform Debugger-Architektur um Funktionen, mit denen eine Klasse während der Ausführung unter der Kontrolle eines Debuggers aktualisiert werden kann . Außerdem können Profiling-Vorgänge durch Hotswapping in Versionen von Methoden ausgeführt werden, in die Profiling-Code eingefügt wurde.

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

Alex
quelle
-3

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.

Michael Andrews
quelle
14
Es gibt noch einen Haken. Es ist JRebel Social nur für nichtkommerzielle Zwecke kostenlos. Ja, sicher, wir werden nicht prüfen, ob Sie es tatsächlich für Ihr persönliches Projekt oder bei der Arbeit verwenden, aber die Auditoren mögen es möglicherweise nicht, wenn sie feststellen, dass Sie die Software missbrauchen.
Anton Arhipov
2
Ich würde niemals etwas anderes vorschlagen. Tatsächlich - der einzige Grund, warum ich dies anspreche, ist, dass es keine "individuelle" Lizenz mehr gibt. Ich konnte meine Firma dazu bringen, meine Arbeitslizenz zu bezahlen. Ich habe dann auch über 3 Jahre lang eine persönliche Lizenz für meinen persönlichen Gebrauch bezahlt. Aber als der Preis nördlich von 260 Dollar pro Jahr lag, wurde das unpraktisch. Dies ist die beste Lösung für mich (und andere), aber ich hätte auch weiter dafür bezahlt, wenn der Preis angemessen gewesen wäre.
Michael Andrews
42
Außerdem ist die Tatsache, dass ich jedes Jahr bereits gekaufte Software zurückkaufen muss, frustrierend. Kein anderes Unternehmen tut dies. Normalerweise kaufen Sie Software einmal. Wenn Sie sich für ein Upgrade entscheiden, kaufen Sie es erneut zum vollen Preis (oder je nach Unternehmen zum Upgrade-Preis). Aber was Sie dann bezahlen, sind NEUE Funktionen - nicht die gleichen Funktionen, für die Sie bereits bezahlt haben. Es wäre, als würden Apple oder Microsoft Ihren Computer jedes Jahr deaktivieren, bis Sie erneut für das Betriebssystem bezahlt haben. Denkanstöße.
Michael Andrews
2
JRebel Social wurde durch myJRebel ersetzt. Es ist kostenlos für nichtkommerzielle Zwecke. Sie müssen nur das Teilen von Statistiken zulassen
Steve
1
Insgesamt ist JRebel für eine Entwickler-Softwarelizenz relativ günstig.
Jared Hooper