Is there an open source (and ideally free software) alternative to ZeroTurnaround's class reloading tool Java Rebel?
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.
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.
Seam hot deployment share some functionality with JavaRebel. But this solution works only for Seam and JBoss AS :(
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.
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.