«You know Lisp* is great, I know Lisp is great, so why isn’t everyone using Lisp?» На этот вопрос пытается найти ответ автор статьи Why Isn’t Everyone Using Lisp?
Если коротко, то автор выделяет три причины:
- Отсутствие большого числа свободно доступных библиотек, особенно для web-a.
- Наличие нескольких диалектов лиспа, рассредотачивающих усилия разработчиков;
- Отсутствие нормальной IDE
Эта пессимистичная статья написана в 2006-м году, а уже через год ситуация круто изменилась с появлением Clojure. Язык Clojure – единственный действительно стоящий лисп на jvm. Понятно, что тесная интеграция Clojure и Java моментально решила все три проблемы непопулярности лиспа, и теперь, видимо, мы станем свидетелями, как Clojure завоюет галактику.
Первый шаг на пути к завоеванию – внедрение исходника на Clojure в исходники на Java. Лично я считаю, что построение слоя презентации с использованием библиотеки Swing проще делать именно на Java, особенно в такой IDE, как Netbeans.
Создадим проект Clojure в Leiningen:
- lein new ga
- добавить в project.clj строку :namespaces [ga.core], чтобы указать, какие неймспейсы компилировать.
Реализуем класс Processor. У меня он выглядит так:
Чтобы скомпилировать класс нужно выполнить команду lein compile. После компиляции в каталоге classes появится java-класс ga.core.Processor. Leiningen может собрать и jar-ку, если выполнить команду lein jar, но для ее использования нужно в classpath добавить jar-ки clojure и clojure-contrib. Ну а если и это лень, то команда lein uberjar скомпилирует файлы clojure, соберет все в jar-ку и добавить clojure.jar и clojure-contrib.jar туда же.
Очень удобно использовать этот uberjar прямо в проекте на java. Скомпилированный класс на Clojure доступен в Java как обычный java-класс; в нем доступно обычное автодополнение кода.
А вот так выглядит результат выполнения программы на Java, вызывающей код на Clojure.
Комментариев нет:
Отправить комментарий