Производительность запуска приложения Clojure

Я написал несколько небольших служебных приложений на Clojure, которые я компилирую в автономные исполняемые файлы JAR («uberjars») с помощью Maven и maven-shade-plugin. Эти uberjar-файлы содержат распакованные версии clojure.jar и других библиотек (например, commons-cli), от которых зависит приложение. Они удобны, потому что я могу отправить их клиенту, не требуя, чтобы он установил Clojure (у всех клиентов уже установлена ​​JRE).

Я обнаружил, что приложения Clojure запускаются через несколько секунд, тогда как аналогичные приложения, написанные на Java, запускаются на тех же машинах за доли секунды (например, время, чтобы показать сообщение об использовании).

Я подозреваю, что это потому, что Clojure на лету компилирует часть кода в библиотеки clojure.core, поскольку в файле clojure.jar есть исходный код (файлы .clj ).

Есть ли способ предварительно скомпилировать этот исходный код? Можно ли еще что-нибудь сделать для ускорения запуска? Я слышал жалобы от клиентов на то, сколько времени занимает запуск (и они не знают и не заботятся о том, написано ли приложение на Clojure, Java или Foobar).

19
задан Ralph 16 May 2011 в 11:43
поделиться