Во-первых, у Clojure нет переводчика.Весь код Clojure при загрузке компилируется в байт-код JVM.Я подчеркиваю этот момент, потому что это то, с чего начинается история отличной производительности Clojure.
Во-вторых, вы на самом деле не «устанавливаете» Clojure в том смысле, в каком вы работаете с Ruby.Clojure поставляется в виде файла jar
, который представляет собой просто набор классов Java;если вы поместите файл jar
в ваш путь к классам, вы можете запустить методы этих классов.Из этих классов clojure.main
предоставляет метод main
для запуска REPL и "сценариев".Таким образом, запуск REPL действительно запускает программу Java (то есть JVM);и запуск файла clj
равносилен запросу clojure.main
загрузить и запустить его (фактическая работа передается другим классам в реализации Clojure, но clojure.main
является точкой входа).Кстати, это точно так же, как и с JRuby.
Каждая программа JVM в конечном итоге является «просто скомпилированным файлом Java» или, возможно, набором таких файлов.Чтобы запустить его, вам нужно, чтобы экземпляр JVM загрузил его и запустил соответствующий метод main
.Обратите внимание, что программы на C (такие как ruby
-the-команда) отличаются только тем, что операционная система знает, как найти для вас их функции main
(ну, эквивалент Java-пути к классам тоже работает довольно по-разному, но основнойпонятия одинаковы).В программах JVM для запуска нужно использовать дружественный к ОС исполняемый файл (java
/ java.exe
).