Clojure is a language implemented in Java and also in Clojure itself. The language implementation (compiler and runtime) is distributed as a jar file (see below) and runs on the Java virtual machine (“JVM”). Your Clojure programs will be compiled by the Clojure implementation into JVM bytecode and then run on the JVM (see below for explanations of Java-related terms).

The compiling and running just described is all neatly handled for you by a standard tool, described later.

Clojure comes with a “REPL” — a “read/eval/print loop”. This is an interactive prompt (like the Python prompt) where you can type in and run some Clojure code and see what it does and what it returns (evaluates to).

Clojure source code filenames end in “.clj”.

For more about what Clojure is, see

1 Some Info About Java

Since Clojure runs on the JVM, makes use of the Java platform, and can interoperate so easily with Java, it helps to know a little about Java.

Note: The rest of this section is just optional extra background info.

Here are explanations of some terms and also a few other morsels of useful background information:

Regarding the Java language itself, it’s is your garden-variety, statically-typed, imperative, semi-colon curly-braces object-oriented language. You’ve got classes, and can instantiate objects from those classes. Functions (Java calls them “methods”) can be defined only inside classes. There are functions you can call via a class (where the class just acts as a namespace for the function), and there are functions you can call on behalf of an object (which often modifies its state).

There are many Java tutorials out there.

Personally, for learning Java, I like the “Core Java” book by Horstmann & Cornell.