JRebel Class Reload Comparison Matrix
|JRebel 6||JRebel 5||JVM Hot Swap|
|Changes to method bodies|
|Changing static field value|
|Adding/removing enum values|
|Adding/removing implemented interfaces|
|Initializes new instance fields|
Skip the Build
Compile in the IDE
With JRebel you avoid having to rebuild the entire application to reload code changes, this is a huge time savings.
Instead of running your full build process, simply use the compiler built into your IDE and JRebel will reload the code into the JVM.
For some users, this is as simple as saving the Java class, others just hit compile.
Maven and Gradle
JRebel also supports reloading code inside of modules and build artifacts, as long as you have the source code.
Classes and resources are read directly from your workspace, stop rebuilding your JARs, EARs, and WARs to see code changes.
There are plugins for Maven and Gradle that configure your modules for JRebel for you.
With JRebel you can develop in cloud environments even faster than you currently do locally.
Instead of having to repackage your application, transfer it to the a remote server, then go through the entire restart/redeploy process on the remote server, JRebel sends only the compiled changed classes to the remote server and then reloads the code changes instantly.
JRebel works with many cloud providers, firewalls are no problem. JRebel uses the same port as your application, and we support encrypting the connection for public clouds.
Some Overhead Expected
< 50 % startup-time overhead
JRebel will instrument all your application classes at load-time so somewhat longer startup time is to be expected. You will make up for it by restarting way less.
< 10 % CPU overhead
To allow methods to be added to classes, JRebel introduces some indirection on method calls that causes minor overhead.
< 2x PermGen overhead
Classes are bigger with JRebel, so it’s a good idea to double your PermGen setting, and if you have nothing at the moment add -XX:PermGen=128m to your JVM command line.