Programming Clojure
Find out why Clojure is Java.next
- Clojure provides clean, fast access to all Java libraries
- Clojure provides all the low-ceremony goodness you know and love from dynamic languages
- Clojure includes Lisp's signature feature: Treating code as data through macros.
- Clojure's emphasis on immutability and support for software transactional memory make it a viable option for taking advantage of massively parallel hardware.
Clojure is a dynamic programming 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 not constrained by the history of Lisp.
- Clojure is a functional language. Data structures are immutable, and most functions are side-effect free. This makes it easier to write correct programs, and to compose large programs from smaller ones.
- Clojure simplifies concurrent programming. Of course, Java itself has pretty good concurrency support, but there is wide agreement that lock-based concurrency is difficult to use correctly. Clojure provides alternatives to lock-based concurrency: software transactional memory, agents, and dynamic variables.
- Clojure embraces Java. Calling from Clojure to Java is direct, and goes through no translation layer.
- Unlike many popular dynamic languages, Clojure is fast. Wherever you need it, you can get the exact same performance that you could get from hand-written Java code.
About Aaron Bedra
Aaron Bedra is a Senior Engineer at DRW, where he works at the intersection trading and technology. He has served as a Chief Security Officer, Chief Technology Officer, and Principal Engineer/Architect. He has worked professionally on programming languages, most notably Clojure and ClojureScript. Aaron is the creator of Repsheet, an open source threat intelligence toolkit. He is the co-author of Programming Clojure, 2nd and 3rd Edition and a contributor to Functional Programming: A PragPub Anthology.
More About Aaron »