Saat ini saya sedang mengirim aplikasi Java desktop. Ini adalah aplikasi Java 5 Java / Swing tua yang lama dan sejauh ini semuanya bekerja dengan baik. Java 5 ditargetkan karena beberapa pengguna menggunakan versi OS X / komputer yang tidak pernah memiliki Java 6 (kami dapat segera mengangkat batasan ini dan beralih ke Java yang lebih baru dan hanya meninggalkan pengguna saya yang terjebak dengan Java 5).
Saya dengan cepat meningkatkan kecepatan dengan Clojure tetapi saya belum benar-benar melakukan banyak Clojure-to-Java dan Java-to-Clojure belum dan saya bertanya-tanya apakah itu realistis untuk mengirimkan aplikasi desktop Clojure daripada aplikasi Java ?
Aplikasi yang saya kirim saat ini sekitar 12 MB dengan semua .jar sehingga menambahkan Clojure tampaknya tidak terlalu menjadi masalah.
Rencana saya adalah meminta Clojure memanggil Java API: aplikasi saya sudah dibagi dalam beberapa toples independen.
Jika saya mengerti benar memanggil Clojure dari Jawa lebih sulit daripada memanggil kode Java dari Clojure yang mengapa saya pada dasarnya menulis ulang semua UI (bagian dari UI, mencampur komponen Swing dan BufferedImages buatan sendiri perlu ditulis ulang pula karena kenaikan tampilan retina), dan melakukan semua 'pengkabelan' dari Clojure.
Jadi itulah masalah yang saya hadapi: apakah realistis untuk mengirimkan aplikasi desktop Clojure? (Ini sepertinya tidak terlalu luas tetapi kemudian mengirimkan aplikasi desktop Java biasa juga tidak umum dan saya tetap melakukannya)
Secara teknis, apa yang perlu dilakukan? (dibandingkan dengan pengiriman aplikasi Java)
sumber
Jawaban:
Ya, itu sepenuhnya realistis - tidak banyak orang yang tampaknya melakukannya tetapi saya pikir itu hanya masalah waktu saja (Clojure benar-benar baru!)
Saya pribadi telah menulis game sumber terbuka di Clojure yang berjalan sebagai aplikasi Swing (https://github.com/mikera/ironclad) jadi punya beberapa pengalaman untuk dibagikan yang mungkin berguna.
main(...)
metode yang meluncurkan bagian Clojure dari kode. Antara lain, ini berarti Anda tidak perlu mengkompilasi kode Clojure Anda. Contoh kode di sini: https://github.com/mikera/ironclad/blob/master/src/main/java/ic/IronClad.javasrc/main/resources
dan dimuat / dikompilasi pada saat runtime.sumber