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.
Remote and virtual server support
With JRebel you can develop on virtual machines, remote servers and cloud environments as fast and easily as you do locally.
JRebel sends the changed classes and resources to the remote server, reloading them instantly. This avoids the need to repackage your application, transfer it to the remote server, and then go through the entire restart/redeploy process on the remote server.
Supports all virtualization technologies including VMware, VirtualBox, Vagrant and Docker.
Work with any Java remote server in your development environment or in the cloud.
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.