If you’re curious about getting started with JRebel, check out the recording of our ZT Master Class: Intro to JRebel for a demonstration and overview of the basics plus some great Q&A!
This post was modified from its original version, we’ve rewritten it to be more precise and updated it with the fresh information.
One of the best things about the Devoxx Java Conference in Antwerp each year, is that even after our 5th time going there we still meet lots of new developers who aren’t quite sure what JRebel actually is. They might have heard different speakers mention it during their talks as being helpful for speeding up development, or saw the ZeroTurnaround team at the booth in the exhibition hall, or just ran into someone wearing a new JRebel t-shirt in the beer line.
Now seems like a good opportunity to set the record straight. The next time I hear a dev say, “Why the heck is Java so slow? Why is my application restart so long? Isn’t this supposed to be the future?”, I will have a nice blag post to refer to :-)
What does JRebel do?
JRebel lets Java developers instantly update code (i.e. add a new feature, fix a bug, etc) and see those changes reflected in their app under development without restarting the application server. According to our Java EE Productivity Report 2011, this process that takes an average of 10.5 minutes each coding hour for every developer (that’s over 5 full work weeks each year!)
Bottom line: JRebel users tell us that Java development is more fun, iterative and productive–similar to coding in PHP, Python, Ruby and other scripting languages.
What does JRebel do (from a technical perspective)?
JRebel uses “Rebellion Technology” to instantly reload changes made to a class structure, making a full app redeploy unnecessary. You just save, refresh and see the changes right away. To achieve this, it does not wrap classloaders around classes, but patches existing classloaders to make classes loaded through them reloadable using instrumentation. JRebel tracks changes that you make in your workspace, and updates them on-the-fly, so you can keep focused on the code and stay in the zone without interruption. (JRebel helps people quit smoking this way!) — super-technical content on Classloaders can be found here.
JRebel is a plugin for anything Java
- JRebel plugs in to different JVMs, most popularly Oracle’s JVM (formerly Sun’s)
- JRebel plugs in to your IDE
- JRebel is a -javaagent
- JRebel supports Java EE and Java SE
JRebel : Hotswap :: Ferrari : Lawnmower
JRebel is a Java jedi. Unlike HotSwap, which supports only changes to method bodies, JRebel supports:
- Adding / removing / changing Classes
- Adding / removing / changing Methods
- Adding / removing / changing Constructors
- Adding / removing / changing Fields
- Adding / removing / changing Annotations
- Adding / removing / changing Static field values
JRebel also rocks out with instant builds and Java EE support (see all the JRebel features). So if your project is more like a race than a weekend lawn manicure, then JRebel is a clear winner over Hotswap.
JRebel is IDE neutral
Using some weird IDE? Not using an IDE? No matter … JRebel works. Here are links for the 6 most popular IDEs in Java:
- JRebel for Eclipse
- JRebel for MyEclipse
- JRebel for IntelliJ IDEA
- JRebel for NetBeans
- JRebel with IBM WebSphere & Rational (RAD)
- JRebel with JDeveloper
JRebel supports 41 Java web & server-side frameworks (as of Nov 2011)
Is your team using Spring, Hibernate, Struts, JSF, JSP or Seam? JRebel supports a total of 41 different Java frameworks Here is a list:
JRebel supports various app servers/containers
Which do you use most?
- Oracle WebLogic
- Google AppEngine
- SAP NetWeaver
- SpringSourceDM Server (Eclipse Virgo)
- Oracle OC4J
- Mulesoft tcat server
Using something not on the list above? Email us at email@example.com to see how JRebel can work for you.
JRebel supports your complete technology stack…no switching needed
With JRebel, you don’t have to change to another IDE, app server or framework. You keep using the tools you know best, and JRebel does the rest from behind the scenes.
Does JRebel work for mobile apps?
JRebel for Mobile App Development (Android, Java ME) is under investigation…stay tuned! Although we’ve heard that long redeploys are not such an issue for Mobile App devs, we’ve been told that the build phase can be very annoying…we will be investigating the use of JRebel for mobile app development in 2012, so we’ll update you soon.