In my talk at ClojureConj ’13, I encouraged those in attendance who had not used the Immutant application server for Clojure to take the time to become familiar. During the Q&A following my talk, Rich Hickey asked the question that is the title of this post, “What do you like about Immutant?” I believe that Rich’s intent was to offer up a softball, but I felt I’d clearly whiffed with my response, so I’m here to take another run at the question.

Immutant Advantages

Immutant has a number of advantages going for it, providing a Clojure wrapper over core JBoss AS services:

HornetQ message queue with a native Clojure API. Set up queues to facilitate loose coupling of application components. Support for running daemon tasks within your application. Specify a function in your Clojure application to be executed as a background daemon task. Scheduling. Use either cron- or at-style scheduling to have a function execute at regular intervals. Built-in clustering support. Caching. Use Infinispan to back your application’s cache. Web/HTTP daemon. Whether you’re using Ring or even Pedestal, Immutant has you covered for deploying your application. Those things are all great, but the goodness doesn’t end there. You’re almost certainly using Leiningen, and with the lein-immutant plugin, you’ll find that Immutant is simple to install and manage. And Immutant allows you to connect to your running application using nrepl, so you can interact with your application at runtime.

So I’ll say it once again: If you are not using Immutant to host Clojure applications on your server and can’t articulate a specific reason, you really do owe it to yourself to take a look at the fine work done by the Immutant team.