December 21, 2009

JRebel 2.2.1 Released

Filed under: news — Jevgeni Kabanov @ 4:37 pm

We’re glad to announce the JRebel 2.2.1 release. It is a maintenance release incorporating all the bugfixes that have made since the 2.2 release. You can see the details from the full changelog.

Pick up the new version at our download page.

December 15, 2009

JRebel 2.2 “Easy Peasy” Released

Filed under: news — Jevgeni Kabanov @ 2:22 pm

It is our great pleasure to announce JRebel 2.2, the “Easy Peasy” release. In this release we have focused heavily on ease of installation, configuration and use. The main new feature is the semi-automatic installer and configuration wizard, that makes installing JRebel and configuring your application a snap. We have also included a configuration utility that supplements all those funky system properties with a centralized GUI configuration. For those who prefers the Zen of the Command Line we have compiled a comprehensive reference manual about all things JRebel included in the distribution.

We also invested heavily into making the JRebel IDE integration as seamless as possible. The new NetBeans plugin now supports debugging when the JRebel agent is enabled. The numerous updates to Eclipse and IntelliJ IDEA plugins allow you to run the application with JRebel effortlessly from inside the IDE.

Take a look at the full changelog, download now or check out the screenshots:

jrebel-config-wizard Picture 2 Picture 3

launch cartoon

December 10, 2009

JRebel 2.2 Feature Preview Available

Filed under: news — Jevgeni Kabanov @ 3:40 pm

Next week we plan to release the 2.2 version of JRebel. The two main features of this release are:

  • The new semi-automatic installer and configuration wizard, that make installing and configuring JRebel a snap.
  • New or updated releases of IDE plugins for Eclipse, IntelliJ and NetBeans (both 6.5 and 6.7).

While we’re finishing the polish on the release itself, we have already uploaded the IDE plugins to their respective repositories. Just hit “Update” and you can start using them right away. We have also uploaded a preview version of the Installer-enabled JRebel distribution, which you can now get from Downloads.

Reloading Java Classes 201: How do ClassLoader leaks happen?

Filed under: blog — Jevgeni Kabanov @ 5:48 am

Other Articles in the Reloading Java Classes Series

(more…)

November 13, 2009

JRebel 2.1.1 Released

Filed under: news — Jevgeni Kabanov @ 3:16 pm

We’re glad to announce the JRebel 2.1.1 release. It is a maintenance release incorporating all the bugfixes that have accumulated during the past month or so. It also includes the new Log4J plugin, support for Jetty 7 and GlassFish v3 Preview (apparently Prelude and Preview differ a lot, go figure).

Changes include:

  • Support for Jetty 7
  • Preliminary support for GlassFish v3 Preview
  • Log4J plugin now reloads changes to log configuration on-the-fly, contributed by Julien Richard.
  • Fixed an issue causing the annotations on constructors to disappear after class reload.
  • Fixed an issue with Google Web Toolkit client side classes in hosted mode
  • Fixed an issue with FileNotFoundException thrown by JavaRebelResourceServlet
  • Fixed an issue with ClassCastException when defining web services in web.xml
  • Fixed several issues in the Wicket plugin.

You can pick up the new version on our download page, by choosing the standard download.

November 10, 2009

Reloading Java Classes 101: Objects, Classes and ClassLoaders

Filed under: blog — Jevgeni Kabanov @ 3:17 pm

Welcome to Turnaround article series from ZeroTurnaround.

In this article we will review how to reload a Java class using a dynamic classloader. To get there we’ll see how objects, classes and classloaders are tied to each other and the process required to make changes. We begin with a bird’s eye view of the problem, explains the reloading process, and then proceed to a specific example to illustrate typical problems and solutions. Other articles in the series include:

(more…)

October 27, 2009

Screencast: Speedy Struts 1 and Struts2 with JRebel

Filed under: blog — Sander Sõnajalg @ 1:23 pm

On September 30th, 2009, Apache released Struts 2.1.8 for general availability.  Though we couldn’t find much info on the differences between 2.1.6 and 2.1.8, here’s what Musachy Barroso said about “Why web developers should choose Struts 2″, in his interview on InfoQ.

“Struts 2 is probably the most loosely-coupled framework available. Out of the box, many features are usable with little or no customization and it is easy to learn. The same knowledge can then be applied to add plugins to override default behaviors. The loose coupling also allows business logic to be written with no knowledge of the existence of Struts. Despite this, Struts scales up really well and is currently powering some very high-traffic sites.”

We like the evolution of Struts, and wanted to do our part to help minimize the time between writing Struts code & seeing the changes, so with the release of JRebel 2.1, we are proud to present extended support for Struts 1.x & 2.x, with full support for reloading action mappings. Combined with JRebel’s previously released features (skipping redeploys by reloading changes to Java classes in the running application, and skipping builds by mapping the project workspace to the deployed WARs or EARs), JRebel is now an even more potent time-saving tool for Struts 1 and Struts 2 users.

See the screencast for a demonstration of coding with Struts 2 and JRebel:

If you’re not familiar with JRebel, catch up in under 3 mins with this screencast, which shows other JRebel features, including support for the Spring framework (or take a look at the feature list):

We’re glad to see the success of the Struts 2 framework, and happy to support the community.  Did you know that on average there are more than 2 million project downloads of Struts per month, since March of 2008?

October 21, 2009

The Build Tool Report: Turnaround Times using Ant, Maven, Eclipse, IntelliJ, and NetBeans

Filed under: blog, news — Tags: , , , , , , — Jevgeni Kabanov @ 11:30 am

Some time ago we ran a survey asking a few questions about the build process, specifically the tools that are used to do incremental builds and how much time those builds take. We had over 600 responses, so now it’s time to count the results.

This is the first time that we’ve published results on the incremental build process, so the information is more likely to serve as a guide than an authoritative information source. That being said, the information is still quite interesting, and if it serves to start a conversation that improves the process of even one team, then we’re proud to have helped out. If you haven’t answered the 3-question survey yet, take two minutes and go for it – and do let your community know about it – as more answers trickle in we’ll update this post with the new data. If you’d like to play with the results on your own we‘ve provided all the data and our calculations in a handy Excel sheet that you can download here.

(more…)

October 15, 2009

Announcing JRebel 3.0 M1 — The Next Generation

Filed under: news — Jevgeni Kabanov @ 2:14 pm

While finishing the polish on the 2.1 release we were also preparing for you a glance at what’s to come in the longer term. Without further ado, allow us to introduce the JRebel 3.0 M1 release features:

  • Support for adding static fields and changing enums. Previously when you added a static field to your class you’d see a discouraging warning in the console and get an exception when trying to access the field. Now JRebel will happily print “Reinitialized class” and your application will continue working as if nothing happened. To top it off you can also now change Java 1.5 enums in any way you like and they should just continue working. This feature is still a tad experimental, so please help us out to smooth it out!
  • Full JSP <scriptlet> support. Now when you change your Java code (e.g. add a method) it can be immediately used in the Java code snippets in the JSP.
  • 25%-30% less memory use. It is not uncommon to need a lot of PermGen heap with JRebel enabled. Now we optimized the memory use and will continue to drive it down in the upcoming milestones.
  • No more classloader leaks. JRebel no longer holds any references to class loaders a second longer than necessary. This should help to get less OutOfMemoryErrors on application redeploys with JRebel enabled.

There are also quite a few changes to the API that will enabled more features in the upcoming milestones.

Note that since we don’t charge for upgrades, it is not our goal to put all the cool features in the 3.0 release. Rather we’ll continue to add features to the 2.x branch (expect at least a 2.2 release this year) and only put large or risky changes that require a lot of testing or feedback in the 3.x branch.

Download the release.

October 14, 2009

ZeroTurnaround’s OSS projects overview

Filed under: blog, news — Toomas Römer @ 10:08 am

This post serves as a quick introduction to the open source projects that we develop and host on our site. They are either accompanying QA software, integrations with different frameworks or our IDE plugins. All described projects are hosted at http://repos.zeroturnaround.com/svn/.

If you’ve written plugins that you would like us to host just contact support@zeroturnaround.com. If you have patches to current projects just let us know and we’ll take a look and try to get them integrated.

jr-autotest/

JRebel testing is not that simple. For example, say we want to test changing a protected field to a private static. We need to have a test that first compiles a source file with a protected field and then lets a JVM load it. Then we need to make the changes to the source, compile and make JRebel reload it. Then asserts follow :) It sounds easier said than done. This sub project hosts all the tests and a groovy script to control them all.

jr-servlettest/

See jr-autotest and think of servlets. These tests run on arbitary containers and besides testing JRebel functionality it tests the integration with different containers. The control script this time makes requests to URLs and compares the output to some predefined output.

jr-autotest-hudsonplugin/

Legacy. A year ago we were so dumb that we wrote a Hudson plugin that was able to read the output of the ANT script of the autotest and produce nice red/green buttons about which test failed/passed. Now this is quite obsolete as we have moved on to JUnit output instead.

jr-ide-support/

idea-old-plugin – source code for the Intellij debugger plugin for IDEA ver < 8
idea-plugin – our current up-to date plugin for IDEA 8+
eclipse – all eclipse plugins/features
nb-6.5-plugin – NetBeans 6.5 specific plugin
nb-6.7-plugin – NetBeans 6.7 specific plugin

jr-javassist/

We bundle javassist to javarebel.jar. This is so that we don’t have it in the classpath as an external dependency. This project generates a javassist archive for us where all the classes are in packages with a predefined prefix.

jr-root/

Here are all our integrations with different frameworks and our plugin architecture. You can see the whole list under trunk.

As of this post, we have integrations with:

Older Posts »

Our Customers Say

“For the price, and for how easy it is to get installed and running in a developers’ environment, using JRebel is pretty close to a no-brainer.”

Jim Lesko, GT Nexus

Recent Tweets

RT @djspiewak: JRebel is my most valuable productivity-boosting tool by a *wide* margin. Anyone doing server-side development needs it! 1 hr ago

RT @davetownsend: i may have said this before but #jrebel just frigging rules for developing #spring apps. FTW! 1 day ago

5 Article Series on Reloading Java Classes http://www.theserverside.com/news/thread.tss?thread_id=59657 4 days ago

Olark Livehelp