Blog

JavaRebel reloads changes to Java classes on-the-fly without redeploy or restart including new methods and fields. It is a generic solution that works for standalone Java applications as well as application servers. For the impatient: watch the demonstration screencast (~5 mins) and download!

Ever since HotSwap support has been introduced in Java 1.4 people have been craving for more. As witnessed by this bug in the Sun database and numerous other discussions changing method bodies was just not enough. Dynamic languages like Ruby were quick enough to capitalize on this lacking touting Java EE development as slow and cumbersome.

As time passed by people have tried to work around the limitation by reloading classes along with their classloader. However since this requires also to reconstruct the object state it will only work in a controlled and limited environment — e.g. that of a web framework like RIFE, Tapestry 5 and so on.

Just as many others we were working on a workaround. However instead of limiting ourselves to the facilities provided by the Java platform we devised a whole new approach. Using bytecode modification and a little bit of magic JavaRebel extends the JVM with ability to reload almost arbitrary changes to classes on-the-fly. This includes adding and removing both methods and fields and the only forbidden changes are to ‘extends’ and ‘implements’ clauses. Since all the existing object instances are preserved the application and server can continue running and code changes are immediately visible in the application.

Watch the demonstration screencast (~5 mins), read the feature list or just download JavaRebel from ZeroTurnaround.com and give it a try. Disclaimer: JavaRebel is commercial software with a free trial for 14 days and developer seat cost at 99$.

ZeroTurnaround is a spinoff of Webmedia, Ltd. that focuses on Java developer productivity tools. Currently we are developing JavaRebel, a generic Java class reloader, and JSP Weaver, an instant JSP interpreter.

This release includes numerous improvements in features, compatibility and stability.

Thanks to all of the beta testers we managed to collect and fix a lot of issues and thus make the open beta possible. We now support six different application containers (not counting the versions) and two JVMs (Sun HotSpot and Bea JRockit). Of course these features are mostly transparent to the end-user as JavaRebel will just reload more changes in more environments, but that makes it all the more valuable.

This version is the first ever JavaRebel public release. It is open for beta testing, but since we will not announce it anywhere we hope for a limited initial response.

1.0 M1 supports full reload capabilities and most of the application servers.

JSP Weaver 1.0 M1 has been released, the first public release. With this release we are also launching http://www.jspweaver.com to start the licensing and evaluation of the product. Currently we will be supporting payments through http://www.moneybookers.com that supports all the major credit cards and domestic transfers in 30 countries.

Although we will provide full support of JSP standard in the final release, the first milestone does not yet include support for the non-XML old style JSP syntax and provides limited support for scriptlets. If you are using XML syntax for your JSPs have a go at it and be amazed by the speedup.

« Newer Entries

Join the Rebellion Facebook Twitter RSS feed