Clojure is a dynamic programming language that targets the Java Virtual Machine.
It is designed to be a general-purpose language and is a compiled language - it compiles directly to JVM bytecode, yet remains completely dynamic.
Clojure is a dialect of Lisp, and shares with Lisp the code-as-data philosophy and a powerful macro system. Clojure is predominantly a functional programming language, and features a rich set of immutable, persistent data structures. When mutable state is needed, Clojure offers a software transactional memory system and reactive Agent system that ensure clean, correct, multithreaded designs.