Our website uses cookies to improve your user experience. By browsing this website, you explain yourselves hereby in agreement. Lern more about our Cookies policy in the privacy policy.

I accept

ZeroTurnaround

JRebel

JRebel

JRebel, ZeroTurnaround's flagship product, is a JVM Java Agent that integrates with application servers, making classes reloadable with existing class loaders. Only changed classes are recompiled and instantly reloaded in the running application. JRebel plugs into IDEs and build systems. Classes and static resources are loaded straight from the workspace. JRebel integrates with over 90 frameworks. Dedicated JRebel plugins will rebuild caches, rewire components and apply configuration to the runtime as necessary.

Features:

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.

Cloud/Remoting

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.

 

JRebel feature comparison matrix:

Java EE SupportJRebel logoJVM Hot Swap
Time to reload < 1s < 1s
No memory leak Yes Yes
Changes to Class structure
The ability to make changes when coding a class. Add, remove, change or rename almost anything, including Fields, Methods, Signatures and Types.
Changes to method bodies Yes Yes
Adding/removing Methods Yes No
Adding/removing constructors Yes No
Adding/removing fields Yes No
Adding/removing classes Yes No
Adding/removing annotations Yes No
Changing static field value Yes No
Adding/removing enum values Yes No
Changing interfaces Yes No
Replacing superclass No No
Adding/removing implemented interfaces No No
Instant Builds
Increasing developer productivity by instantly reloading class files, resource files and framework configuration even when deploying a packaged WAR/EAR outside of exploded development.
Skip builds for WAR directories Yes Yes
Skip builds for .WAR/.EAR class updates Yes Yes
Skip builds for .WAR/.EAR resource updates Yes No
Map multiple source dirs to one .WAR/.EAR target dir Yes No
Map classes and resources with include/exclude patterns Yes No
Map multiple source dirs with Ant-style patterns Yes No
Use system properties to make mapping machine-independent Yes No
Maven plugin Yes No
Remoting/Cloud
Enables JRebel functionality in remote development environments. Keeps the remote runtime in sync with the local IDE workspace.
Application updates over HTTP Yes No