JRebel

JRebel ist ein Entwicklungswerkzeug für Java Software um den Deploymentprozess während der Entwicklung zu beschleunigen.

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
Programmier­sprache Java
Kategorie Programmierwerkzeug
Lizenz ZeroTurnaround EULA
zeroturnaround.com

Prinzip und Umsetzung

Bearbeiten

JRebel 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]

JRebel 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

Bearbeiten

Im 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]

Bearbeiten

Einzelnachweise

Bearbeiten
  1. JRebel ermöglicht dynamisches Deployment in Java. Computerwoche, 27. Juli 2013, abgerufen am 22. Mai 2016.
  2. ZeroTurnaround JRebel FAQ. zeroturnaround, abgerufen am 22. Mai 2016.
  3. ZeroTurnaround JRebel Buy. ZeroTurnaround, abgerufen am 22. Mai 2016.
  4. JRebel mit Update und kostenfreier Social-Edition. Heise, 21. September 2011, abgerufen am 22. Mai 2016.
  5. 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.