Redeploy alternatif ke JRebel [ditutup]

190

JRebel memungkinkan kode yang baru dikompilasi untuk digunakan kembali tanpa me-restart aplikasi. Saya bertanya-tanya apakah ada alternatif (gratis?). The FAQ halaman menjawab pertanyaan ini, tapi saya yakin itu bias terhadap JRebel. Pertanyaan ini ditanyakan setahun yang lalu di situs ini, tetapi saya membawanya kembali untuk melihat apakah ada yang punya informasi baru.

Sebagai tambahan, saya sangat suka JRebel, tetapi jika ada alternatif gratis, saya bersedia untuk mencobanya.

Satu catatan tambahan, saya sedang mengerjakan proyek open source, dan mereka menawarkan lisensi gratis satu tahun kepada orang-orang yang dapat membuktikan mereka pada proyek open source. Itu sangat bagus untuk saya (www.kuali.org), tetapi saya tidak akan berada di proyek itu selamanya.

Jay
sumber
53
Pertanyaan bagus. Kami telah mencari alternatif untuk JRebel, karena departemen penjualan mereka sangat invasif. Kami tidak memiliki masalah membayar untuk produk seperti JRebel, tetapi tidak ketika mereka mengganggu pengembang dan departemen IT kami 24/7.
neu242
4
Ada alternatif untuk jRebel oleh ZeroTurnAround sendiri: versi gratis Jrebel untuk membuka proyek dan studi kasus ... my.jrebel.com
dellasavia
2
Saya tahu ini adalah balasan yang terlambat, Anda dapat melihat pada Spring Loaded -, yang merupakan agen JVM untuk memuat ulang perubahan file kelas saat JVM sedang berjalan. Itu mengubah kelas pada waktu buka untuk membuat mereka setuju untuk memuat ulang nanti. Tidak seperti 'penggantian kode panas' yang hanya memungkinkan perubahan sederhana setelah JVM berjalan (mis. Perubahan pada badan metode), Spring Loaded memungkinkan Anda untuk menambah / memodifikasi / menghapus metode / bidang / konstruktor dan banyak lagi ...
Simple-Solution
Eclipse debugger - mengganti kode langsung Anda secara instan.
user1050755
Coba posting ini di situs saudara, Stack Exchange Rekomendasi Perangkat Lunak .
Basil Bourque

Jawaban:

97

Lihatlah DCEVM , ini merupakan modifikasi dari HotSpot VM yang memungkinkan redefinisi kelas tanpa batas saat runtime. Anda dapat menambah / menghapus bidang dan metode dan mengubah tipe super kelas saat runtime. Fitur-fitur DCEVM dapat diintegrasikan dalam pembaruan Java di masa mendatang sebagai bagian dari JEP 159 .

Binari yang tersedia di situs asli terbatas pada Java 6u25 dan untuk versi awal Java 7. Proyek ini telah bercabang di Github dan mendukung versi terbaru Java 7 dan 8. Pemelihara menyediakan binari untuk 32/64 bit VM pada Windows / Linux. Dimulai dengan Java 11 proyek dipindahkan ke repositori GitHub baru dan sekarang juga menyediakan binari untuk OS X.

DCEVM dikemas untuk Debian dan Ubuntu, itu terintegrasi dengan OpenJDK dan dapat dipanggil dengan java -dcevm. Nama paket tergantung pada versi JDK default:

Emmanuel Bourg
sumber
5
Ini berfungsi dengan baik, saya merasa lebih cepat dan lebih sedikit memakan memori daripada JRebel. Satu-satunya batasan adalah tetap menggunakan Java 6u25.
Emmanuel Bourg
3
Terima kasih banyak. Saya telah menghancurkan sepanjang hari mencoba untuk membuat jRebel bekerja seperti yang diinginkan. DCEVM datang untuk menyelamatkan.
alehro
4
Berikut ini petunjuk lengkap pemasangan & instal untuk DCEVM pada JDK 7u45 dan MacOSX: neu242.livejournal.com/52962.html
neu242
1
JEP 159 bukan bagian dari JDK 8. Mungkin telah ditunda ke JDK 9 tetapi belum ada konfirmasi.
KrishPrabakar
5
Temukan beberapa binari JVM 1.7 lengkap di sini: dcevm.nentjes.com jadi tidak perlu menambal JVM Anda. Saya mencoba yang win64 dan itu bekerja dengan baik untuk saya. Saya juga menulis blog di sini jika Anda memerlukan detail lebih lanjut: javainformed.blogspot.com/2014/01/jrebel-free-alternative.html
dnang
42

Agen Hotswap adalah ekstensi untuk DCEVM yang mendukung banyak kerangka kerja Java (memuat definisi kacang Spring, pemetaan entitas Hibernate, pengaturan tingkat logger, ...).

Ada juga banyak dokumentasi cara mengatur DCEVM dan mengkompilasi binari untuk Java 1.7.

edudant
sumber
5
Mereka sekarang memiliki situs web khusus: hotswapagent.org . Proyek ini cukup baru tetapi tampaknya bekerja dengan cukup baik.
Didier L
Saya mengikuti tutorial ini untuk mengintegrasikannya dalam gerhana setelah isntalling itu: tirthalpatel.blogspot.fr/2014/06/... ini berfungsi seperti pesona
jpprade
@edudant Setelah menginstal 'agen Hotswap', apakah kita perlu menginstal DCEVM? Karena saya telah menginstal DCEVM menggunakan "sudo apt install openjdk-11-jre-dcevm" di Ubuntu 19.04 dan juga plugin di IntelliJ Ultimate 2019.1.3. Jika menginstal 'agen Hotswap' apalagi melakukan pekerjaan JRebel, apa gunanya DCEVM !?
20

Oleh orang-orang Spring, digunakan untuk memuat kembali Grails tetapi bekerja dengan Jawa juga:

https://github.com/SpringSource/spring-loaded

Ramon
sumber
3
Saya tidak ingin menggerutu tetapi pegas tidak mendukung reload ketergantungan.
lbednaszynski
Seingat saya, ada properti sistem yang bisa Anda atur untuk memberi tahu paket apa yang harus di-reload. Ini memiliki keterbatasan lain dan saya mungkin lebih suka menggunakan DCEVM dalam acara apa pun.
Ramon
1
"paket apa yang membuat reloadable" - benar. Masalahnya seperti yang ditunjukkan oleh @lbednaszynski adalah bahwa itu tidak akan memuat ulang JAR yang tergantung. Itu penting untuk proyek multi-modul Maven.
Marcel Stör
Proyek ini ada di loteng untuk saat ini!
jpmottin
9

Saya telah bekerja pada proyek open source yang memungkinkan Anda untuk mengganti kelas panas di atas dan di atas apa yang memungkinkan hot swap: https://github.com/fakereplace/fakereplace

Ini mungkin atau mungkin tidak bekerja untuk Anda, tetapi umpan balik sangat dihargai

Stuart Douglas
sumber
4

Anda mungkin ingin melihatnya:

Dukungan HotSwap: arsitektur berorientasi objek dari Java HotSpot VM memungkinkan fitur-fitur canggih seperti redefinisi kelas on-the-fly, atau "HotSwap". Fitur ini menyediakan kemampuan untuk mengganti kode yang dimodifikasi dalam aplikasi yang sedang berjalan melalui API debugger. HotSwap menambahkan fungsionalitas ke Arsitektur Platform Java Debugger, memungkinkan kelas untuk diperbarui selama eksekusi saat berada di bawah kendali debugger . Hal ini juga memungkinkan operasi pembuatan profil dilakukan dengan hotswapping dalam versi metode yang memasukkan kode profiling.

Untuk saat ini, ini hanya memungkinkan untuk tubuh metode yang baru dikompilasi untuk digunakan kembali tanpa me-restart aplikasi. Yang harus Anda lakukan adalah menjalankannya dengan debugger. Saya mencobanya di Eclipse dan bekerja dengan sangat baik.

Juga, seperti yang disebutkan Emmanuel Bourg dalam jawabannya ( JEP 159 ), ada harapan untuk memiliki dukungan untuk penambahan supertipe dan penambahan serta penghapusan metode dan bidang.

Referensi: Java Whitepaper 135217: Keandalan, Ketersediaan, dan Kemudahan Servis

Alex
sumber
-3

JRebel gratis. Jangan membelinya. Pilih opsi "gratis" (tombol radio) di halaman "beli". Kemudian pilih "Sosial". Setelah mendaftar, Anda akan mendapatkan kunci lisensi JRebel yang berfungsi penuh. Anda kemudian dapat mengunduh JRebel atau menggunakan kunci di versi tertanam IDE Anda. Tangkapan, (ya, ada tangkapan), Anda harus mengizinkan mereka memposting atas nama Anda (beriklan) sebulan sekali di timeline FB Anda atau akun Twitter. Saya memberi mereka akun twitter saya, bukan masalah besar, saya tidak pernah menggunakannya dan tidak ada yang saya tahu benar-benar menggunakannya. Jadi hemat $ 260.

Michael Andrews
sumber
14
Ada satu lagi tangkapan. Ini JRebel Sosial gratis hanya untuk penggunaan non-komersial. Ya, tentu, kami tidak akan memeriksa apakah Anda benar-benar menggunakannya untuk proyek pribadi Anda atau di tempat kerja, tetapi auditor mungkin tidak menyukainya jika mereka melihat Anda menyalahgunakan perangkat lunak.
Anton Arhipov
2
Saya tidak akan menyarankan sebaliknya. Bahkan - satu-satunya alasan saya mengemukakan ini adalah karena tidak ada lagi lisensi "individual". Saya bisa membuat perusahaan saya membayar lisensi kerja saya. Saya kemudian juga membayar lisensi pribadi, untuk penggunaan pribadi saya, selama lebih dari 3 tahun. Tetapi ketika harga ketika utara $ 260 per tahun, itu menjadi tidak praktis. Ini adalah solusi terbaik untuk saya (dan yang lainnya), tetapi saya juga akan tetap membayar jika harganya masuk akal.
Michael Andrews
42
Juga, fakta bahwa setiap tahun saya perlu membeli kembali perangkat lunak yang sudah saya beli membuat frustrasi. Tidak ada perusahaan lain yang melakukan ini. Biasanya Anda membeli perangkat lunak satu kali. Jika Anda memilih untuk meningkatkan - maka Anda membelinya lagi dengan harga penuh (atau mungkin harga upgrade, tergantung pada perusahaan). Namun yang Anda bayar adalah fitur BARU - bukan fitur yang sama dengan yang sudah Anda bayar. Ini akan seperti Apple atau Microsoft menonaktifkan komputer Anda setiap tahun sampai Anda membayar untuk OS lagi. Bahan untuk dipikirkan.
Michael Andrews
2
JRebel Social telah digantikan dengan myJRebel. Gratis untuk penggunaan non komersial, Anda hanya perlu mengizinkan berbagi statistik: my.jrebel.com
Steve Swinsburg
1
Singkatnya, JRebel relatif murah untuk lisensi perangkat lunak pengembang.
Jared Hooper