In general, all Clojure code is compiled to bytecode in classes. If running from source, this is done dynamically and loaded using a custom classloader. Optionally you can compile code "ahead of time" and produce .class files on disk using the compile
function.
Some simple top-level expressions evaluated at the repl are simply evaluated without compiling and loading classes.