Clojure logo

Clojure

A dynamic programming language that targets the Java Virtual Machine
723
547
+ 1
887

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 8.1K GitHub stars and 1.3K GitHub forks. Here’s a link to Clojure's open source repository on GitHub

Who uses Clojure?

Companies
221 companies reportedly use Clojure in their tech stacks, including Nubank, CircleCI, and Groupon.com.

Developers
474 developers on StackShare have stated that they use Clojure.

Clojure Integrations

Java, Rollbar, Airbrake, Google Code Prettify, and ClojureScript are some of the popular tools that integrate with Clojure. Here's a list of all 16 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 · 61K views
atStitchStitch
Clojure
Clojure
MySQL
MySQL
PostgreSQL
PostgreSQL

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 · 100.5K views
atStitchStitch
Go
Go
Amazon RDS
Amazon RDS
Amazon S3
Amazon S3
Amazon Redshift
Amazon Redshift
Amazon EC2
Amazon EC2
AWS OpsWorks
AWS OpsWorks
Kubernetes
Kubernetes
Python
Python
JavaScript
JavaScript
Clojure
Clojure

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
Łukasz Korecki
Łukasz Korecki
CTO & Co-founder at EnjoyHQ · | 6 upvotes · 69.6K views
atEnjoyHQEnjoyHQ
collectd
collectd
Google Compute Engine
Google Compute Engine
StatsD
StatsD
Clojure
Clojure
Stackdriver
Stackdriver

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
Clojure
Clojure
ClojureScript
ClojureScript
JavaScript
JavaScript
Java
Java
C#
C#

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
Robert Zuber
Robert Zuber
CTO at CircleCI · | 6 upvotes · 9.9K views
atCircleCICircleCI
CircleCI
CircleCI
Clojure
Clojure
Rails
Rails

Most of CircleCI is written in Clojure and it has been this way since almost the beginning. Early development included Rails, but by the time that CircleCI was released to the public, it was written entirely in Clojure. Clojure is still at our platform’s core. It helps having a common language across much of our stack to allow for our engineers to move between layers of the stack without much overhead.

See more
Łukasz Korecki
Łukasz Korecki
CTO & Co-founder at EnjoyHQ · | 5 upvotes · 10.9K views
atEnjoyHQEnjoyHQ
Clojure
Clojure
GraalVM
GraalVM

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

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 Followers
547 developers follow Clojure to keep up with related blogs and decisions.
Vinicius Ferreira
ozimos
Morgan W
Vladimir Djuricic
vic bravo
Daniel Lombardo
Sergei Panskikh
saftacatalinmihai
Hoang  Phan
Marcelo Tozzi