Tags:
Node Thumbnail

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

ที่มา - OpenJDK via InfoWorld

Get latest news from Blognone

Comments

By: kernelbase on 28 April 2020 - 12:58 #1156079

ขำ...
จะให้ embedded ใช้ java

By: Hadakung
iPhoneWindows PhoneAndroidWindows
on 28 April 2020 - 13:29 #1156085 Reply to:1156079

ยังไม่ทันสตาร์ทแอพขึ้นแรมเต็มโดยคิลโปรเซลเรียบร้อย...

By: IDCET
Contributor
on 28 April 2020 - 14:31 #1156096

บางที แค่ Product ของตัวเองที่ใช้ Java ยังมีปัญหาเลย ทั้งค้าง กินแรม และ Error

By: sabayjoo_ on 28 April 2020 - 14:39 #1156098

อันนี้ถามเอาความรู้นะครับ ปกติผมเป็น dev .Net ผมเข้ามาตลอดว่า Java เร็วแรงไม่กินแรม ไม่ใช่หรอครับ หรือผมเข้าใจผิด

By: big50000
AndroidSUSEUbuntu
on 28 April 2020 - 14:52 #1156099 Reply to:1156098
big50000's picture

มันเร็วกว่า dotnet นะ แต่ภาพรวมยังแพ้ภาษาลูกผสมหรือพวก native อยู่เป็นทุ่ง มีบางกรณีเท่านั้นที่แรงเทียบเท่าหรือแรงกว่า ส่วนเรื่องกินแรม มันกินน้อยกว่าภาษา VM ส่วนใหญ่ แต่ก็ยังมากเกินไปสำหรับอุปกรณ์ที่มีทรัพยากรจำกัด อย่างต่ำ ๆ คือ 1 MB ซึ่งมันมากเกินไปสำหรับ IoT

By: Architec
ContributorWindows PhoneAndroidWindows
on 28 April 2020 - 16:30 #1156108 Reply to:1156098

ภาพจำของผมคืออืด แต่มันถึกครับ (.NET ค้างไปเรียบร้อย)

By: ZeaBiscuit
iPhoneAndroidUbuntuWindows
on 28 April 2020 - 23:37 #1156144
ZeaBiscuit's picture

อือหือ จะเอา Java ไปรันบน Embedded
อยากจะขำเป็นภาษา C

By: takwing on 29 April 2020 - 09:28 #1156167 Reply to:1156144
takwing's picture

ในข่าวบอกว่าใช้ ahead-of-time compilation นะครับ
แสดงว่าไม่ต้องรันบน Virtual Machine อีกเพราะคอมไพล์เป็น machine code เรียบร้อยแล้วถึงจะไปรัน ก็น่าจะเหมาะกับ Embedded System

By: ZeaBiscuit
iPhoneAndroidUbuntuWindows
on 29 April 2020 - 14:58 #1156216 Reply to:1156167
ZeaBiscuit's picture

เข้าใจครับ แค่ข้อดีของมันหายไปหมดแค่นั้นเอง
ุถ้าทำแบบนั้นมีตัวเลือกภาษาอื่นให้เลือกเยอะเลยครับ

By: takwing on 29 April 2020 - 21:30 #1156225 Reply to:1156216
takwing's picture

ผมว่าจุดเด่นของ Java นอกจากเรื่อง virtual machine ที่ช่วยเรื่อง portability แล้วยังมีจุดเด่นอื่นๆอีกเยอะเลยนะครับ

        1) oop 
        2) type safety
        3) garbage collector
By: big50000
AndroidSUSEUbuntu
on 29 April 2020 - 23:09 #1156268 Reply to:1156225
big50000's picture

OOP ไม่อยากนับเป็นข้อดีเลย...

By: takwing on 29 April 2020 - 23:28 #1156270 Reply to:1156268
takwing's picture

ทำไม oop ถึงไม่เป็นข้อดีล่ะครับ