Rationale for using Clojure
Here are some reasons why you might like to use Clojure:
- elegant, mostly-minimal syntax (expressions in balanced parentheses, brackets, & braces)
- Clojure programs run very quickly (the JVM is highly optimized).
- The language itself is fairly simple and practical.
- powerful language features (ex., macros, protocols, etc.)
- excellent concurrency support
- easy interoperability with Java, providing access to the Java standard libraries and other Java libs as well (no wrapping required)
- cross-platform (runs wherever Java is available)
- sharp, active, and helpful community
- It’s a modern well-thought-out language, and it’s a lot of fun to use.
See also Rich Hickey’s rationale.
Some potential drawbacks to using Clojure:
- Clojure’s license (the EPL), which is also often used for many libraries in the Clojure ecosystem, is not GPL-compatible.
- slow program start-up time (on my desktop, ≅ 1s)
- Error messages often leave something to be desired (long stacktraces).
- accessing native C libs may require a little elbow grease, and you’re generally instead referred to Java-(semi-)equivalents
- Reliance on the Java/JVM ecosystem — a drawback if this is something you’d prefer to avoid. (Though, as noted, there are other Clojure implementations.)