В настоящее время я поставляю настольное Java-приложение. Это простое старое приложение Java 5 Java / Swing, и до сих пор все работало хорошо. Java 5 была нацелена, потому что некоторые пользователи были на версии / компьютерах OS X, которые никогда не будут иметь Java 6 (мы можем скоро снять это ограничение и переключиться на более новую Java и просто отказаться от моих пользователей, застрявших в Java 5).
Я быстро набираю скорость с Clojure, но я еще не сделал много Clojure-to-Java и Java-to-Clojure, и мне было интересно, реалистично ли поставить настольное приложение Clojure вместо приложения Java ?
Приложение, которое я отправляю, в настоящее время занимает около 12 МБ со всеми файлами .jar, поэтому добавление Clojure не является большой проблемой.
Мой план состоял бы в том, чтобы Clojure вызывал Java API: мое приложение уже разделено на несколько независимых jar-файлов.
Если я правильно понимаю, вызывать Clojure из Java сложнее, чем вызывать Java-код из Clojure, поэтому я бы в основном переписал весь пользовательский интерфейс (часть пользовательского интерфейса, в любом случае необходимо переписать компоненты Swing и самодельные BufferedImages из-за повышения сетчатки дисплея), и сделайте всю «проводку» от Clojure.
Вот проблема, с которой я сталкиваюсь: реалистично ли поставить настольное приложение Clojure? (это, конечно, не очень широко распространено, но тогда поставки простых настольных Java-приложений тоже не распространены, и я все равно делаю это)
Технически, что нужно сделать? (по сравнению с доставкой приложения Java)
источник
Ответы:
Да, это абсолютно реалистично - кажется, что пока еще немногие этим занимаются, но я думаю, что это только вопрос времени (в конце концов, Clojure довольно новый!)
Я лично написал игру с открытым исходным кодом на Clojure, которая запускается как приложение Swing (https://github.com/mikera/ironclad), поэтому у меня есть кое-какой опыт, которым можно поделиться.
main(...)
методом, который запускает часть кода Clojure. Среди прочего, это означает, что вам не нужно будет AOT компилировать код Clojure. Пример кода здесь: https://github.com/mikera/ironclad/blob/master/src/main/java/ic/IronClad.javasrc/main/resources
и загрузить / скомпилировать во время выполнения.источник