Извините за длинный пост, но этот форум всегда запрашивает варианты использования :-).Clojure REPL философия и утилиты
Я часто призываю писать служебные приложения (GUI и командную строку) для моей организации. Я чаще всего пишу их на Java и совсем недавно Scala.
«Философия» в Clojure (и других Lisp), кажется, сосредоточена вокруг REPL, и я должен согласиться с тем, что она создает приятную среду разработки, но я, очевидно, не могу производить утилиты, требующие от пользователей «Install Clojure and Clojure-contrib, затем распакуйте утилиту в каталог на вашем жестком диске, запустите Clojure из командной строки, используя следующий путь к классам ... ». Пользователям все равно, что утилита написана на Clojure. Они просто хотят указать и нажать или, самое большее, введите «java -jar Utility.jar -?» в командной строке.
Мой вопрос сосредотачивается вокруг компиляции и разделения приложения на множество пространств имен/файлов.
Я знаю, что метод main
должен быть в файле Clojure, который включает в себя (gen-class...)
команду (или положение о команде ns
:gen-class
). Я делаю то же самое для дополнительных файлов Clojure, или их следует оставить в качестве исходного кода, который упакован в JAR и загружен файлом main
? Как насчет тестирования дополнительных файлов из REPL во время разработки?
Я использую leiningen, cake и maven для создания автономных JAR (содержащих распакованные файлы clojure.jar, clojure-contrib.jar и commons-cli.jar), но до сих пор я писал свои код в том же файле, что и метод main
.
Не можете сделать веб-приложение. У нас есть серверы по всей стране - за пределами брандмауэра, и мне нужно управлять коммунальными услугами там, а также в нашей штаб-квартире. Время запуска никогда не было проблемой для приложений Java; большинство из них - утилиты DB, которые делают много вещей с запросами и т. д. - БД обычно является узким местом. Спасибо за ответ. – Ralph
@Ralph: Хорошо, я добавил строку, разделяющую верхнюю часть, которая по-прежнему актуальна для вашего вопроса, из нижней части, которая не применима в вашем случае. –