Кажется, что для установки Clojure в каждом новом IDE я должен полностью переустановить его и создать копию его. И выполнение REPL кажется, что запускает программу Java.
Я происхожу из среды Ruby, где программы Ruby запущены ruby program.rb
, и так как рубин является программой, выполненной от одного места на файл (я знаю, что это подобно тому, как это работает на Java, Python, и т.д. также).
clojure "интерпретатор" является просто скомпилированным файлом Java, который берет .clj файл в качестве аргумента и действительно наполняет к нему?
Во-первых, в 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 работает по-другому, но основные концепции те же). Для программ JVM вам нужно использовать исполняемый файл, совместимый с ОС ( java
/ java.exe
), чтобы начать работу.