Mark Reinhold หัวหน้าฝ่ายสถาปัตยกรรม Java ของ Oracle เสนอไอเดีย Project Leyden ที่ต้องการแก้ปัญหา Java เริ่มทำงานช้า, ต้องรอนานกว่าจะแตะระดับประสิทธิภาพเต็มที่ (time to peak performance) และใช้แรมมาก
แนวทางของ Project Leyden คือเสนอแนวคิดการคอมไพล์แอพพลิเคชันเป็น static image หรือ "อิมเมจปิด" ที่ไม่สามารถโหลดคลาสหรือไบต์โค้ดใดๆ เพิ่มได้อีกในตอนรัน เพื่อให้ตอนคอมไพล์สามารถรีดประสิทธิภาพได้อย่างเต็มที่ ลดคลาสที่ (รู้ล่วงหน้าว่า) ไม่ต้องใช้งานตอนรัน รวมถึงปรับแต่งประสิทธิภาพแบบ ahead-of-time (AOT) ได้อย่างจริงจัง
ผลคือขนาดของอิมเมจเล็กลง ระยะเวลาตอนเรียกโปรแกรมลดลง ระยะเวลาที่รันถึงระดับเต็มประสิทธิภาพสั้นลง
Reinhold บอกว่า Project Leyden ได้แรงบันดาลใจมาจากโครงการอื่นๆ เช่น GNU Compiler for Java และ GraalVM โดยสิ่งที่จะทำด้วยคือเพิ่มสเปกของ static image ลงในสเปกของ Java Platform เลย เพื่อให้ GraalVM ปรับมาอิงกับสเปกตัวนี้ด้วย นักพัฒนาจึงเลือกได้ว่าจะใช้ Leyden หรือ GraalVM เพราะเข้ากันได้บนสเปกเดียวกัน
ตัวของ Leyden จะไม่นำโค้ดของ GraalVM เข้ามาใช้ตรงๆ แต่จะพัฒนาจากฐานโค้ดของโครงการ JDK ในปัจจุบัน เช่น HotSpot VM, คอมไพเลอร์ jaotc เป็นต้น โครงการจะเริ่มพัฒนาโดยอิงจากฐานโค้ดของ Java 15 รุ่นที่กำลังพัฒนาอยู่ในปัจจุบัน แล้วแยกสายการพัฒนาออกมาต่างหาก โดยจะทยอยออกฟีเจอร์ทีละส่วนในอนาคต
Reinhold ยอมรับว่า Project Leyden ไม่ได้เหมาะสำหรับทุกคน เพราะข้อจำกัดเรื่องการเรียกคลาสเพิ่มเติมได้เลยระหว่างรัน ทำให้มันไม่เหมาะกับแอพพลิเคชันบางประเภท แต่เขาก็คิดว่าในงานบางอย่าง เช่น อุปกรณ์ฝังตัวหรือคลาวด์ ที่ต้องการประสิทธิภาพสูงๆ น่าจะคุ้มกับการทำโครงการ Leyden
Comments
ขำ...
จะให้ embedded ใช้ java
ยังไม่ทันสตาร์ทแอพขึ้นแรมเต็มโดยคิลโปรเซลเรียบร้อย...
บางที แค่ Product ของตัวเองที่ใช้ Java ยังมีปัญหาเลย ทั้งค้าง กินแรม และ Error
ความล้มเหลว คือจุดเริ่มต้นสู่ความหายนะ มีผลกระทบมากกว่าแค่เสียเงิน เวลา อนาคต และทรัพยากรที่เสียไป - จงอย่าล้มเหลว
อันนี้ถามเอาความรู้นะครับ ปกติผมเป็น dev .Net ผมเข้ามาตลอดว่า Java เร็วแรงไม่กินแรม ไม่ใช่หรอครับ หรือผมเข้าใจผิด
มันเร็วกว่า dotnet นะ แต่ภาพรวมยังแพ้ภาษาลูกผสมหรือพวก native อยู่เป็นทุ่ง มีบางกรณีเท่านั้นที่แรงเทียบเท่าหรือแรงกว่า ส่วนเรื่องกินแรม มันกินน้อยกว่าภาษา VM ส่วนใหญ่ แต่ก็ยังมากเกินไปสำหรับอุปกรณ์ที่มีทรัพยากรจำกัด อย่างต่ำ ๆ คือ 1 MB ซึ่งมันมากเกินไปสำหรับ IoT
ภาพจำของผมคืออืด แต่มันถึกครับ (.NET ค้างไปเรียบร้อย)
อือหือ จะเอา Java ไปรันบน Embedded
อยากจะขำเป็นภาษา C
ในข่าวบอกว่าใช้ ahead-of-time compilation นะครับ
แสดงว่าไม่ต้องรันบน Virtual Machine อีกเพราะคอมไพล์เป็น machine code เรียบร้อยแล้วถึงจะไปรัน ก็น่าจะเหมาะกับ Embedded System
เข้าใจครับ แค่ข้อดีของมันหายไปหมดแค่นั้นเอง
ุถ้าทำแบบนั้นมีตัวเลือกภาษาอื่นให้เลือกเยอะเลยครับ
ผมว่าจุดเด่นของ Java นอกจากเรื่อง virtual machine ที่ช่วยเรื่อง portability แล้วยังมีจุดเด่นอื่นๆอีกเยอะเลยนะครับ
OOP ไม่อยากนับเป็นข้อดีเลย...
ทำไม oop ถึงไม่เป็นข้อดีล่ะครับ