ZeroTurnaround has released the next version of their JVM plugin that allows for instant code changes without complete redeployments.
JRebel attempts to free the Java developer from lengthy redeployment times by offering a solution similar to Hotswap but without all the shortcomings.. It also allows for reloading of other resources other than Java files that form a modern Web application. We spoke with ZeroTurnaround's CTO Jevgeni Kabanov for some insights on this new version.
InfoQ: Is the basic reloading mechanism the same as JRebel 3.0 or is it significantly changed?
Under the hood the mechanism has changed significantly. The majority of changes were made to enable LiveRebel to run with only 3% performance overhead and handle concurrent reloads safely, but JRebel also benefits from the same features as well as others made possible by this groundwork, e.g. the fact that "-noverify" flag is no longer necessary and that debugging experience is improved as well as others in the near future.
Unlike JRebel 3, version 4 has completely embraced the instrumentation services of Java 5+. This is a well known solution already used by several other JVM-level product offerings.
InfoQ: How does JRebel 4 use the Instrumentation API? Does this mean that JRebel only works with Java 5?
JRebel was (and still is) compatible with Java 1.4, so it does not strictly rely on the availability of the Instrumentation API. However in JRebel 4.0 we take advantage of the Instrumentation API when it's available to reduce performance overhead and simplify many operations.
Completely new to this version is the ability for reloading EJB components on the fly or injecting new beans via the @EJB annotation. Better support for anonymous classes was also added. The number of JRebel plugins has increased in order to cover several popular frameworks including Seam 2.x
Finally an Eclipse plugin offers JRebel integration from within the IDE.