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 blog entry is for you!
If you develop with 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.
JRebel is a product which promises to solve this problem. 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!
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
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/
I can confirm you: JRebel works as promised! You can save plenty of developtment 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. 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:
– 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. So I recommend: Try it out by yourself, a 30 day trial is available to test JRebel. It will only takes some minutes to see the potential…
If you have made other experiences with JRebel, let me know and post a comment.
Best regards,
Kai Wähner (Twitter: @KaiWaehner)
In the age of digitization, the concept of pricing is no longer fixed or manual.…
In the rapidly evolving landscape of intelligent traffic systems, innovative software provides real-time processing capabilities,…
In the fast-paced world of finance, the ability to prevent fraud in real-time is not…
Choosing between Apache Kafka, Azure Event Hubs, and Confluent Cloud for data streaming is critical…
In today's data-driven world, understanding data at rest versus data in motion is crucial for…
If you ask your favorite large language model, Microsoft Fabric appears to be the ultimate…
View Comments
Redeploying WebSphere takes so long. 20 minutes and more in our environment.
We also had problems with configuration. Your information about native_stderr.log was helpful. (should be documented by JRebel!)
Thank you !
15 minutes to add a println? Other app servers (JBoss) will have this same problem because it has nothing to do with the app server, it has to do with Java (statically typed), and how you built your app.
If your server takes 15 minutes to restart, that sounds like an application problem, not a app server problem. Maybe you need to look at dividing your app into manageable components (separate .jars) so you are not recompiling the world everytime you change one line. Take a look at how Spring is organized, for example. It isn't one giant jar, it's a bunch of components.
Furthermore, even without JRebel, there is something called hotswap that takes care of most changes (changing a method, etc), as the JRebel documentation will point out.
That said, JRebel expands on that to support config file changes, and adding methods, classes. However, it does require more memory and can be difficult to get working properly with a complex app (Spring/Hibernate/etc).
@Robert: It seems that you do not have any experience with a J2EE 1.4 application server. It is no problem of the app, but of the app server. And JRebel solves this problem. This is why I like this product!