วิธีแก้ปัญหา / เปลี่ยนรหัส Java ขณะที่โปรแกรมกำลังทำงาน


15

ฉันเพิ่งเห็นวิดีโอที่แสดงให้เห็นว่า Notch (จากชื่อเสียงของ Minecraft) กำลังดีบั๊กและเปลี่ยนแปลง Minecraft ในขณะที่มันกำลังทำงานอยู่ เขาหยุดเกมชั่วคราวเปลี่ยนบางอย่างในรหัสแล้วหยุดเกมที่การเปลี่ยนแปลงมีผลทันทีโดยไม่จำเป็นต้องเริ่มโปรแกรมใหม่

มันทำงานอย่างไร เทคนิคแบบไหนที่ใช้เพื่อให้บรรลุสิ่งนี้


1
และเป็นขอบเขตของกระบวนการ QA ของ Notch
DeadMG

1
ตามที่เก่า Q & A ที่กองมากเกินนี้สามารถทำได้ด้วยJPDAคุณลักษณะที่ไม่"hotswap" ชั้นไฟล์เปลี่ยน
ริ้น

ฮ่า ๆ ก็มาที่นี่หลังจากวิดีโอนั้น
Ciro Santilli 事件改造中心法轮功六四事件

คำตอบ:


4

Java สามารถแลกเปลี่ยน hot-out ได้ทันที ถ้าคุณใช้ IDE อย่าง Eclipse มันจะทำงานเพื่อเปลี่ยนเมธอดเนื้อหา หากคุณต้องการใช้การเปลี่ยนแปลงรหัสอื่น ๆ คุณอาจต้องการใช้เครื่องมือ JRebel เป็นผลิตภัณฑ์ที่รองรับเคสเพิ่มเติม

ฉันไม่ต้องการทำการตลาดสำหรับผลิตภัณฑ์นั้น แต่โดยส่วนตัวฉันไม่รู้จักทางเลือกอื่นใด บนเว็บไซต์ JRebel มีความสุขที่มีคุณลักษณะการเปรียบเทียบ

หวังว่าจะช่วย


+1 JRebel ยอดเยี่ยมสำหรับ "การเข้ารหัสร้อน" นอก IDE เช่น Eclipse
Jalayn

4

มันเรียกว่าhot code replaceและอนุญาตให้ IDE เปลี่ยนโค้ดที่รันอยู่ผ่านอินเตอร์เฟสการดีบัก ได้รับการสนับสนุนจาก Sun JVM ตั้งแต่ Java 1.4.1

อย่างไรก็ตามยกเว้นว่าคุณใช้ส่วนขยาย JRebel JVM (เชิงพาณิชย์) จะ จำกัด เฉพาะการเปลี่ยนแปลงภายในส่วนของเมธอด หากคุณเพิ่ม / ลบเมธอดหรือคลาสหรือเปลี่ยนลายเซ็นคุณต้องรีสตาร์ท JVM


ลิงก์ที่ถูกต้องคือตอนนี้: wiki.eclipse.org/FAQ_What_is_hot_code_replace%3F
Pierre
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.