Atualmente, estou enviando um aplicativo Java para desktop. É um aplicativo Java 5 Java / Swing simples e antigo e até agora tudo funcionou bem. O Java 5 foi direcionado porque alguns usuários estavam na versão / computadores do OS X que nunca devem ter o Java 6 (podemos levantar essa limitação em breve e mudar para um Java mais recente e simplesmente abandonar meus usuários presos ao Java 5).
Estou rapidamente me familiarizando com o Clojure, mas ainda não fiz muito Clojure para Java e Java para Clojure e fiquei imaginando se seria realista enviar um aplicativo de desktop Clojure em vez de um aplicativo Java ?
Atualmente, o aplicativo que estou enviando tem cerca de 12 MB com todo o .jar, portanto, adicionar o Clojure não parece ser um problema.
Meu plano seria fazer com que o Clojure chamasse APIs Java: meu aplicativo já está dividido em vários frascos independentes.
Se eu entendi que chamar corretamente o Clojure a partir de Java é mais difícil do que chamar o código Java a partir do Clojure, é por isso que basicamente reescrevi toda a interface do usuário (parte da interface do usuário), misturar componentes Swing e BufferedImages automáticos precisam ser reescritos de qualquer maneira devido ao aumento retina) e faça toda a fiação da Clojure.
Esse é o problema que estou enfrentando: é realista enviar um aplicativo de desktop Clojure? (certamente não parece muito difundido, mas o envio de aplicativos simples para desktops em Java também não é tão comum, e estou fazendo assim mesmo)
Tecnicamente, o que precisaria ser feito? (comparado ao envio de um aplicativo Java)
fonte
Respostas:
Sim, é totalmente realista - poucas pessoas parecem estar fazendo isso ainda, mas acho que é apenas uma questão de tempo (Clojure é bem novo, afinal!)
Eu escrevi pessoalmente um jogo de código-fonte aberto no Clojure, que é executado como um aplicativo Swing (https://github.com/mikera/ironclad), então tenho algumas experiências para compartilhar que podem ser úteis.
main(...)
método que inicie a parte do código Clojure. Entre outras coisas, isso significa que você não precisará compilar seu código Clojure. Exemplo de código aqui: https://github.com/mikera/ironclad/blob/master/src/main/java/ic/IronClad.javasrc/main/resources
e carregado / compilado em tempo de execução.fonte