Ich versende derzeit eine Desktop-Java-Anwendung. Es ist eine einfache alte Java 5 Java / Swing-App und bis jetzt hat alles gut funktioniert. Java 5 wurde ins Visier genommen, weil einige Benutzer auf OS X-Versionen / Computern arbeiteten, auf denen Java 6 nicht mehr verfügbar sein soll (möglicherweise heben wir diese Einschränkung bald auf, wechseln zu einem neueren Java und geben meine mit Java 5 verbundenen Benutzer einfach auf).
Ich mache mich schnell mit Clojure vertraut, habe aber noch nicht wirklich viel mit Clojure-to-Java und Java-to-Clojure gemacht, und ich habe mich gefragt, ob es realistisch ist, eine Clojure-Desktopanwendung anstelle einer Java-Anwendung zu liefern ?
Die von mir gelieferte Anwendung hat derzeit etwa 12 MB mit der gesamten .jar-Datei, sodass das Hinzufügen von Clojure kein allzu großes Problem darstellt.
Mein Plan wäre, dass Clojure Java-APIs aufruft: Meine Anwendung ist bereits in mehrere unabhängige Jars unterteilt.
Wenn ich verstehe, dass das Aufrufen von Clojure aus Java schwieriger ist als das Aufrufen von Java-Code aus Clojure. Deshalb würde ich im Grunde die gesamte Benutzeroberfläche neu schreiben (ein Teil der Benutzeroberfläche, das Mischen von Swing-Komponenten und selbst erstellten gepufferten Bildern muss aufgrund des Anstiegs ohnehin neu geschrieben werden) der Retina-Anzeige) und erledigen Sie die gesamte 'Verkabelung' von Clojure.
Das ist also das Problem, vor dem ich stehe: Ist es realistisch, eine Clojure-Desktop-App auszuliefern? (Es scheint sicherlich nicht sehr verbreitet zu sein, aber dann ist es auch nicht üblich, einfache Java-Desktop-Apps zu liefern, und ich mache es trotzdem.)
Was wäre technisch zu tun? (im Vergleich zum Versand einer Java-App)
quelle
Antworten:
Ja, es ist völlig realistisch - nicht viele Leute scheinen es noch zu tun, aber ich denke, das ist nur eine Frage der Zeit (Clojure ist schließlich ziemlich neu!)
Ich habe persönlich ein Open-Source-Spiel in Clojure geschrieben, das als Swing-Anwendung ausgeführt wird (https://github.com/mikera/ironclad).
main(...)
Methode schreiben , die den Clojure-Teil des Codes startet. Dies bedeutet unter anderem, dass Sie Ihren Clojure-Code nicht AOT kompilieren müssen. Beispielcode hier: https://github.com/mikera/ironclad/blob/master/src/main/java/ic/IronClad.javasrc/main/resources
und zur Laufzeit geladen / kompiliert werden.quelle