Question

I'd like to know which Java web application frameworks provides a "hot reload" capability, i.e., it allows to develop applications and has them redeployed on the server "almost instantly" (i.e., in less than a few seconds).

In the Java world, Play! does that out of the box, but what I'm looking for is a more exhaustive list.

Other examples that I'm aware of include: Nuxeo WebEngine, provided you're using Eclipse and the right plugin, or, in the Python world, Django and Pylons (when using the --reload option).

Was it helpful?

Solution

If someone might be interested after those months:

you can configure jetty so that it will hot deploy your compiled classes (eclipse + netbeans have the compile on save feature). With maven you can type mvn jetty:run after this config in your pom.xml:

        <plugin>
            <groupId>org.mortbay.jetty</groupId>
            <artifactId>maven-jetty-plugin</artifactId>
            <version>${jetty.version}</version>
            <configuration>
                <scanTargets>
                    <scanTarget>target/classes/</scanTarget>
                </scanTargets>
                <scanIntervalSeconds>1</scanIntervalSeconds>
            </configuration>
        </plugin>

This can be done without the use of jrebel and it means: do a change in the IDE + save it + go to your browser + F5 => you are done!

With that feature e.g. wicket or vaadin are hot deployable (but others too!)

OTHER TIPS

As far as I know, you can do hot reload with almost every java framework if using jrebel. Some frameworks have some kind of hot-deploy built in, as noted in other answers.

Tapestry 5 has hot deploy of single class/page changes, as does Seam.

I'm going to assume you want this for development purposes and not for production (as hot-reloading in production for Java == big time fail). Very rarely will I shill a commercial product, but if you want hot-reloading in Java to speed up development, what you really want is JRebel. It's hot reloading will be fairly effortless on your part.

NOTE: Whatever you do, do not use JRebel (or any hot deployment, for that matter) for your Java apps.

If you use POJOs, instead of EJBs, Seam framework should be in your list.

If you want to edit your Java (controller, model) code and refresh your browser to see changes immediately and without restarting your web server, you can use scooter. By the way, its built-in tool File Browser allows you to edit(compile) your code thru a browser. A browser may not be capable as an IDE, but it helps you remotely develop your app.

There's a new kid on the block, RelProxy, it is open source, is not so advanced like JRebel but it can be used to freely change a subset of your code in runtime and reload it with almost no performance penalty and no need of context reloading (no session lost) in development and production if you want.

When developing a struts(2) application in eclipse it's also automatically reloaded as soon as you save a file which compiles successfully.

However, sessions are lost on every reload which is a bit annoying..

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top