Ответ 1
Во-первых, 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-command) отличаются только тем, что операционная система знает, как найти свои функции main
для вас (ну, эквивалент Java classpath работает совсем по-другому, но основная понятия одинаковы). С помощью JVM-программ вам нужно использовать исполняемый файл, совместимый с ОС (java
/java.exe
), чтобы отключить его.