Java adalah salah satu bahasa pemrograman pilihan saya. Saya selalu mengalami masalah meskipun mendistribusikan aplikasi saya ke pengguna akhir.
Memberi pengguna JAR tidak selalu semudah yang saya inginkan dan menggunakan Java WebStart mengharuskan saya memelihara server web.
Apa cara terbaik untuk mendistribusikan aplikasi Java? Bagaimana jika aplikasi Java perlu menginstal artefak ke komputer pengguna? Apakah ada sistem penginstalan / pengemasan Java yang bagus di luar sana?
java
installer
jar
software-distribution
Laplie Anderson
sumber
sumber
Jawaban:
Ada berbagai solusi, tergantung pada kebutuhan distribusi Anda.
Gunakan saja stoples. Ini mengasumsikan bahwa pengguna telah menginstal versi java yang benar, jika tidak, pengguna akan mendapatkan pengecualian "versi format file kelas". Ini bagus untuk distribusi internal di dalam perusahaan.
Gunakan launch4j dan penginstal seperti NSIS. Ini memberi Anda lebih banyak kontrol, meskipun pengguna masih dapat melakukan hal-hal bodoh seperti membatalkan instalasi java runtime. Ini mungkin pendekatan yang paling populer, dan yang saat ini saya gunakan.
Gunakan Webstart. Ini juga mengasumsikan bahwa pengguna telah menginstal versi java yang benar, tetapi jauh lebih mudah untuk memulainya. Pengalaman saya adalah bahwa ini baik-baik saja untuk lingkungan intranet yang dikontrol dengan ketat, tetapi menjadi masalah dengan penerapan yang lebih besar karena memiliki beberapa kegagalan yang aneh. Mungkin menjadi lebih baik dengan teknologi plug-in baru di Java 1.7.
Gunakan kompiler kode asli seperti Excelsior JET dan distribusikan sebagai file yang dapat dieksekusi, atau bungkus dalam penginstal. Mahal, dan umumnya mengikat Anda ke versi java yang sedikit lebih lama, dan ada beberapa masalah dengan pemuatan kelas dinamis, tetapi sangat efektif untuk penerapan skala besar di mana Anda perlu meminimalkan kerepotan dukungan Anda.
sumber
penginstal lanjutan memudahkan untuk mengemas aplikasi java sebagai windows executable, dan ini cukup fleksibel dalam cara Anda mengaturnya. Saya telah menemukan bahwa untuk mendistribusikan aplikasi java ke klien windows, ini adalah cara termudah untuk melakukannya.
sumber
JSmooth adalah program sederhana yang mengambil jar Anda dan membungkusnya dalam file executable windows standar. Muncul dengan GUI sederhana yang memungkinkan Anda untuk mengkonfigurasi JVM yang diperlukan, menggabungkannya dengan aplikasi atau memberikan opsi untuk mengunduhnya jika belum diinstal. Anda dapat mengirim file exe apa adanya atau zip dengan kemungkinan dependensi (atau biarkan program mendownload dependensi tambahan dari internet saat startup). Ini juga gratis, seperti dalam bir dan pidato, yang mungkin (atau mungkin tidak) merupakan hal yang baik.
sumber
Itu tergantung pada seberapa canggih pengguna target Anda. Dalam kebanyakan kasus, Anda ingin mengisolasi mereka dari fakta bahwa Anda menjalankan aplikasi berbasis Java. Beri mereka penginstal asli yang melakukan hal yang benar (buat entri menu mulai, peluncur, daftar dengan program tambah / hapus, dll.) Dan sudah menggabungkan runtime Java (sehingga pengguna tidak perlu mengetahui atau memedulikannya). Saya ingin menyarankan alat instalasi lintas platform kami, BitRock InstallBuilder. Meskipun tidak berbasis Java, ini biasanya digunakan untuk memaketkan aplikasi Java. Ini dapat dengan mudah diintegrasikan dengan Ant dan Anda dapat membangun penginstal Windows dari Unix / Linux / Mac dan sebaliknya. Karena pemasang yang dihasilkan adalah asli, mereka tidak memerlukan langkah ekstraksi mandiri atau JRE untuk sudah ada di sistem target, yang berarti pemasang yang lebih kecil dan tidak membuat Anda pusing. Saya juga ingin menyebutkan bahwa kami memiliki lisensi gratis untuk proyek sumber terbuka
sumber
file yang dapat dieksekusi adalah yang terbaik tetapi mereka adalah platform terbatas yaitu gunakan gcj: http://gcc.gnu.org/java/ untuk linux untuk menghasilkan file yang dapat dieksekusi dan gunakan launch4j: http://launch4j.sourceforge.net/ untuk menghasilkan windows yang dapat dieksekusi. Untuk mengemas di linux Anda dapat menggunakan rpm atau deb packager. Untuk win32 coba http://en.wikipedia.org/wiki/Nullsoft_Scriptable_Install_System
sumber
Jika ini adalah aplikasi pengguna akhir yang memiliki GUI, Anda harus mengabaikan bahasa tempat Anda menulis program (Java) dan menggunakan penginstal asli untuk setiap platform yang Anda pilih. Orang-orang Mac menginginkan .dmg dan di windows a .msi atau penginstal .exe adalah cara yang tepat. Di Windows, saya lebih suka NSIS dari NullSoft hanya karena kurang disukai daripada InstallShield atau InstallAnywhere. Di OSX Anda dapat mengandalkan JVM yang sudah ada. Di Windows, Anda harus memeriksa dan menginstalnya jika perlu. Orang Linux tidak akan menjalankan aplikasi Java GUI, dan sedikit yang akan tahu apa yang harus dilakukan dengan file .jar yang dapat dieksekusi.
sumber
Meskipun saya sendiri belum pernah menggunakan NSIS (Nullsoft Scriptable Installer System), ada skrip penginstalan yang akan memeriksa apakah JRE yang diperlukan telah diinstal pada sistem target atau tidak.
Banyak contoh skrip tersedia dari Contoh Kode dan halaman Pemasang Dunia Nyata , seperti:
(Harap perhatikan bahwa saya belum benar-benar menggunakan skrip apa pun, jadi tolong jangan menganggapnya sebagai dukungan.)
sumber
Saya membutuhkan cara untuk mengemas proyek saya dan ketergantungannya ke dalam satu file jar.
Saya menemukan apa yang saya butuhkan dengan menggunakan plugin Maven2 Assembly : plugin Maven2 Assembly
Ini tampaknya menduplikasi fungsionalitas one-jar , tetapi tidak memerlukan konfigurasi tambahan untuk menjalankannya.
sumber
Untuk aplikasi Java sederhana saya suka menggunakan Jar. Sangat mudah untuk mendistribusikan satu file yang pengguna cukup klik (Windows), atau
IMHO, jar adalah cara yang harus ditempuh ketika kesederhanaan adalah persyaratan utama.
sumber
Saya mengembangkan aplikasi eclipse RCP. Biasanya untuk memulai aplikasi gerhana, peluncur yang dapat dieksekusi disertakan. Saya menyertakan mesin virtual java di dalam folder aplikasi di sub direktori / jre untuk memastikan bahwa versi java yang benar akan digunakan.
Kemudian kami mengemas dengan Inno Setup untuk instalasi pada mesin pengguna.
sumber
Dalam pengalaman saya (dari mengevaluasi sejumlah opsi ), install4j adalah solusi yang bagus. Ini membuat installer asli untuk platform apa pun, dan secara khusus diarahkan untuk menginstal aplikasi Java. Untuk detailnya, lihat " Fitur " di situsnya.
install4j adalah alat komersial. Terutama jika kebutuhan Anda relatif sederhana (hanya mendistribusikan aplikasi dan menginstal beberapa artefak), banyak pilihan yang baik lainnya ada, termasuk yang gratis (seperti izPack atau telah disebutkan Lauch4j ). Tapi Anda meminta cara terbaik , dan sepengetahuan saya install4j adalah salah satunya, terutama untuk mendistribusikan aplikasi Java (EE) yang lebih besar atau lebih rumit.
sumber
Jawaban terbaik tergantung pada platformnya. Untuk penerapan di Windows, saya mendapatkan hasil yang bagus menggunakan kombinasi one-jar dan launch4j . Butuh sedikit waktu untuk menyiapkan lingkungan build saya dengan benar (skrip semut, kebanyakan) tetapi sekarang cukup tidak menyakitkan.
sumber
Nah dari sudut pandang saya mekanisme distribusi yang unggul adalah dengan menggunakan sesuatu seperti ClickOnce , atau WebStart teknologi . Anda hanya menerapkan versi ke server dan itu secara otomatis ke klien saat versi dirilis. Juga platform Eclipse RCP berisi UpdateManager yang melakukan apa yang dilakukan WebStart, tetapi juga lebih banyak lagi.
Karena saya menggunakan Maven2 untuk membangun, penerapannya sangat mudah: salin jar yang dibangun ke lokasi di server, perbarui file jnlp jika perlu dan Anda selesai.
sumber
installanywhere bagus tapi mahal - saya belum menemukan yang gratis bagus
sumber
Saya akan zip file jar bersama dengan toples dependen lainnya, file konfigurasi dan dokumentasi bersama dengan run.bat / run.sh. Pengguna akhir harus dapat mengekstraknya ke lokasi mana pun dan mengedit run.bat jika diperlukan (Ini harus berjalan tanpa mengedit di sebagian besar kasus). Penginstal mungkin berguna jika Anda ingin membuat entri di menu mulai, desktop, baki sistem, dll.
Sebagai pengguna, saya lebih suka unzip dan menjalankan jenis instalasi (mohon jangan masukkan menu start). Namun Orang-orang di luar industri TI mungkin memiliki preferensi yang berbeda. Jadi jika aplikasi sebagian besar ditargetkan untuk pengembang rute zip-run.bat dan aplikasi untuk masyarakat umum dapat diinstal menggunakan penginstal.
sumber