I want to share my experiences with JRebel (http://www.zeroturnaround.com/jrebel/). If you need some neutral information about this product to ease development with J2EE / JEE applications and application servers, this information is for you! In the following I will tell you why JRebel exists, and why it is very impressive if you develope JEE (and especially J2EE 1.4) applications.
J2EE is NOT dead yet!
I really like JEE 5 and especially JEE 6. Some months ago, I enjoyed a live coding session of Adam Bien. Some days ago, he blogged "J2EE Is Dead - Completely Dead". Unfortunately, plenty of applications exist where J2EE 1.4 is still very alive! Probably, many of these applications will NOT be migrated to JEE 5 or even JEE 6. But developers still have to realize change requests and bugfixes.
Problems with JEE Application Servers
If you develop with WebSphere Application Server (WAS), no matter if it is version 5 / 6 / 6.1 / 7, deployment takes a very long time. Even changing a single line of code (e.g. to add a System.out.println) takes about 15 minutes in our project for publishing the changes, because you always have to do a build and redeployment. So, sometimes you have to wait 50 percent of your working time until WebSphere is ready again.
Other application servers have the same problem, although they are probably not as lame as WebSphere.
JEE 6 application servers are much faster, try out Glassfish 3. Re-Deployment just takes a few seconds. But most people will not work with JEE 6 yet, some like me even cannot use JEE 5. And I fear that WebSphere 8 (for JEE 6) will not be as performant as Glassfish 3. Thus, JRebel probably will have a right to exists also for JEE 6, but definitely is a must-have for J2EE 1.4!
What is JRebel?
JRebel is a product which promises to solve this problem of very long deployment times. You do not need to build and redeploy. You save your class, the IDE compiles the class, and you can see the changes within one second! As if you develope a Java SE application.
If you want to understand how it works technically (you do not need this knowledge to use the product), you can read a detailed explanation here: http://www.zeroturnaround.com/jrebel/faq/#How_does_jrebel_work (you do not need this knowledge to use the product).
Features of JRebel
JRebel supports all important application servers such as WebSphere, Weblogic, Tomcat, Glassfish and so on. Besides allowing simple changes such as adding methods, fields, classes or annotations, you can also change EJB interfaces, JSPs, JSF and JPA code, XML config files and so on. Spring, Hibernate, JBoss Seam and some further Web-Frameworks are also supported. So, JRebel is very powerful.
IDE-Plugins are available for all major Java IDEs: Eclipse, NetBeans and IntelliJ IDEA.
All features of JRebel are described and compared to other solutions at http://www.zeroturnaround.com/jrebel/comparison/
Does JRebel really work?
I can confirm you: JRebel works as promised! You can save plenty of development time. I would never ever think about developing a J2EE / JEE project without JRebel (especially if WebSphere is the used application server).
I was very sceptical before trying out JRebel by myself. My colleagues also did not trust the promises at the product’s website, so I had to give them a live demo
You even can debug using JRebel. So you can start the application server in debugging mode, make some changes, set a breakpoint, and see the changes immediately.
The standard edition costs 189 USD for one year per developer. Support costs additional 50 USD. The support is fantastic! You get very quick responses with detailed explanations.
Open source and Scala projects do not have to pay any license costs.
It is excellent value for money! You can save a lot of time by investing this little amount of money.
The installation is very easy (if you have done it once). JRebel is installed (and also removed) within 10 minutes. You just have to add a JAR file and add one line of code to the configuration of the application server.
My main criticism: The documentation is bad. Someone of the JRebel guys should extend and improve the documentation!
There are some pitfalls which I had to resolve using JRebel with WAS 6.1:
- The application server runtimes do not use the same JVM version of the IBM compiler as RAD, although it is one installation! You get very strange error messages, so it is tough to deduce this problem.
- Some important information about JRebel is logged to the file “native_stderr.log” at /RAD/SDP70/runtimes/base_v61/profiles/Application/logs/server1/
e.g. this file informs you if JRebel is activated succesfully or what problems occur. I did not find this information anywhere within the FAQ. The JRebel support gave me this hint.
- I had some problems while debugging with JRebel and WebSpehre / RAD. Sometimes, the IDE did not show the line where the debugger is at the moment. This problem happened sometimes, but not too frequently. I restarted the application server, then the debugger worked correctly again.
Besides the bad documentation, JRebel is a very good product. You can save a lot of money using it. The licences costs are very low. So, if you develop a J2EE / JEE application, you should always use this great product. Thus, I recommend: Try it out by yourself, a 30 day trial is available to test JRebel. It will only take some minutes to see the potential…
If you have made other experiences with JRebel, let me know...
Kai Wähner (Twitter: @KaiWaehner)