The Clojure Programming Language

What is Clojure?

Clojure appeared in 2007, which makes it still a relatively new programming language. Clojure is a dialect of LISP, modernized to include built-in support for numerous data types beyond lists.

Power, Simplicity, Efficiency

We find Clojure appealing in numerous ways:

  • Clojure is built on the JVM (Java virtual machine), enabling extensive straightforward integration with thousands of Java libraries and Java runtime environments.
  • Clojure data structures are immutable. The lack of mutability first sounds like a limitation; but it is actually an enormous benefit. Clojure’s data structures are persistent, which means they implement “change” very efficiently.
  • As a result of the above, Clojure code is often much easier to reason about than it might initially appear.
  • Startlingly, Clojure code often requires fewer parentheses than a direct translation of the same code to Java.
  • Yet Clojure also requires considerably less code to accomplish the same work compared to many other languages; Clojure is in a unusually high level language.
  • Therefore, Clojure makes efficient use of the most expensive resource, developer time.
  • Closure is also available in a variation which compiles JavaScript, making it possible to write a program entirely in Clojure, and share parts of it between server and client execution.

Caveats

Although Clojure is a general-purpose programming language, and can be used to write any program which could be written ] in (for example) Java, there are a few caveats:

  • Clojure is currently dependent on the Java virtual machine, which means these deployments involve running a Java virtual machine. For some organizations this is extremely easy, for others it is a burden that would prefer to avoid.
  • Some developers are very troubled by LISP-like syntax, even though Clojure code is not particularly parentheses-dense compared to other non-LISP languages.
  • Compared to mainstream languages, Clojure has been much smaller community, fewer libraries, fewer companies and developers which can be hired to work on it, and so on.

Clojure Development at Oasis Digital

Our Experience:

  • Oasis Digital developers have been using Clojure since approximately 2010.
  • We have used Clojure in our summer intern program.
  • We have delivered project prototypes in Clojure.
  • We have written and deployed utility projects, such as an Github->JIRA issue converter, in Clojure.
  • We use software in Clojure to process Oasis Digital time and billing data.

We recommend considering Clojure for certain types of projects:

  • Systems with complex logic, for which Clojure’s power and expressiveness are very beneficial.
  • Data services behind front-end web systems, suitable for local or cloud deployment.
  • Applications where concurrency in important – it is greatly facilitated by Clojure’s immutable data structures.

Our Clojure developers and consultants can take on an entire project, or assist with one already underway. Please contact us to discuss your Clojure project.

Published by

Kyle Cordes

The technical principal of Oasis Digital, Kyle Cordes drives our technology and architecture choices. Kyle gives presentations and talks at user groups and other events.