Bagaimana cara debug / mengubah kode Java saat program sedang berjalan?

15

Saya baru saja melihat video yang menunjukkan bagaimana Notch (of Minecraft fame) melakukan debugging dan mengubah Minecraft saat sedang berjalan. Dia menjeda permainan, mengubah sesuatu dalam kode dan kemudian membatalkan permainan di mana perubahan langsung berlaku tanpa perlu me-restart program.

Bagaimana cara kerjanya? Jenis teknik apa yang digunakan untuk mencapai ini?

RoToRa
sumber
1
Dan dengan demikian adalah sejauh mana proses QA Notch.
DeadMG
1
Menurut T&J yang lebih lama di Stack Overflow , ini dapat dilakukan dengan fitur JPDA yang melakukan Penggantian File Kelas "HotSwap"
gnat
Lol, juga datang ke sini setelah video itu.
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件

Jawaban:

4

Java dapat melakukan hot-swapping di luar kotak. Jika Anda menggunakan IDE seperti Eclipse, itu akan berfungsi untuk mengubah metode-badan. Jika Anda ingin menerapkan perubahan kode lain, Anda mungkin ingin menggunakan alat. JRebel adalah produk yang mendukung lebih banyak kasing.

Saya tidak ingin melakukan pemasaran untuk produk itu, tetapi saya pribadi tidak tahu alternatif lain. Di situs web JRebel ada perbandingan fitur yang bagus .

Semoga itu bisa membantu.

John biasa
sumber
+1 JRebel sangat bagus untuk "hot coding" di luar IDE seperti Eclipse.
Jalayn
4

Ini disebut penggantian kode panas dan memungkinkan IDE untuk mengubah kode live running melalui antarmuka debugging. Ini telah didukung oleh Sun JVM sejak Java 1.4.1

Namun, kecuali Anda menggunakan ekstensi JRebel JVM (komersial), itu terbatas pada perubahan di dalam badan metode. Jika Anda menambah / menghapus metode atau kelas, atau mengubah tanda tangan, Anda harus memulai ulang JVM.

Michael Borgwardt
sumber
Tautan yang benar adalah sekarang: wiki.eclipse.org/FAQ_What_is_hot_code_replace%3F
Pierre