Java Kernel


หลายคนคงเคยบ่นว่า ทำไมตัว Java Runtime มันใหญ่จัง
น่าจะเล็ก ๆ กว่านี้หน่อย แล้วจะใช้อะไรเพิ่มก็ค่อยให้มันไปดาวน์โหลดเอาเอง (คิดแบบยุค always on)

บัดนี้ความฝันกำลังจะเป็นจริงแล้ว ด้วยโครงการ Java Kernel (หรือชื่อเดิม “Java Browser Edition”)
ซึ่งถ้าทำสำเร็จเนี่ย (เป้าหมายคือ Java 7) เราอาจจะเห็น Java Kernel ขนาด 3 MB ก็เป็นได้

อย่างไรก็ตาม ก็ยังมีคนคิดว่ามันไม่ช่วยเท่าไหร่หรอก

คุณ Chanwit ทดลองลดขนาด rt.jar ดู เอาแค่ให้รันโปรแกรม “Hello World” ได้
โดยใช้ java -verbose + โปรแกรม 7z ช่วย — จาก 36 MB เหลือ 1.8 MB น่าสนใจ

[ลิงก์ “Java Browser Edition”: New name, first steps | ผ่าน CK’s Blog]

technorati tags:
,


13 responses to “Java Kernel”

  1. ผมสงสัยน่ะครับคือ ลองแวะไปดู แล้ว rt.jar ที่เขาทำไว้ ดูผ่านๆ รู้สึกจะไม่มี swing,awt และคงขาดอะไรอีกหลายอย่าง เลยสงสัยว่า ดีกว่านำ JRE 1.1.8 (rt.jar~1.4MB) มาใช้อย่างไรบ้างครับ

  2. Just for fun :)ผมเข้าใจว่า เขาคงต้องการ jt.jar แค่ class ที่จำเป็น หรือเปล่าครับ คือเขาสามารถ เขียนJava1.6 แล้ว ติด runtime ขนาดเล็กๆ มี เฉพาะ class ที่เราจะใช้ จะใช้อะไรเพิ่ม ก็ D/L เพิ่ม? ถ้าทำได้คงดีเหมือนกัน(คงไม่มีใครอยากใช้ JRE1.1.8แล้วมั้ง?)

  3. ครับ แนวคิดคือประมาณนั้นมีเท่าที่จะใช้ที่คุณ Chanwit เค้าทดลอง ก็คือการถอดที่ไม่ใช้ทิ้งออกไปซะอันนั้นคืออันหนึ่งแต่ทีนี้ ตัว runtime ปัจจุบันนี่ มันยังไม่มีความสามารถในการไปดาวน์โหลดส่วนที่ขาดหายได้เองถ้ามันไม่เจอคลาสไหน มันก็ทำได้แค่แจ้งว่าไม่เจอ แล้วก็หยุดการทำงานนี่คือสิ่งที่ Java Runtime รุ่นหน้า (Java 7) กำลังจะทำ คือให้สามารถดาวน์โหลดตัวที่ยังขาดอยู่มาได้มันคงทำนองเดียวกับ MS Office รุ่นหลัง ๆที่เราสามารถลงเฉพาะความสามารถหลัก ๆ ที่เราจะใช้ได้ พวกโปรแกรมเสริมอาจจะยังไม่ลงเช่น Equation Editorแต่มันก็ยังอยู่ในเมนูให้เลือกได้ถ้าเมื่อไหร่ที่เราเลือกใช้ MS Office มันก็จะบอกว่า โปรแกรมเสริมนี้ ยังไม่ได้ติดตั้งถ้าจะติดตั้ง ก็ใส่ซีดีมาซะ ก็จะติดตั้ง ใช้งานได้– คิดว่า Java Kernel ก็ประมาณเดียวกันครับ—-JRE 1.1.8 นี่ ยังไม่มีไลบรารีสำคัญ ๆ หลายตัวทีเดียวอย่าง Collections Framework, Swing พวกนี้ ที่มีเพิ่มเติมใน JRE 1.2หรือ syntax ของภาษา ที่มีเพิ่มเติมใน Java 5

  4. ขอบคุณ สำหรับคำแนะนำที่ให้ครับขอถามเพิ่มอีกนิดแล้ว JRE ปัจจุบัน มันเพิ่ม classpath กลางอากาศได้ ใช่มั้ยครับ แบบว่า D/L .jar มาแล้ว เพิ่ม classpath ชี้ไปที่ .jar ตัวใหม่นี้เลย อะไรอย่างนี้ ทำได้ ใช่ไหมครับคือวันนี้ผมค้นๆเรื่องนี้อยู่ ดูแล้วน่าจะใช้คำสั่ง System.setProperties ใช่มั้ยครับขอบพระคุณที่แนะนำ 🙂

  5. จริง ๆ ตัว Java นี่ มันทำ dynamic class loading ได้อยู่แล้วครับแต่ถ้าเป็นพวกคลาสที่เกี่ยวกับตัว vm รู้สึกว่าตอนนี้มันจะไม่ยอม เหตุผลเกี่ยวกับความปลอดภัยตัว Java Kernel คงต้องหาทางทำตรงนั้นจะทำยังไงให้โหลดคลาสใน vm เข้ามาเพิ่มได้ โดยยังคงความปลอดภัยอยู่เพิ่งเห็นว่า อีตา Ethan ทีมพัฒนา Java Kernel ก็เล่น blog tag กะเค้าด้วย 😀

  6. อ้อ เราใช้ System.setProperties เพื่อเซต Property java.class.path ได้จริงครับแต่ตัว JVM จะอ่าน Property นี้ตอนแรกแค่ครั้งเดียว เพราะฉะนั้นก็เลยไม่มีผลอะไรครับถ้าไม่แก้ classpath อาจจะใช้วิธีโหลดไปใส่ในไดเรกทอรี ext/ ซึ่งเป็น default classpath อันนึง ไฟล์ .jar ทุกอันในไดเรกทอรีนี้จะถูกเพิ่มเข้าไปใน classpath

  7. ขอบคุณที่แนะนำครับจะลองค้นๆเรื่อง dynamic class loading ดู

  8. เอ๊ะ เพิ่งเห็น post ใหม่ขอบคุณครับ จะลองเรื่อง /ext ดู(ผมเกือบงมไปผิดทางซะแล้วสิ)

  9. ผมก็ไม่เคยลองว่ามีวิธีอื่นรึเปล่านะครับถ้าได้ผลยังไง อย่าลืม blog 😀

  10. ผมคิดว่าถ้ามันจะไม่พ่วง Swing กับ AWT มาให้ด้วยยิ่งดี เวลาที่จะพัฒนา Swing ก็ค่อยเพิ่ม swing.jar ในโปรแกรมของเราซะ ออกแนว swt คงจะคล้าย ๆ กับ .dll ของ Microsoft นั่นแหละ อยากให้ตรงนี้เป็นจริงมากกว่า ให้มัน download ได้จากเว็บแล้วถ้าเป็นไปได้คือ อยากให้มันลดขนาดการใช้ memory ด้วย เพราะเทียบกับ .NET แล้วตอนเริ่มต้นไม่เท่ากันเลย .NET 6 MB แต่ Java ล่อไป 21 MB ตอนทำงาน พอคลิกนู่นคลิกนี่ .NET ก็เพิ่มไปที่ 12 MB ส่วน Java น่ะหรอเพิ่มเป็น 26 MB

  11. ถ้า Java Kernel ทำแบบที่ผมบอกได้ คงมีแนวโน้มที่ Swing จะ Native กับ OS โดย 3rd party

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.