Я написал несколько небольших служебных приложений в Clojure, которые я компилирую в автономные исполняемые JAR файлы ( "uberjars" ), используя Maven и maven-shade-plugin. Эти uberjars содержат распакованные версии clojure.jar и других библиотек (т.е.: commons-cli), от которых зависит приложение. Они удобны, потому что я могу отправить их клиенту, не требуя, чтобы клиент установил Clojure (у всех клиентов уже установлен JRE).
Я обнаружил, что приложения Clojure занимают несколько секунд для запуска, тогда как аналогичные приложения, написанные на Java, начинаются в подсеансах на тех же машинах (время, например, для отображения сообщения об использовании).
Я подозреваю, что это потому, что Clojure находится на лету, компилируя некоторый код в библиотеке clojure.core, поскольку в файле clojure.jar есть исходный код (.clj
files).
Есть ли способ прекомпилировать этот исходный код? Можно ли сделать что-нибудь еще, чтобы ускорить запуск? Я слышал жалобы от клиентов о том, сколько времени занимает стартап (и они не знают или не заботятся о том, чтобы приложение было написано в Clojure или Java или Foobar).