Actualmente estoy enviando una aplicación Java de escritorio. Es una aplicación simple Java 5 Java / Swing y hasta ahora todo funcionó bien. Java 5 fue apuntado porque algunos usuarios estaban en la versión OS X / computadoras que nunca tendrán Java 6 (podemos levantar esta limitación pronto y cambiar a una Java más nueva y simplemente abandonar a mis usuarios atrapados con Java 5).
Me estoy poniendo rápidamente al día con Clojure, pero todavía no he hecho mucho Clojure-to-Java y Java-to-Clojure y me preguntaba si era realista enviar una aplicación de escritorio Clojure en lugar de una aplicación Java ?
La aplicación que envío actualmente tiene aproximadamente 12 MB con todos los archivos .jar, por lo que agregar Clojure no parece ser un problema.
Mi plan sería que Clojure llamara a las API de Java: mi aplicación ya está dividida en varios frascos independientes.
Si entiendo correctamente, llamar a Clojure desde Java es más difícil que llamar a código Java desde Clojure, por lo que básicamente reescribiría toda la interfaz de usuario (parte de la interfaz de usuario, la mezcla de componentes Swing y BufferedImages de fabricación propia debe reescribirse de todos modos debido al aumento de pantalla retina), y haga todo el 'cableado' desde Clojure.
Entonces, ese es el problema al que me enfrento: ¿es realista enviar una aplicación de escritorio Clojure? (Ciertamente no parece estar muy extendido, pero enviar aplicaciones de escritorio Java simples tampoco es tan común y lo estoy haciendo de todos modos)
Técnicamente, ¿qué debería hacerse? (en comparación con el envío de una aplicación Java)
fuente
Respuestas:
Sí, es completamente realista: no parece que muchas personas lo estén haciendo todavía, pero creo que es solo cuestión de tiempo (¡Clojure es bastante nuevo después de todo!)
Personalmente, escribí un juego de código abierto en Clojure que se ejecuta como una aplicación Swing (https://github.com/mikera/ironclad), así que tengo algunas experiencias para compartir que pueden ser útiles.
main(...)
método que inicie la parte Clojure del código. Entre otras cosas, esto significa que no tendrá que compilar AOT su código Clojure. Código de ejemplo aquí: https://github.com/mikera/ironclad/blob/master/src/main/java/ic/IronClad.javasrc/main/resources
y cargar / compilar en tiempo de ejecución.fuente