Интеграция Clojure в существующий проект Java?

Как я могу взять большой существующий проект Java и начать добавлять модули Clojure? Например, в коде ниже, я хотел бы сделать следующие функции доступными в Java: состояние?, zip?, список состояния, список индекса. Эти два предиката возвратят булевскую переменную, но "методы get" возвратят массивы.

(def *states* (list "NJ" "NY" "CA"))
(def *zipcodes*  (list 12345 54343 98765))

(defn member [x sq]
  (if (seq sq)
    (if (= x (first sq))
      sq
      (recur x (rest sq)))))

(defn state? [aState]
  (not (= (member aState *states*) nil)))

(defn zip? [aZip]
  (not (= (member aZip *zipcodes*) nil)))

(defn state-list []
  *states*)

(defn zipcode-list []
  *zipcodes*)
;; ---------------
(state? "AA")
(state? "CA")
(zip? 11111)
(zip? 12345)
13
задан 2 February 2010 в 02:51
поделиться

2 ответа

Я бы скомпилировал его, используя leininge , а затем добавил файл jar в мой проект java в качестве депозита сборки. Вот отличное видео об использовании leiningen. , тогда вы бы вызывали его прямо из java. В Leiningen есть опция uberjar, которая накапливает clojure и все ваши зависимости clojure, поэтому вам нужно беспокоиться только об одном файле. Мне это нравится, потому что там меньше работы.

Более дружественным к java подходом было бы добавить задачу ant для ее создания вместе с java-проектом. Это лишь немного больше работы

для функций, которые должны возвращать правильные массивы java call to-array на них

, в отличие от многих популярных обращений «вызов clojure из java», вам не нужно вызывать среду выполнения clojure RT.

PS: мой любимый тэг: «Я хотел бы использовать библиотеку java под названием clojure». Я спросил Рича, он сказал, что это круто;)

11
ответ дан 2 December 2019 в 00:17
поделиться

Было проще предпринять существующее приложение Java и оберните его в Cljure, чем наоборот, потому что Java Interop от Clojure очень прост.

Как вы спрашиваете, как получить доступ к CLOJURE из Java, ответ заключается в том, что вам либо нужно загрузить код Clojure загрузки, либо вам нужно создать файлы классов Java, которые можно использовать из вашего проекта Java. Загрузка включает ссылку на банку Clojure и доступа к функции нагрузки для загрузки источника Clojure. Для генерации классов Java посмотрите на AOT (см. Пример на сайте).

2
ответ дан 2 December 2019 в 00:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: