Clojure logo
A dynamic programming language that targets the Java Virtual Machine

What is Clojure?

Clojure is designed to be a general-purpose language, combining the approachability and interactive development of a scripting language with an efficient and robust infrastructure for multithreaded programming. Clojure 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 a tool in the Languages category of a tech stack.
Clojure is an open source tool with 7.8K GitHub stars and 1.2K GitHub forks. Here’s a link to Clojure's open source repository on GitHub

Who uses Clojure?

Companies
95 companies use Clojure in their tech stacks, including CircleCI, Groupon.com, and Soundcloud.

Developers
76 developers use Clojure.

Clojure Integrations

Java, Rollbar, Airbrake, ClojureScript, and AnyChart are some of the popular tools that integrate with Clojure. Here's a list of all 10 tools that integrate with Clojure.

Why developers like Clojure?

Here’s a list of reasons why companies and developers use Clojure
Clojure Reviews

Here are some stack decisions, common use cases and reviews by companies and developers who chose Clojure in their tech stack.

Jake Stein
Jake Stein
CEO at Stitch · | 15 upvotes · 22K views
atStitch
PostgreSQL
MySQL
Clojure

The majority of our Clojure microservices are simple web services that wrap a transactional database with CRUD operations and a little bit of business logic. We use both MySQL and PostgreSQL for transactional data persistence, having transitioned from the former to the latter for newer services to take advantage of the new features coming out of the Postgres community.

Most of our Clojure best practices can be summed up by the phrase "keep it simple." We avoid more complex web frameworks in favor of using the Ring library to build web service routes, and we prefer sending SQL directly to the JDBC library rather than using a complicated ORM or SQL DSL.

See more
Jake Stein
Jake Stein
CEO at Stitch · | 13 upvotes · 27.5K views
atStitch
Go
Clojure
JavaScript
Python
Kubernetes
AWS OpsWorks
Amazon EC2
Amazon Redshift
Amazon S3
Amazon RDS

Stitch is run entirely on AWS. All of our transactional databases are run with Amazon RDS, and we rely on Amazon S3 for data persistence in various stages of our pipeline. Our product integrates with Amazon Redshift as a data destination, and we also use Redshift as an internal data warehouse (powered by Stitch, of course).

The majority of our services run on stateless Amazon EC2 instances that are managed by AWS OpsWorks. We recently introduced Kubernetes into our infrastructure to run the scheduled jobs that execute Singer code to extract data from various sources. Although we tend to be wary of shiny new toys, Kubernetes has proven to be a good fit for this problem, and its stability, strong community and helpful tooling have made it easy for us to incorporate into our operations.

While we continue to be happy with Clojure for our internal services, we felt that its relatively narrow adoption could impede Singer's growth. We chose Python both because it is well suited to the task, and it seems to have reached critical mass among data engineers. All that being said, the Singer spec is language agnostic, and integrations and libraries have been developed in JavaScript, Go, and Clojure.

See more
C#
Java
JavaScript
ClojureScript
Clojure

I adopted Clojure and ClojureScript because:

  • it's 1 language, multiple platforms.
  • Simple syntax.
  • Designed to avoid unwanted side effects and bugs.
  • Immutable data-structures.
  • Compact code, very expressive.
  • Source code is data.
  • It has super-flexible macro.
  • Has metadata.
  • Interoperability with JavaScript, Java and C#.
See more
Łukasz Korecki
Łukasz Korecki
CTO & Co-founder at NomNom · | 6 upvotes · 4.6K views
atEnjoyHQ
Stackdriver
Clojure
StatsD
Google Compute Engine
collectd

We use collectd because of it's low footprint and great capabilities. We use it to monitor our Google Compute Engine machines. More interestingly we setup collectd as StatsD replacement - all our Clojure services push application-level metrics using our own metrics library and collectd pushes them to Stackdriver

See more
Łukasz Korecki
Łukasz Korecki
CTO & Co-founder at NomNom · | 5 upvotes · 2.4K views
atEnjoyHQ
GraalVM
Clojure

We use Clojure because of simplicity, performance and great fit to our problem domain: processing a lot of structured data. Based on my experience so far, Clojure is my go-to language for most tasks, except for when a fast startup time and a low resource footprint is required - basically CLI tools. That's slowly starting to change thanks to native-image and GraalVM

See more
Łukasz Korecki
Łukasz Korecki
CTO & Co-founder at NomNom · | 2 upvotes · 1.7K views
atEnjoyHQ
Clojure
Ruby

Ruby is the original language at Enjoy: the prototype was built with Ruby and some of its parts are running till this day (I'd say 80% of it is gone, ported to Clojure)

Outside of usual web-development tasks we use Ruby for our operations tooling.

See more

Clojure Alternatives & Comparisons

What are some alternatives to Clojure?
Scala
Scala is an acronym for “Scalable Language”. This means that Scala grows with you. You can play with it by typing one-line expressions and observing the results. But you can also rely on it for large mission critical systems, as many companies, including Twitter, LinkedIn, or Intel do. To some, Scala feels like a scripting language. Its syntax is concise and low ceremony; its types get out of the way because the compiler can infer them.
Haskell
Common Lisp
Lisp was originally created as a practical mathematical notation for computer programs, influenced by the notation of Alonzo Church's lambda calculus. It quickly became the favored programming language for artificial intelligence (AI) research. As one of the earliest programming languages, Lisp pioneered many ideas in computer science, including tree data structures, automatic storage management, dynamic typing, conditionals, higher-order functions, recursion, and the self-hosting compiler. [source: wikipedia]
Elixir
Elixir leverages the Erlang VM, known for running low-latency, distributed and fault-tolerant systems, while also being successfully used in web development and the embedded software domain.
Julia
Julia is a high-level, high-performance dynamic programming language for technical computing, with syntax that is familiar to users of other technical computing environments. It provides a sophisticated compiler, distributed parallel execution, numerical accuracy, and an extensive mathematical function library.
See all alternatives

Clojure's Stats