tags:

views:

1317

answers:

6

Is there an open source (and ideally free software) alternative to ZeroTurnaround's class reloading tool Java Rebel?

+1  A: 

I don't believe there is, and if there is I doubt it will have the same feature set and app server support that JavaRebel does. I believe JavaRebel uses the Javassist library, you could look at that and try to write something that meets your needs yourself? Depending on what features you want this may be doable and worth your effort. If not try Java Rebel, last time I looked the pricing was very reasonable, and they are a small operation doing great work.

EDIT:

The closest I have found is the ClassGhost library. It does not have the functionality of JRebel. It looks like it may just be a gui over the JVM hotswap ability. But it may meet your current needs, and you would have the source to modify if you wanted to write more functionality. Take a look at the site.

broschb
broschb: Thanks for the Javassist pointer. The price is not the issue, see my reply to Oscar above. I want my entire tool chain to be open source, and ideally free software.
knorv
Just to be clear: Javassist has no connection to the core functionality of JRebel. It's only used to make integration with third-party servers and frameworks easier.
Jevgeni Kabanov
+10  A: 

I'm one of the JRebel developers and I can assure you that no open source alternatives exist at the moment (you're free to take this with a grain of salt). The best solutions available are described here on our site: http://www.zeroturnaround.com/jrebel/faq/#Arent%5Fthere%5Ffreeopen%5Fsource%5Fexisting

There is also some work that Oracle did (FastSwap), which hasn't been updated in a while, isn't free and isn't too stable. Finally there's been some work done recently to improve the HotSwap functionality in the da Vinci project, but it is unlikely to make it into the OpenJDK any time soon due to issues with security, performance and garbage collection.

JRebel also now does much more than just reload classes. It also bypasses the build phase by mapping the project directly to the application. There is also a lot of integration we do with frameworks like Spring to allow reloading the configuration. I understand your wish to have a fully open source toolchain, but consider also that JRebel is not an essential part of the chain and you can remove it at any moment without having any dependencies in either application or the environment.

Jevgeni Kabanov
Jevgeni: Thanks for your answer! Let me be clear that I think JavaRebel is a very clever piece of engineering. Impressive work!
knorv
+1  A: 

Seam hot deployment share some functionality with JavaRebel. But this solution works only for Seam and JBoss AS :(

cetnar
+2  A: 

You should have a look at the playframework. It has a similar screencast that shows how to develop a simple web application with database connectivity in minutes step by step without redeploy.

The documentation says:

There are no compilation, packaging or deployment phases while working with play. However play implements two distinct environments: DEV mode during the development phase and PROD mode when the application is deployed.

tangens
+1  A: 

Tapestry does automatic class reloading, but I don't believe the whole setup is at the same level as JRebel.

But maybe you can use it as the base of an OSS version.

Rui Pacheco