by ZeroTurnaround - Product Type: Component / Application / Java Class / Developer Application
JavaRebel by ZeroTurnaround
Faster Java development. JavaRebel is a JVM plugin (-javaagent) that enables reloading changes made to Java class files on-the-fly, saving developers the time that it takes to redeploy an application or perform a container restart. Typically the common JEE development cycle would be change, compile, deploy but with JavaRebel this cycle cuts out the deployment stage, so now you can change and compile. JavaRebel is a generic solution that works for Java EE and Java standalone applications.
JavaRebel monitors class file modification times and reloads classes when needed. This solution introduces Ruby like development to Java developers and saves the time spent waiting for the changes to propagate with redeployment or container restarts. JavaRebel: No more redeploys.
JavaRebel integrates with all the major JEE containers, JVM implementations and is completely IDE agnostic.
Developers can add/change/remove classes/methods/fields/annotations to Java classes without restarting the application. All state is preserved while reloading the changes as no classloaders are dropped and no serialization/deserialization happens in the background.
JavaRebel reloads individual class files by default (e.g. the ones in WEB-INF/classes. This makes it very comfortable to use incremental compilation available with modern IDEs and immediately see the changes in code in your application. JavaRebel can also reload classes bundled in JARs, WARs and EARs.
JavaRebel reloads classes lazily. This means that if you have (re)compiled a class file it will get reloaded once an instance of the class or the class itself is used - method call is made, field is accessed etc.
JavaRebel supported JVMs
Sun Java 1.4.x
Sun Java 5.x
Sun Java 6.x
JRockit JVM 8.1 sp6 or later
JRockit JVM 9.x 1.5.0_06 or later
IBM J9 1.4x
IBM J9 5.x
IBM J9 6.x
Apple MRJ 1.4.x
Apple MRJ 5.x
JavaRebel supported Containers:
IBM WebSphere
BEA Weblogic 8.x, 9.x, 10.x
GlassFish v2
Oracle OC4J 9.x, 10.x
Tomcat 4.x, 5.x, 6.x
JBoss 3.x, 4.x (on Java 5 or later)
Jetty 5.x, 6.x (on Java 5 or later)
Equinox OSGi (including Eclipse plugins)
IntelliJ IDEA plugins
JavaRebel works best with:
Java EE
Java standalone apps
Groovy
Spring
Struts2
Google Guice
Tapestry 4
JavaRebel Plugins
JavaRebel’s ability to reload classes and configuration changes is extensible - so you can add new functionality that is specific for your setup with ease. Plugins can be created using the JavaRebel SDK. The following are included in the JavaRebel installation so you do not need to download them individually.
JavaRebel Guice plugin - Supports discovering new Guice (implicit) components, adding/removing implicit setter and field dependencies and reconfiguring @Singleton’s.
JavaRebel Spring plugin - Takes advantage of JavaRebel class reloading to reload Spring dependencies. It supports registering new Spring beans, adding/removing dependencies and adding new MVC controllers and handler methods. These can be done using either XML configuration or annotations.
JavaRebel Struts2 plugin - Supports reconfiguring Struts actions when the action class changes.
JavaRebel Tapestry 4 plugin - Supports adding, changing, deleting Tapestry listeners without container restarts.
JavaRebel Stripes plugin - Adds reloading of Stripes ActionBeans.
Why buy JavaRebel?
One of the selling points of PHP, Ruby, Python and other interpreted languages is faster development. This is not based on the superiority of the language constructs, but instead on the minimal turnaround time in development environments.
JavaRebel aims to provide the same productivity in Java.
JavaRebel Deployment Process
The typical JEE developer spends their day in the development-compile-deploy-test cycle.
Sourcecode change <1 second
IDE compilation finished <1 second
Appserver deployment 20 seconds to 2 minutes
Caches reloaded <1 second
State deserialized <1 second
Browser refreshed <1 second
Total Time: 21 seconds to 2 minutes
As developers perform this cycle several times a day it is a significant financial loss for SWD departments, additional risks appear, developers typically get bored and either read a Slashdot article or grab another cup of coffee etc.
Faster Deployment with JavaRebel
As opposed to a usual deployment procedure JavaRebel does not spend any time on reinitializing the application and does not interrupt the developer routine. Instead it reloads the code for updated classes only and continues to run the application as is.
Sourcecode change <1 second
IDE compilation finished <1 second
JavaRebel code reloading <1 second
Total Time: 1 second
JavaRebel Benefits
Saves deployment cycle costs (could be hundreds of dollars per month)
Developer can program continuously, without breaking concentration
Allows rapid debugging sessions, seeing the results of small changes immediately
Decreases new developer’s training costs
ZeroTurnaround present the first milestone of the 2.0 release. It includes numerous changes, both visible and under the hood, with yet more to come in the next milestones.
The major themes of this release were:
Startup time and performance overhead.
ZeroTurnaraound have optimized or otherwise eliminated most of the bottlenecks that made the previous versions slow for some users. For this release they mainly focused on the runtime performance overhead, which has been decreased more than an order of magnitude and should be negligible in most cases. This should also directly affect the long startup time, as it was often caused by prolonged initialization routines in the previous versions.
Compatibility.
Compatibility was a strong concern for this release. ZeroTurnaraound have devoted a lot of time to tweak reflection and annotations support as well as integration with specific frameworks. ZeroTurnaraound also compiled an extensive test suite that should make JavaRebel work out of the box for most users.
Embedded plugins: Spring and Guice.
ZeroTurnaraound now support distributing the plugins along with JavaRebel instead of downloading and installing them separately. With this release ZeroTurnaraound have included Spring and Guice, so you should be able to load new components and dependencies without redeploying. More plugins will be included as they are stabilized or contributed.
Virtual classpath.
Another concern for many users is configuring the existing build/deploy environment to make use of JavaRebel class reloading. Not everyone can use the exploded development and -Drebel.dirs has limitations in support of new classes and resource propagation.
That’s why ZeroTurnaraound implemented something they call a virtual classpath. The -Drebel.path property behaves similar to the -Drebel.dirs, except that instead of directories you can add WARs directly, with EARs and more advanced options coming soon. Virtual classpath will also propagate new classes and update your resources, like HTML or JSP files. It does require some extra configuration which is explained in more detail in the configuration manual. NB! Virtual classpath is only supported on Tomcat, Jetty and WebLogic containers in this release.
Improved API.
Besides the embeddable plugins ZeroTurnaraound now support third-party instrumentation. This will allow ZeroTurnaraound to support e.g. AspectJ load-time weaving. Unfortunately the plugin itself didn’t make it into this release, but since the required infrastructure is now in place we can release it retroactively as a plugin.
What's changed in JavaRebel V1.2.2?
Fixed a NPE in Method.getParameterTypes()
Fixed Class.getMethods() not showing some of the added methods
Fixed a classloader deadlock
Added support for JBoss 5
Faster Java development.
PartNumbers: PC-518431-203357 518431-203357 PC-518431-203356 518431-203356
PurchaseOptions: JavaRebel 2.0 - Annual Subscription Licenses 1 Personal License, JavaRebel 2.0 - Annual Subscription Licenses 1 Corporate License (1 User License)
Resources: Read the JavaRebel End User License Agreement, Download the JavaRebel 2.0 evaluation - Expires after 30 days
Operating System for Deployment: Windows Server 2008, Windows Vista, Windows XP, Windows Server 2003, Windows ME, Windows 2000, Sun Solaris 10, Sun Solaris 9, Sun Solaris 8, Linux Kernel V2.6.x, Linux Kernel V2.4.x, Red Hat Enterprise Linux 5.x, Red Hat Enterprise Linux 4.x, Red Hat Enterprise Linux 3.x, Red Hat Enterprise Linux 2.x, RedHat Linux 9.x, RedHat Linux 8.x, RedHat Linux 7.x, SUSE Linux 10.x, SUSE Linux 9.x, SUSE Linux 8.x, FreeBSD 4.x, FreeBSD 5.x, FreeBSD 6.x, FreeBSD 7, FreeBSD 8
Architecture of Product: 32Bit
Product Type: Component, Application
Component Type: Java Class
Application Type: Developer Application
Built Using: Java 2 SDK (JDK 1.4)
Application Servers: Oracle WebLogic Server 10.0, Oracle WebLogic Server 9.0 (formerly BEA), Oracle WebLogic Server 8.1 (formerly BEA), Evermind Orion Application Server, IBM WebSphere (TM) Application Server 6.1, JBoss (TM) 4, Oracle Application Server 10g, Oracle Application Server 9i, Sun ONE Application Server 7.0, Jakarta Tomcat
Compatible Containers: Eclipse V3.3, Eclipse V3.1.2, Eclipse V3.0, IntelliJ IDEA 5
Keywords: ZeroTurnaround Zero Turnaround ZeroTurn around Turn Debugging debug debugs Testing Test Tests Productivity performance efficiency Development Author javarebel, javarebel 1,java rebel, zeroturnaround javarebel, as webmedia javarebel
Publisher
Primary Category
Related Categories