Lisp languages have ever since been the pedestal of my professional work. Clojure is the most modern approach of a Lisp, driven mostly by Rich Hickey who wanted a language that is

  • a Lisp
  • for functional programming
  • symbiotic with an established platform
  • and designed for concurrency.

Since, by his own words, he couldn’t find one that ticked off all of his wish list points he invented Clojure in 2006.

Clojure is a modern Lisp variant fully symbiotic with Java and runs on the JVM (there is a Version for the Erlang BEAM as well; though that’s to be considered highly experimental). Java can be used to call Clojure functions and Clojure can handle Java Objects with ease. Since it is a Lisp, Clojure is based on S-Expressions and is therefore meant to be transformed through meta programming.


  • In its core, Clojure is a very small and easy to learn language
  • Functional Idiomatic: strictly immutable and persistent data structures, higher order functions, side effect free programming, dynamic typing
  • Full interoperability with all JVM-languages like Java, Kotlin and Groovy
  • Support of hot reloading
  • Strong concurrency
  • Stable core and libraries
  • Very strong and stable community


  • Lisp languages are not commonly taught and therefore not well known by most software developers; so a system written in Clojure may need a higher onboarding effort for oncoming developers.
  • The dynamic type system might add hardness to software correctness proofing. A language like Haskell or Idris might be the better choice here.


  • A Lisp alternative to Clojure might be Common Lisp, but is has not nearly as many libraries and frameworks and lacks the strong community.
  • Another alternative language on the JVM might be Kotlin for its good built-in functional programming support.