Dynamic Code Evolution VM

One of the arguments dynamic language enthusiasts bring up as a negative attribute against the java ecosystem is that during development they do not have to stop and restart their servers when a code change is made.

While this statement isn't totally true, I do agree that it is a pain to always restart your application server just to see a simple change in any environment.

In the Java world, there are several cases when you really do not have to restart the application server to make a simple change.

Most notably would be making a change to a JSP page. JSPs are normally dynamically compiled.

So making a change to them and refreshing the page just updates the page with your changes. Another big help is hot code replacement. Hot code replacement can be found in IDEs like eclipse and IntelliJ IDEA.

Java programs run on the JVM. The JVM deals with class loaders. Java classes used in an application are loaded into the JVM by a class loader.

If a change is made to any class while the JVM is running, the JVM needs to be restarted(classes need to be reloaded) in order for the changes to be seen.

This is why "DYNA-ENTHUSIASTS"( I made that up!) scream "MY LANGUAGE IS COOLER THAN YOURS". This is also what hot code replacement is suppose to solve.

Hot code replacement does not always solve this issue elegantly. In fact, if you make a change to a static reference while debugging in eclipse, the hot code functionality looses its mind and tells you to restart your JVM.

A lot of developers debugging their code in eclipse could testify to this. Technology is all about problem solving and making things easier.So of course, someone should step up to the plate and solve this problem. There comes JRebel.

jrebel

"JRebel is a small JVM-plugin that makes it possible for Java developers to instantly see any code change made to an app without redeploying. JRebel lets you see code changes instantly, versioning classes and resources individually and updating one at a time instead of as a lump application redeploy. When developers make a change to any class or resource in their IDE, the change is immediately reflected in the deployed application, skipping the build and redeploy phases and preventing an average of 5.25 work weeks per year in redeploys!"

That quote is from the JRebel website. JRebel seems to be a good tool according to all the praises I see on their website. I myself have not had the privilege to try out JRebel so I cannot say much about it. I also have not tried out JRebel because it is not free.

Luckily for me, there is an open source project out there doing what JRebel is doing. The project is called Dynamic code evolution VM (virtual machine). I have actually tried out this tool and strongly recommend the project to other java developers.

I use it on a 32-bit windows JVM (XP machine). My wish list is to be able to use this tool with my 64-bit MAC JVM.

I believe that this project would only increase the growth of the JVM and take it to an even higher level ... I hope you find this tool as useful as I did...