it-swarm-id.com

Apa cara terbaik untuk mendistribusikan Java aplikasi?

Java adalah salah satu bahasa pemrograman pilihan saya. Saya selalu mengalami masalah meskipun mendistribusikan aplikasi saya ke pengguna akhir.

Memberi pengguna JAR tidak selalu ramah pengguna seperti 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 yang baik Java sistem instalasi/pengemasan di luar sana?

113
Laplie Anderson

Ada berbagai solusi, tergantung pada persyaratan distribusi Anda.

  1. Cukup gunakan toples. Ini mengasumsikan bahwa pengguna memiliki versi Java yang benar terinstal, jika tidak, pengguna akan mendapatkan pengecualian "versi format file-file". Ini bagus untuk distribusi internal di dalam perusahaan.

  2. Gunakan launch4j dan penginstal seperti NSIS. Ini memberi Anda lebih banyak kontrol, meskipun pengguna masih bisa melakukan hal-hal bodoh seperti menghapus instalasi Java runtime. Ini mungkin pendekatan yang paling populer, dan apa yang saya gunakan saat ini.

  3. Gunakan Webstart. Ini juga mengasumsikan bahwa pengguna telah menginstal versi Java yang benar, tetapi jauh lebih mudah untuk memulai. Pengalaman saya adalah bahwa ini baik untuk lingkungan intranet yang dikontrol ketat, tetapi menjadi sakit dengan penyebaran yang lebih besar karena memiliki beberapa kegagalan aneh. Mungkin lebih baik dengan teknologi plug-in baru di Java 1.7.

  4. Gunakan kompiler kode asli seperti Excelsior JET dan distribusikan sebagai yang dapat dieksekusi, atau bungkus dalam installer. Mahal, dan umumnya mengikat Anda ke versi Java yang sedikit lebih tua, dan ada beberapa kesulitan dengan pemuatan kelas yang dinamis, tetapi sangat efektif untuk penyebaran skala besar di mana Anda perlu meminimalkan kerepotan dukungan Anda.

86
Noel Grandin
9
Dmitry Leskov

installer tingkat lanjut membuatnya mudah untuk mengemas Java aplikasi sebagai windows executable, dan cukup fleksibel dalam cara Anda mengaturnya. Saya telah menemukan bahwa untuk mendistribusikan = Java aplikasi untuk klien windows, ini adalah cara termudah untuk pergi.

5
rustyshelf

JSmooth adalah program sederhana yang mengambil tabung Anda dan membungkusnya dalam file executable windows standar. Muncul dengan GUI sederhana yang memungkinkan Anda untuk mengkonfigurasi JVM yang diperlukan, bundel dengan aplikasi atau memberikan opsi untuk mengunduhnya jika belum diinstal. Anda dapat mengirim file exe apa adanya atau Zip itu dengan dependensi yang mungkin (atau biarkan program mengunduh dependensi tambahan dari internet saat startup). Ini juga gratis, seperti dalam bir dan bicara, yang mungkin (atau mungkin tidak) menjadi hal yang baik.

4
stian

Itu tergantung pada seberapa canggih pengguna target Anda. Dalam kebanyakan kasus, Anda ingin mengisolasinya dari kenyataan bahwa Anda menjalankan aplikasi berbasis Java. Berikan mereka dengan installer asli yang melakukan hal yang benar (buat entri menu mulai, peluncur, daftar dengan tambah/hapus program, dll.) Dan sudah bundel a Java runtime (jadi pengguna tidak perlu tahu atau peduli tentang hal itu) .saya ingin menyarankan alat instalasi lintas platform kami, BitRock InstallBuilder . Meskipun bukan berbasis Java, ini biasanya digunakan untuk mengemas Java aplikasi. Dapat dengan mudah diintegrasikan dengan Ant dan Anda dapat membangun installer Windows dari Unix/Linux/Mac dan sebaliknya. Karena installer yang dihasilkan adalah asli, mereka tidak memerlukan langkah ekstraksi sendiri atau JRE sudah ada dalam sistem target, yang berarti installer lebih kecil dan menghemat beberapa sakit kepala. Saya juga ingin menyebutkan kami memiliki lisensi gratis untuk proyek sumber terbuka

4
Daniel Lopez

file yang dapat dieksekusi adalah yang terbaik tetapi platformnya terbatas yaitu menggunakan gcj: http://gcc.gnu.org/Java/ untuk linux untuk menghasilkan executable dan menggunakan launch4j: http: // launch4j .sourceforge.net / untuk menghasilkan jendela yang dapat dieksekusi. Untuk mengemas di linux Anda bisa menggunakan paket rpm atau deb. Untuk win32, coba http://en.wikipedia.org/wiki/Nullsoft_Scriptable_Install_System

3
zurk

Jika itu adalah aplikasi pengguna akhir asli yang memiliki GUI, Anda harus mengabaikan bahasa tempat Anda menulis program (Java) dan menggunakan installer asli untuk setiap platform yang Anda pilih. Orang-orang Mac menginginkan .dmg dan pada windows instal .msi atau .exe adalah cara yang harus dilakukan. Pada Windows saya lebih suka NSIS dari NullSoft hanya karena itu kurang pantas daripada InstallShield atau InstallAnywhere. Pada OSX Anda dapat mengandalkan JVM yang sudah ada di sana. Pada Windows Anda harus memeriksa dan menginstalnya jika perlu. Orang Linux tidak akan menjalankan Java aplikasi GUI, dan beberapa yang akan tahu apa yang harus dilakukan dengan .jar yang dapat dieksekusi.

3
Ry4an Brase

Meskipun saya belum pernah menggunakan NSIS (Nullsoft Scriptable Installer System) sendiri, ada skrip instalasi yang akan memeriksa apakah JRE yang diperlukan diinstal pada target atau tidak. sistem.

Banyak skrip sampel tersedia dari halaman Contoh Kode dan Pemasang Dunia Nyata , seperti:

(Harap dicatat bahwa saya belum benar-benar menggunakan salah satu skrip, jadi tolong jangan menganggapnya sebagai dukungan.)

3
coobird

Saya membutuhkan cara untuk mengemas proyek saya dan dependensinya ke dalam satu file jar.

Saya menemukan apa yang saya butuhkan menggunakan plugin Majelis Maven2: plugin Majelis Maven2

Ini tampaknya menduplikasi fungsi satu-jar , tetapi tidak memerlukan konfigurasi tambahan untuk membuatnya berjalan.

2
David Carlson

Untuk aplikasi sederhana Java saya suka menggunakan Jar. Sangat mudah untuk mendistribusikan satu file yang bisa diklik pengguna (Windows), atau

Java -jar jarname.jar

IMHO, guci adalah cara untuk pergi ketika kesederhanaan adalah persyaratan utama.

1
jjnguy

Saya mengembangkan aplikasi Eclipse RCP. Biasanya untuk memulai aplikasi Eclipse, peluncur yang dapat dieksekusi disertakan. Saya menyertakan Java mesin virtual di dalam folder aplikasi di sub direktori/jre untuk memastikan bahwa hak Java akan digunakan.

Kemudian kami kemas dengan Inno Setup untuk instalasi pada mesin pengguna.

1
Mario Ortegón

Apa cara terbaik untuk mendistribusikan aplikasi Java? Bagaimana jika aplikasi Java perlu menginstal artefak ke komputer pengguna? Apakah ada sistem instalasi/pengemasan Java yang bagus di luar sana?

Dalam pengalaman saya (dari mengevaluasi sejumlah opsi ), install4j adalah solusi yang baik. Ini menciptakan installer asli untuk platform apa pun, dan secara khusus diarahkan untuk menginstal aplikasi Java. Untuk detailnya, lihat " Fitur " di situs webnya.

install4j adalah alat komersial. Terutama jika kebutuhan Anda relatif sederhana (hanya mendistribusikan aplikasi dan menginstal beberapa artefak), ada banyak pilihan bagus lainnya, termasuk yang gratis (seperti izPack atau yang sudah disebutkan Lauch4j ) . Tapi Anda meminta cara terbaik , dan setahu saya install4j adalah satu-satunya, terutama untuk mendistribusikan Java yang lebih besar atau lebih rumit (EE) ) aplikasi.

1
Jonik

Jawaban terbaik tergantung pada platform. Untuk penyebaran di Windows, saya mendapatkan hasil yang baik menggunakan kombinasi satu-jar dan launch4j . Memang butuh sedikit waktu untuk mengatur lingkungan build saya dengan benar (sebagian besar skrip semut) tapi sekarang cukup tanpa rasa sakit.

0
qualidafial

Dari sudut pandang saya, mekanisme distribusi yang unggul adalah menggunakan sesuatu seperti ClickOnce , atau WebStart teknologi. Anda hanya menyebarkan versi ke server dan itu akan secara otomatis ke klien ketika versi dirilis. Juga platform Eclipse RCP berisi UpdateManager yang melakukan apa yang dilakukan WebStart, tetapi juga banyak lagi.

Karena saya menggunakan Maven2 untuk membangun, penyebaran hanyalah sepotong kue: salin toples yang dibuat ke lokasi di server, perbarui file jnlp jika diperlukan dan Anda selesai.

0
Petr Macek

installanywhere bagus tapi mahal - saya belum menemukan (as) bagus gratis

0
Tom