JRebel
JRebel ist ein von ZeroTurnaround entwickeltes Werkzeug, welches das dynamische Deployen von Java Web-Applikationen in einem sogenannten Applikations-Server unterstützt. Damit wird veränderter Java-Code ad-hoc im Applikationsserver verwendet und es ist kein Redeploy oder Hotdeploy nötig.[1]
JRebel | |
---|---|
Basisdaten
| |
Entwickler | ZeroTurnaround |
Erscheinungsjahr | 2007 |
Aktuelle Version | 2018.2.6 (14. Februar 2019) |
Betriebssystem | plattformunabhängig |
Programmiersprache | Java |
Kategorie | Programmierwerkzeug |
Lizenz | ZeroTurnaround EULA |
zeroturnaround.com |
Prinzip und Umsetzung
BearbeitenJRebel ist als JVM „-javaagent“ Plugin umgesetzt und wird als ein einziges JAR-File ausgeliefert. Es integriert sich als solches in die Class-Loader der JVM und des Applikationsservers. Dabei werden keine neuen Class-Loader erstellt oder bestehende gewrapped. Werden Klassen vom Class-Loader geladen, versucht JRebel die zugehörige .class Datei zu finden und speichert sich den Timestamp dieser Datei. Dieser wird dann überwacht und bei Änderungen werden diese über den class-loader an die laufende Applikation weitergegeben. Dabei werden bestehende Instanzen dieser Klasse erhalten. Sollte allerdings eine Member-Variable hinzugekommen sein, wird diese nicht initialisiert, da der Konstruktor nicht erneut aufgerufen wird.[2]
Lizenz
BearbeitenJRebel ist in einem Mietlizenzmodell für 1, 2 oder 3 Jahre erhältlich.[3]
2011 stellte ZeroTurnaround mit der Version 4.5 eine frei verfügbare Lizenz für nicht-kommerzielle Projekte vor. Um die Lizenz zu erwerben, muss man sich mittels Facebook oder Twitter registrieren. Mit der Registrierung werden Benutzungsstatistiken des Werkzeugs über die sozialen Medien geteilt. Der Name social JRebel wurde später auf myJRebel geändert.[4]
JRebel.Android
BearbeitenIm Jahr 2015 stellte ZeroTurnaround JRebel.Android vor. Dieses Werkzeug erlaubt es, ähnlich wie die Desktop-Variante, dynamische Deployments, nur auf Android-Geräten. Dabei wurde die Plugin Architektur um einen Service erweitert, welcher auf der Entwicklermaschine läuft. Dieser Service überwacht Änderungen in den Resource-Ordnern der Android Applikation und schickt sie als für JRebel transformierten Bytecode an den Agenten, welcher am Android Gerät läuft. Dieser Agent übernimmt dann die geänderten Klassen in die laufende Android-Applikation.[5]
Weblinks
BearbeitenEinzelnachweise
Bearbeiten- ↑ JRebel ermöglicht dynamisches Deployment in Java. Computerwoche, 27. Juli 2013, abgerufen am 22. Mai 2016.
- ↑ ZeroTurnaround JRebel FAQ. zeroturnaround, abgerufen am 22. Mai 2016.
- ↑ ZeroTurnaround JRebel Buy. ZeroTurnaround, abgerufen am 22. Mai 2016.
- ↑ JRebel mit Update und kostenfreier Social-Edition. Heise, 21. September 2011, abgerufen am 22. Mai 2016.
- ↑ R. Raudjärv, A. R. Gregersen: JRebel.Android: Runtime Class- and Ressource Reloading for Android. 2015 IEEE/ACM 37th IEEE International Conference on Software Engineering, Florence 2015, doi:10.1109/ICSE.2015.337, S. 741–744.