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.
Jawaban:
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:sumber
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.
sumber
DCEVM mendukung redefinisi kelas yang ditingkatkan dan tersedia untuk JDK7 dan JDK8 saat ini.
https://github.com/dcevm/dcevm/releases
HotswapAgent adalah alternatif JRebel gratis dan mendukung DCEVM dalam berbagai Kerangka.
http://hotswapagent.org/
sumber
Oleh orang-orang Spring, digunakan untuk memuat kembali Grails tetapi bekerja dengan Jawa juga:
https://github.com/SpringSource/spring-loaded
sumber
Saya telah menulis artikel tentang DCEVM : Spring-mvc + Velocity + DCEVM
Saya pikir itu layak, karena lingkungan saya berjalan tanpa masalah.
sumber
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
sumber
Anda mungkin ingin melihatnya:
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
sumber
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.
sumber