Clojure is a dynamic language for the Java Virtual Machine, with a compelling combination of features:Clojure is elegant. Clojure's clean, careful design lets you write programs that get right to the essence of a problem, without a lot of clutter and ceremony.Clojure is Lisp reloaded. Clojure has the power inherent in Lisp, but is not constrained by the history of Lisp.Clojure is a functional language. Data structures are immutable, and functions tend to be side-effect free. This makes it easier to write correct programs, and to compose large programs from smaller ones.Clojure is concurrent. Rather than error-prone locking, Clojure provides software transactional memory.Clojure embraces Java. Calling from Clojure to Java is direct, and goes through no translation layer.Clojure is fast. Wherever you need it, you can get the exact same performance that you could get from hand-written Java code.Many other languages offer some of these features, but the combination of them all makes Clojure sparkle. Programming Clojure shows you why these features are so important, and how you can use Clojure to build powerful programs quickly.