Нелегко задать простой ответ на этот ответ, потому что сначала необходимо определить разницу между библиотекой Clojure и библиотекой Java . (Тем более, что Clojure - это библиотека Java:))
Хорошо, давайте начнем с предпосылки, что библиотека Clojure - это любая библиотека, написанная на Clojure, и просто игнорируем код Java в самой реализации Clojure. Но что, если данная библиотека использует некоторую зависимость от Java, как, например, одна из библиотек Apache Commons? Будет ли он по-прежнему считаться Clojure, а не библиотекой Java?
Мой собственный критерий (и я полагаю, что и ваш) различие между ними заключается в том, предоставляет ли библиотека интерфейс в стиле Clojure с пространствами имен, функциями, последовательностями или интерфейс в стиле Java с классами, методами и коллекции.
Почти тривиально писать оболочки Clojure вокруг таких библиотек Java. По моему опыту, это очень полезно, если вы хотите вписать функциональность библиотеки в общий функциональный дизайн вашего приложения. Простой пример будет, если вы хотите map
метод Java против последовательности. Вы можете использовать специальную анонимную функцию для переноса вызова метода или именованную функцию из слоя-оболочки. Если вы делаете такие вещи очень часто, второй подход может быть более подходящим, по крайней мере, для наиболее часто используемых методов.
Итак, мой вывод заключается в том, что любая библиотека Java должна легко конвертировать в библиотеку Clojure. Все, что нужно, это написать обертку для нее.
Другой вывод заключается в том, что это может не понадобиться вообще. Если все, что вам нужно, это вызвать метод, вы все равно можете просто вызвать метод и избежать всей космонавтики архитектуры. :)