Clojure is a dynamic, functional, homoiconic, open source programming language that targets the Java Virtual Machine (and the CLR, and JavaScript). It is a dialect of the Lisp programming language. Clojure programs are composed of expressions and written in terms of abstractions.
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. Every feature supported by Clojure is supported at runtime.
This programming language provides easy access to the Java frameworks, with optional type hints and type inference, to ensure that calls to Java can avoid reflection.
Clojure is designed to be a hosted language, sharing the JVM type system, GC, threads etc.
Clojure requires only Java 1.5 or greater, plus the Clojure JAR file itself.
Features include:
- Compiles all functions to JVM bytecode.
- Tight Java integration: By compiling into JVM Byte code, Clojure applications can be easily packaged and deployed to JVMs and application servers without added complexity. The language also provides macros which make it simple to use existing Java APIs. Clojure’s data structures all implement standard Java Interfaces, making it easy to run code implemented in Clojure from Java.
- Dynamic development with a read-eval-print loop. Compiling ahead-of-time is possible, but not required. Clojure has arbitrary precision integers, strings, ratios, doubles, characters, symbols, keywords.
- Functions as first-class objects.
- Emphasis on recursion and higher-order functions instead of side-effect-based looping.
- Lazy sequences.
- Provides a rich set of immutable, persistent data structures (including hashmaps, sets and lists).
- Atoms provide a way to manage shared, synchronous, independent state.
- Concurrent programming through software transactional memory, an agent system, and a dynamic var system.
- Full support for JVM primitive values by default, allowing high performance, idiomatic Clojure code for numeric applications.
- Multimethods to allow dynamic dispatch on the types and values of any set of arguments (cf. the usual object-oriented polymorphism which dispatches on the type of what is effectively the first method argument).
- Sophisticated macro system which allows the compiler to be extended by user code.
Website: clojure.org
Support: Documentation
Developer: Rich Hickey
License: Eclipse Public License 1.0
Return to New Programming Languages
| Explore Linux | |
|---|---|
| Best Free and Open Source Software - A huge collection of recommended free and open source software covering every major category. | |
| In-depth Linux Software Reviews - Detailed assessments of Linux software covering features, usability and overall quality. | |
| The Big List of Active Linux Distros - An extensive collection of actively developed Linux distributions. | |
| Open Source Alternatives - Alternatives to software and services from Google, Microsoft, Apple, Adobe, IBM, Autodesk, Oracle and others. | |
| Essential Linux System Tools - Indispensable utilities for monitoring, maintaining and managing Linux systems. | |
| Linux Productivity Tools - Useful utilities for improving productivity and streamlining everyday tasks. | |
| Alternatives to Popular CLI Tools - Modern alternatives to familiar command-line utilities supplied with Linux systems. | |
| Awesome Free Linux Game Tools - Tools, utilities and companion software that improve gaming on Linux. | |
| Machine Learning on Linux - Machine learning and deep learning software, self-hosted applications and practical tools. | |
| Saving Money with Linux - Practical ways to reduce electricity consumption and lower computing costs with Linux. | |
| Linux Candy - Fun, entertaining and sometimes delightfully quirky software from the lighter side of Linux. | |

Please read our Comment Policy before commenting.