เขียนชวาแบบไม่ขัดจังหวะด้วย DCEVM

DCEVM คืออะไร

The Dynamic Code Evolution Virtual Machine (DCE VM) is a modification of the Java HotSpot(TM) VM that allows unlimited redefinition of loaded classes at runtime

พูดง่ายๆคือเป็นตัวเสริมการทำงานของ (J)VM ให้สามารถโหลดคลาสใหม่ ณ runtime ทำให้เราสามารถ แก้ไข code แล้วไม่ต้องกด compile ใหม่ run ใหม่

ถ้าจะให้เห็นภาพก็ ดูที่ Video นี้เลย

สังเกตุได้ว่าระหว่างที่โปรแกรม run อยู่พอแก้ code ปุ๊บ active ปั๊บ (แจ่ม) เอาละมาลองเริ่มเลย

โหลด DCE VM มาก่อน

ผมโหลด DCE VM จาก http://dcevm.github.io/ (ตัวที่ใช้ลองเป็น Java 7 update 51, build 3)

โหลด JDK ให้ตรงกับ DCE VM

เพื่อความปลอดภัย ผมเลือกใช้ JDK7u51 ตามที่ DCE VM บอกว่า support โหลดได้จาก Java SE 7 Archive Downloads แล้ว install ซะ

ก็อปปี้ JDK ไว้ทำ DEC VM แล้ว install ซะ

เพื่อความสบายใจผมก็อปปี้ jdk ที่ install ไปไว้อีกที่เพื่อใช้ install DEC VM จากนั้นก็ install เลย

dcevm
ก็อปปี้ไว้ D: ซะ เปลี่ยนชื่อซะหน่อย
dcevm-install
install ซะ
2014-11-11 19_24_49-Dynamic Code Evolution VM Installer
เลือก jdk ที่เราก็อปปี้แล้ว install DCEVM เสร็จแล้วจะขึ้นแบบนี้

สร้าง Project แล้วลองเลย

ผมสร้าง Java project ด้วย Maven บน Eclise และ set ให้ project ใช้ dcevm ที่เรา install ไว้

jre

จากนั้นก็ลอกโค้ดตาม Youtube เลย

package com.tumit.dcevmdemo;

/**
 * DCEVM Test!
 *
 */
public class App {
    public static void main(String[] args) throws InterruptedException{
               
        while(true){
            A a = new A();
            System.out.println(a.doStaff());
            Thread.sleep(1000);
        }
        
    }
}

class A {

    private static int x;
    
    public String doStaff() {
        return "A" + x++;
    }
    
}

ลอง run (Ctrl+F11) เลย อ้าว! ไม่เห็นเปลี่ยน

run1
อ้าว! แก้แล้วทำไมไม่โหลดให้ใหม่

ลองไปลองมาก็มา อ๋อ.. ต้อง run แบบ debug mode (F11) เอาใหม่ๆ

run2
แก้จาก A เป็น B แล้ว save อ้าาา ใช้ได้ๆ

สรุป… ก็โอนะ

หลังจากลองคร่าวๆน่าสนใจเลย ผมลอง(เล็กๆ)แก้โปรเจค struts2+spring+hibernate ก็ช่วย reload พวก class กับ application resource ได้ ถือว่าน่าสนใจพอที่จะลองไปเล่นดูครับ 😀

Advertisements

One thought on “เขียนชวาแบบไม่ขัดจังหวะด้วย DCEVM

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s