Blog

Writen by one of the first JavaRebel users, Nathan Hamblen, this JavaWorld article talks about building applications with a text editor, Buildr, Jetty and JavaRebel. Bringing examples from Wicket and Scala applications it is worth a read whether you plan to develop without an IDE or not.

JavaRebel 1.0.1 includes support for GlassFish v2 or later and some minor fixes to reflection support.

In addition to the final release we are proud to present the first ZeroTurnaround animated short. It tells a story of an enthusiastic Java programmer who found JavaRebel and how it changed him forever. And you may just know that guy :)

We would also like to apologize to the DZone community, which saw the said short mislabeled as pure entertainment. Yes, this is a promotional animation and it should have been labeled as such and we are very sorry for doing just the opposite. Regrettably DZone does not provide a way to change title or description after submission.


We are proud to announce the immediate availability of the JavaRebel 1.0 Final Release! The final release incorporates all of the improvements of the previous releases and fixes a number of issues reported by our users. To celebrate the final release we have also made this cartoon.

JavaRebel eliminates the need for application server redeployment by instantly reloading changes to Java classes. It can also be used for standalone Java applications to pick up changes without restarting. For the impatient: watch the demonstration screencast (~5 mins) and download!

With the release of the first release candidate the final release of JavaRebel is approaching fast. Although there will be no new features in the final release we will also release an Eclipse plugin that integrates JavaRebel directly with WTP. You can expect the final release before mid-December.

Let us remind you that the early adopter discount will only be valid until the final release. After it is over the price of a JavaRevel 1 seat license will be 150$ with volume discounts adjusted accordingly. Hurry up with your JavaRebel purchases!

We have finished working on JavaRebel features for the 1.0 release and will now focus on fixing the last issues. The first release candidate includes the following changes as compared to the previous milestone:

  • Reflection support. Methods added to classes will be properly visible via the Reflection API under Java 5+.
  • Eclipse PDE support. Plugin code can now be reloaded using JavaRebel. See this post and screencast for details. Instructions are in the installation manual.
  • IntelliJ IDEA plugin development support. Plugin code can now be reloaded using JavaRebel. Instructions are in the installation manual.
  • Java EE container support. We now support Orion and Caucho Resin under Java 5. Instructions are in the installation manual.
  • Custom classloader support. If JavaRebel doesn’t officially support your container or you use a custom classloader there is a good chance it will work now. See this article for details.

Update: the Eclipse support has made it to the final 1.0 release of JavaRebel and development snapshots are not needed to use JavaRebel for Eclipse plugin development.

JavaRebel’s latest development snapshot includes support for the Eclipse Platform. The speedup that we can see with JEE servers when using JavaRebel applies also to other containers. In this case it is Eclipse. Developers can launch their plugins and as they change the source code they can see the results without restarting the new Eclipse instance.

We’ve prepared a small screencast (~5 min) that shows JavaRebel in action speeding up Eclipse plugin development.

The Camtasia Studio video content presented here requires JavaScript to be enabled and the latest version of the Macromedia Flash Player. If you are you using a browser with JavaScript disabled please enable it now. Otherwise, please update your version of the free Flash Player by downloading here.

Configuring JavaRebel for Eclipse is as easy as adding VM arguments -noverify and -javaagent:path/to/javarebel.jar and launch as usual as a Eclipse Application Configuration.

Usually JSP is first translated to regular Java code and then compiled into a Java servlet. JSP Weaver eliminates the Java generation and compilation stage by interpreting the JSP files on-the-fly. This reduces the time taken to reload a JSP up to 50 times bringing it from seconds down to milliseconds.

We have launched the next milestone of the JSP interpreter JSP Weaver. This release brings you the long awaited JSP standard syntax support and includes several fixes. All the known limitations have been addressed we are getting ready to release the final version. Now JSP Weaver supports full JSP specification from 1.0 to 2.1. However we do not support Java 5 language changes like generics and enums in scriptlets at the moment.

We are glad to announce the immediate availability of JavaRebel 1.0 M3! Thanks to all the feedback we received from our users this release is greatly improved in terms of installation simplicity, compatibility, stability and performance.

Since previous version suffered from some problems that stopped our users from taking full advantage of JavaRebel we decided to restart the evaluation period with this release. So you are free to try JavaRebel for 14 days whether you have used the previous version or not.

JavaRebel 1.0 M3 features the following changes:

  • Simpler installation. Now to install JavaRebel on Java 5 you need only to add “-noverify -javaagent:javarebel.jar” to the command line.
  • Better performance. This especially concerns startup times and background CPU usage. Some users have reported 2-3 times faster application server startup with this version than with previous.
  • Improved compatibility. We have worked hard to make JavaRebel play well with others. Special thanks to Scala, Tapestry and Mule communities.
  • Expanded support for Java 1.4. We now support in addition to BEA Weblogic 8.x also Oracle OC4J 9.x, 10.x and Tomcat 4.x.
  • Numerous bugfixes. Thanks to your bug reports we have fixed a large number of problems with the previous version. This release should be considerably stabler and work out-of-the-box on all supported systems.

See changelog for details.

Quite a few of our users have contributed small pieces of code that test reloading of some parts of Java classes. Some of them have discovered genuine bugs and we are working on fixing them. However there was also some confusion that we want to clear up.

If you want to write a small test for JavaRebel you have to be aware of the two following things:

  • JavaRebel will not reload code of currently running method. All new invocations of the method (even concurrent ones) will get reloaded, but the code in a running method will not reload. This means that if you have a method with while (true) {/*body*/} the body will never reload since you never leave the method. This is not a restriction in any real application, but this does show up in the small tests.
  • The second issue is more particular to JavaRebel — if all running methods are of the same class they might not get reloaded (this does not always apply, but may compromise your test). This issue may come if you have only one class (e.g. Main) and try to change a method inside the same class.

The recommended way to test JavaRebel is to make a separate Launcher class with a while loop and call a method test() in another class (e.g. Test) with it. If you want to test concurrency make a separate class for threads (inner or anonymous will be enough).

Older Entries »

Join the Rebellion Facebook Twitter RSS feed