JRebel Reference Manual

©ZeroTurnaround OÜ, Estonia, Tartu


Home  Next
1. Installation

Preface

What is JRebel?

JRebel installs a -javaagent that monitors the classes and resources in the workspace and propagates their changes to the running application. The following types of changes are supported:

JRebel is

JRebel isn't

How does JRebel work?

JRebel integrates with the JVM and application servers mainly on the class loader level. It does not create any new class loaders, instead, it extends the existing ones with the ability to manage reloaded classes.

When a class is loaded JRebel will try to find a corresponding .class file for it. It will search from the classpath (including an application classpath, like WEB-INF/classes) and from the places specified in the rebel.xml configuration file. If it find a .class file JRebel instruments the loaded class and associates it with the found .class file. The .class file timestamp is then monitored for changes in the loaded class and updates are propagated through the extended class loader, to your application.
JRebel can also monitor .class files in JARs if they are specified in rebel.xml.

Importantly, when loading updates to a class, JRebel preserves all of the existing instances of that class. This allows the application to just continue working, but also means that when adding a new instance field it will not be initialized in the existing instances, since the constructor will not be rerun.

Some common misconceptions:


Home  Next
1. Installation

JRebel Reference Manual, ©ZeroTurnaround OÜ, Estonia, Tartu