James Gosling บิดาแห่งจาวา ขึ้นเวทีงานสัมมนา TheServerSide Java Symposium โดยกล่าวสนับสนุนทิศทางการพัฒนาจาวาของออราเคิล แม้ตัวเขาเองจะมีปัญหากับการทำงานที่ออราเคิลจนต้องลาออกก็ตาม
Gosling บอกว่าออราเคิลไม่มีทางเลือกอื่นนอกจากต้องดูแลจาวาให้ดี เพราะซอฟต์แวร์ระดับมิดเดิลแวร์ทั้งหมดของออราเคิลต้องพึ่งพาจาวา เขายังพูดถึงประเด็นเรื่องการควบคุม JCP ของออราเคิลว่าเป็นหลักฐานยืนยันว่าทิศทางการควบคุม JCP ของซันในอดีต (ซึ่งออราเคิลเคยคัดค้าน) เป็นสิ่งถูกต้อง
Gosling ยังยินดีที่เห็นออราเคิลเสนอฟีเจอร์ด้าน UI ใน JDK 7 และเขาแสดงความเห็นว่า Java EE 6 ช่วยให้การสร้างเว็บแอพพลิเคชันทำได้ง่ายขึ้นมาก เขาบอกว่าคำว่า "cloud" น่ารำคาญ และอนาคตของจาวาไม่ได้อยู่ที่ตัวภาษา แต่อยู่ที่ตัว virtual machine (JVM)
ที่มา - The Register, InfoWorld
Comments
ผมว่าลุงเขาคงชอบเช้าวันที่ฟ้าปลอดโปร่งนะครับ
พูดเหมือน MS เลย
งั้นช่วยให้ JVM เขียน C# ได้ ให้ที
ผมว่า MS ที่เชียวชาญมากกว่าน่าจะมาทำให้นะ :-)
เอาเข้าจริง ๆ แกพูดถึงพวก Dynamic Language มากกว่านะ
ไม่เข้าใจว่าทำไมจะต้องทำให้ JVM run C# ได้ในเมื่อเป็นคู่แข่งกันอยู่แล้ว
.NET Framework ก็มี J# ใช้ นะครับ
ถ้าหากมั่นใจว่า JVM ตัวเองประสิทธิภาพดี และรองรับได้หลายภาษา และมีความสำคัญมากกว่าตัวภาษา
ก็ควรจะเอาภาษาของคู่แข่งมาใส่ เพื่อให้คนที่ใช้ภาษาคู่แข่ง ได้ย้ายไปใช้ JVM ของตัวเอง
อย่างนี้ไม่ถูกหรือครับ?
มีคนใช้ J# ด้วยหรือครับ ??
การเอาภาษาอื่นมาใช้ที่กับ JVM มันไม่ต้องแก้ JVM นะครับ มันต้องแก้ตัว compiler ของภาษานั้น ๆ
ให้ compile มาเป็น ByteCode ของ JVM นะครับ ซึ่ง oracle คงไม่ทำให้หรอก คงต้องบอก Microsoft
ผมเห็นว่าภาษาอื่นๆน่ะ มันมีหลักการของมันเรียบร้อย
แต่ bytecode เปนของเฉพาะที่คนทำ JVM จะรู้ทุกอย่าง รวมถึงการพัฒนา JVM ก็ต้องเปลี่ยน bytecode เปนหลัก
ในอีกมุมนึงก็คือ bytecode เปนของออราเคิล ซึ่งจะเปิดหรือปิดเปนความลับหรือไม่ก็แล้วแต่ Oracle
Microsoft ทำ J# ลง .NET เองนะครับ รวมถึงภาษาอื่นๆอีกเปนสิบ ที่ไม่ใช่คนที่คิดเอง แต่เอามารันบน Framework ของตัวเอง
และจนกระทั่ง C# โด่งดัง มีคนใช้ ก็ถึงมี Symian ที่ทำ Mono มา Compile ภาษา C# ให้ไปรันบน Mono Framework
ผมขอเปรียบเทียบกับภาษา C นะ ว่าคนทำภาษา C ไม่ได้ไปนั่งทำ Compiler ให้ Hardware ทุกเจ้า
ขนาดสมัย Windows / Linux / MAC ก็ยังมี Compiler ภาษา C อยู่หลายเจ้า เพราะตัวภาษา C มีมาตรฐานของตัวเองเรียบร้อย
ย้ำอีกครั้งว่า James เปนคนพูดเอง ว่า ภาษา ไม่ใช่ส่วนสำคัญ สำคัญตรง JVM
ก็แปลว่า JVM ควรจะริเริ่มเอาภาษาอื่นๆมาวิ่งบน VM ของตัวเอง
และสิ่งที่ผมพูด คือการแนะนำว่า ก็ควรเอา C# ของคู่แข่งมาลง เพื่อให้คนย้ายไปใช้ JVM
Microsoft จะทำ C# ไปลง JVM ทำไม ในเมื่อ Microsoft อยากให้คนใช้ .NET ถึงขนาดทำ J#
ไอ้แนวคิดว่า Virtual Machine สำคัญกว่าตัวภาษา
ไมโครซอฟท์ใช้ .NET ในเป้าหมายนั้นมาแต่แรกแล้ว
และ J# นี่แหละคือสิ่งที่แสดงออกถึงแนวคิดนั้น
+1 ข้างบน มัน concept .Net ชัดๆ
พูดภาษาที่ตัวเองถนัด แล้วทำงานรวมกันได้
เรื่องการสนับสนุนภาษาให้กับ VM ต่างๆ ทั้งค่าย JVM และ .NET ก็สนับสนุนให้ชุมชนเป็นผู้พัฒนานะครับ ไม่จำเป็นว่าบริษัทจะต้องทำเองทั้งหมด
J# จริง ๆ เป็นแค่วิธีดึงคนจาก Java มา .Net ซึ่งจริง ๆ แล้วตอนนี้ Deprecate ไปแล้ว แล้วก็ใช้กับ .Net เวอร์ชั่นล่าสุด (4.0) ไม่ได้แล้วด้วย (จริง ๆ ได้แต่ต้องเล่นแร่แปรธาตุ)
จากสถานการณ์ปัจจุบัน Oracle ไม่มีความจำเป็นอะไรที่ต้องดึงคนจาก C# กลับมา เพราะเอาเข้าจริง ๆ กว่าครึ่งของคนเขียน C# เขียน Java ได้คล่องกว่าอีก (แค่ในหลาย ๆ งาน C#/.Net มันใช้ได้ดีกว่า Java (และก็สู้ไม่ได้เลยแม้แต่น้อยในอีกหลาย ๆ งานนะ)) ทาง Oracle น่าจะมุ่งไปทาง Dynamic Language (เช่น Ruby (JRuby)) มากกว่านะ
อยากเม้น @Thaina แต่เม้นไม่ได้
@Thaina สิ่งที่บอกว่าใช้หลายภาษาใน VM เดียวกันได้เป็นข้อดี ก็เห็นด้วย แต่หากมองในแง่การ Maintenance ล่ะ จะหาคนที่ทำได้หลายภาษา และเป็น .NET จากที่ไหน มันก็กลับมาสู่จุดเริ่มต้น คือ ต้องเลือกภาษาใดภาษาหนึ่งอยู่ดี ให้เป็นภาษาหลักในการพัฒนา เพื่อการหาคนมา Maintain ต่อ
ทำไมผมรู้สึกว่าข่าวที่ออกมา JVM มุ่งไปทาง support dynamic language มากกว่าภาษาประเภท static แต่ก็อย่างที่บอกผมก็ยังมองไม่เห็นประโยช์นของการสร้าง JVM มาเพื่อ support ภาษาที่มีลักษณะค่อนข้างคล้ายกันและเป็นคู่แข่งกันอีกด้วย การทำแบบนั้นผมว่ามันเหมือนเป็นการยอมรับทางอ้อมว่าภาษาของคุณไม่ดีพอที่จะแข่งกับคู่แข่งได้เลยต้องหันมา support ภาษาคู่แข่ง
ผมเห็นว่า JVM มีลักษณะที่เหมาะกับภาษา static มากกว่าน่ะครับ
แต่โดยรวมๆก็คือ VM ดีๆ นี่มันก็ควรจะรองรับทั้งภาษา static และ dynamic
ส่วนเรื่องความคล้ายกันของภาษา นี่ ผมก็ไม่ค่อยแน่ใจนะ จะเรียก Delphi.NET กับ C# ว่าคล้ายกัน ดีหรือเปล่า?
แต่การที่ไม่ทำ C# ออกมา ทั้งที่ตัวเองพูดว่า "ภาษามีความสำคัญน้อยกว่า VM"
นี่น่าจะแสดงถึงการยอมรับกลายๆ ว่าไม่กล้าทำ เพราะกลัว Java จะแพ้ ได้เหมือนกัน
คือผมดูแบบอย่างมาจาก J# ว่าไมโครซอฟท์ "กล้า" ที่จะทำออกมา โดยไม่กลัวว่าคนที่ชำนาญ Java จะมาถล่มเขียน J# จน C# ตกกระป๋อง
ในทางกลับกันเลยว่า J# กลายเปนสเต็ปทางผ่านให้คนเขียน Java บางคน เอามาใช้เล่นก่อนจะโดดมา C#
ถ้า JVM อยากจะเน้นความสำคัญในการดึงคนมาใช้ น่าจะลองทำแบบนี้ดู
และถ้า C# สามารถใช้งานบน JVM ได้อย่างมีประสิทธิภาพ น่าจะเปนข้อพิสูจน์ได้ว่า JVM มันดีจริง
วิธีการนั้นอาจจะเป็นของ Microsoft แต่กับ Oracle อาจจะไม่ใช่ก็ได้วิธีใครวิธีมัน ผมมองว่าไม่มีความจำเป็นเลยที่ต้องไปลอกเลียนแบบ กลับกันเอาเวลาไปพัฒนาของตัวเองให้ดีกว่าคู่แข่งสร้างความแตกต่างจะเหมาะสมกว่าเพราะถ้าไปพัฒนาภาษาที่คู่แข่งเค้าถนัดอยู่แล้วมันจะเสียทั้งเวลาและงบประมาณ สู้ Oracle ไปพัฒนาหรือสนับสนุนของที่มีคนทำอยู่แล้วเช่น JRuby, Jython, Groovy, Scala หรือ PHP ไม่ดีกว่าเหรอครับเพราะนักพัฒนาฝั่งนี้ก็ไม่น้อยไปกว่า C# เค้าฉลาดครับคงไม่คิดสั้นแบบนั้น เพราะผลมันก็แสดงให้เห็นชัดอยู่แล้วว่า Microsoft เคยพยายามทำ Java ของตัวเองขึ้นมาแต่ก็ไม่ประสบความสำเสร็จใช้จริงไม่ได้สุดท้ายก็ต้องเลิกพัฒนาไป
เห็นด้วยเลยครับ โดยเฉพาะ Groovy อิอ
ใช้จริงไม่ได้ หรือเพราะติดปัญหาทางกฎหมายกับ Sun
ประวัติ J# มันไม่สวยหรูเพราะโดน Sun ฟ้อง จน Microsoft ต้องคิดภาษาใหม่ของตัวเองขึ้นมาคือ C# และเอา feature ทุกอย่างที่ J# มี ผสมกับ Delphi และ C กำเนิดใหม่เป็น C# ที่เดี๋ยวนี้ทำ dynamic variable ได้แล้ว ความที่มันเป็นได้ทั้ง manage code และ unmanage code ในตัว เลยไม่ต่างกับการใช้ JNI ของฝั่ง Java นัก ภาษา C# เลยเป็นภาษาที่ยืดหยุ่นกว่าในหลาย ๆ แง่มุม การเขียนที่สั้นกระชับกว่า สิ่งเหล่านี้ล้วนทำให้ J# หมดความสำคัญลงไป
ซักวัน Google จะต้องพลักดัน ภาษา Go ไปแทนที่ Java บน Android เฉกเช่นเดียวกับที่ Microsoft เคยโดน
อันนั้นเข้าใจผิดแล้วครับ
C# เกิดจากการที่ไมโครซอฟท์โดน SUN ฟ้อง ว่า Java เวอร์ชั่นไมโครซอฟท์ มันมีฟีเจอร์เกินมาตรฐานของ SUN
ในตอนที่ว่านี้ J# ยังไม่เกิดครับ
J# เกิดมาหลังจากนั้นครับ ตอนที่ C# และ .NET เสร็จแล้ว ไมโครซอฟท์ตั้งใจทำ J# ออกมาเพ่อดึงนักพัฒนา Java มาใช้ ส่วนที่มันไม่นิยมเพราะอะไรนี่ก็คงจะมีหลายสาเหตุ
@thaina จริงๆอยากแสดงความคิดเห็นกับคุณ thaina แต่คอมเมนต์ไม่ได้ เลยขอพ่วงหน่อยครับ
อันที่จริงเมื่อสิบปีก่อน MS เล่นตุกติกกับ Java ครับ MS Java นั้นตั้งใจพัฒนาไม่ 100% กับ Sun JDK ไม่ใช่มีแค่เกินครับ แต่มีส่วนขาดและก็ไม่น้อยเลยด้วยครับ ทำให้โค้ดไม่น้อยไม่สามารถทำงานบน MS Java ได้อย่างราบรื่น (เอาแค่ง่ายๆ java.exe ยังเปลี่ยนชื่อเป็น msjava.exe เลย รวมถึงไม่สนับสนุน JNI แต่เลือกที่จะพัฒนา J/Direct แทน) ตอนนั้น Sun เลยขอใช้อำนาจศาลสั่งให้ MS หยุดการเผยแพร่ MS Java ครับ
หลังจากนั้นทางไมโครซอฟท์เลยพัฒนา J# ซึ่ง ผมว่าเหมือนพัฒนา Java โดยใช้โครงสร้างภาษาคล้ายคลึง แต่ในรูปแบบที่ไมโครซอฟท์กำหนดเอง เพื่อดึงนักพัฒนาให้มาทางไมโครซอฟท์ (ซึ่งในทางธุรกิจก็เค้าใจได้ ถ้าทุกคนพัฒนาแอพพลิเคชันเป็นจาวาได้ทั้งหมด ดังนั้น ลูกค้าสามารถจะเลิกใช้ระบบปฏิบัติการของไมโครซอฟท์ และเปลี่ยนไปใช้ระบบปฎิบัติการค่ายอื่นๆเสียเมื่อไรก็ได้ และถ้าไปดูแหล่งทำรายได้หลักของไมโครซอฟท์ในขณะนั้น คือ ออฟฟิศและวินโดว์ส ก็คงจะเป็นเรื่องบ้าแน่ๆที่ปล่อยให้ยอมให้จาวามันเกิดบนฝั่งไคลเอนต์ได้ง่ายๆ)
ผมไม่เคยได้ยินว่า MSJava มีส่วนขาดจาก Java ปกติ นะครับ
และเท่าที่ได้ยินมาคือมันซัพพอร์ท Java เต็มกำลัง โปรแกรมที่เขียน Java มาจาก OS อื่นสามารถเอามารันได้เสมอ
ถ้าคิดตามหลักก็ควรจะเปนเช่นนี้ เพราะถ้าไม่สามารถใช้โปรแกรม Java บางโปรแกรมได้ ก็จะมีคนที่ไม่ยอมมาใช้ Windows และจะกลายเปนข้อเสียไปซะมากกว่า
และที่ SUN ฟ้อง ก็เพราะกลัวว่าจะมีคนมาใช้ฟีเจอร์ที่ไม่มีบนแพลทฟอร์มอื่นๆ แล้วการเขียน Java จะไม่ได้ Run Anywhere จริง
ซึ่งก็ตามหลักเช่นกัน ว่าต้องซัพพอร์ทของที่มีอยู่แล้วให้หมด เพื่อให้คนย้ายเข้าง่าย แล้วเพิ่มฟีเจอร์เฉพาะตัวให้คนย้ายออกยาก
ส่วนเรื่องที่ MS เริ่มไม่ซัพพอร์ท Java ได้ยินว่าเปนเรื่องหลังจากตรงนี้ ที่ SUN ฟ้องแล้วแพ้ MS ก็ถึงเริ่มพาลกับ Java และสนับสนุน .NET แทน
ส่วนเรื่องอื่นๆผมก็ทราบมาเช่นนั้น
ส่วนตัวผมเชื่อว่า จริงๆตอนที่สร้าง J# มา MS ก็คงเอาจริง ว่าจะให้มันเปนตัวรับคนใช้ Java และคงจะพัฒนาขนานไปกับ C# ได้เรื่อยๆ แต่ปรากฏว่าผิดแผน ว่าคนใช้ Java ก็หันมาจับ C# ตรง ได้ชิวๆ เลยไม่ได้สนับสนุนต่อจากตอนนั้น
มีครับ ผมเอาตัวที่ชัดๆละกันครับ MS Java ไม่รองรับ JNI ทั้งๆเป็นส่วนหนึ่งของมาตรฐาน Java SE 1.1 ครับ แต่เลือกที่จะพัฒนามาตรฐานของตัวเองที่เรียกว่า RNI (Raw Native Interface) ครับ
ดังนั้นโปรแกรมที่ต้องใช้ฟีเจอร์ RMI จะไม่สามารถทำงานบน MS Java ได้ครับ
นอกจากนั้นจะมีรายละเอียดที่แตกต่างกันเล็กน้อยๆ เรียกว่าไม่สามารถทำ drop-in replacement ได้ (javac vs jvc, java vs msjava)
ถ้าเทียบแล้ว IBM Java Runtime ขณะนั้นยังทำได้ใกล้เคียงกับ Sun Java Runtime ได้มากกว่าที่ MS Java Runtime ทำไว้เยอะครับ
สรุปว่า ข้างบนก็คือ MS ขี้เกียจ นั่นเองครับ อิอิ
@thaina ถ้าจำไม่ผิดตอนนั้น Java ของ MS ชื่อ J++ ครับ และถ้าเขียน J++ จะเอาไป compile หรือรันกับ Java ของ Sun ไม่ได้ด้วย
ใช่ครับ Java ที่เขียนจาก MS เอาไปรันบน Java ของซัน ไม่ได้
ผมหมายถึง Java ของ SUN เอามารันบน Java ของ MS ได้ ครับ
แต่จากข้อมูลของหลายๆท่านก็ดูเหมือนว่ามีข้อจำกัดเหมือนกัน (ไว้ผมจะขอศึกษาดูอีกทีครับ)
ผมว่าลอจิกก็สอดคล้องกันนี่ครับ
เพราะภาษามันไม่สำคัญต่ออนาคตของจาวา ดังนั้นควรเอาทรัพยากรและความมุ่งหมายหลักไปพัฒนา JVM น่าจะดีกว่า
ผมเห็นว่า JVM มันเป็นของที่เก่า ที่ใช้มานานมาก แต่ยังใช้งานได้ ข้ามยุคมานานมาก ถือเป็น ผลงานทางวิศวกรรมชั้นยอด หลาย concept เป็นระดับ classic ถือเป็นแบบอย่างจนมีคน "เอาไปเป็นแรงบันดาลใจ"
เอาไปปรับปรุงทีหลังให้ดีกว่า ตอนนี้ถึงเวลาแล้วที่จะมีการปรับปรุงแก้ไขครั้งใหญ่ ซึ่งผมว่ามีแนวโน้มดีดีหลายอย่าง
เช่น project jigsaw
Agree
แฟนพันธุ์แท้สตีฟจ็อบส์ | MacThai.com
"อนาคตของจาวาไม่ได้อยู่ที่ตัวภาษา แต่อยู่ที่ตัว virtual machine (JVM) "
พูดตรงจุดเลยครับ รัก java เพราะัทั้ง IDE , JVM เอง ไม่จำเป็นต้อง install หรือ Regist เข้า OS
ก็ำทำงานได้นี่ของชอบ ผลกระทบจากการที่ windows เปลี่ยน version ก็น้อยกว่า copy IDE ไปวางแล้ว run ได้เลย
ส่วนตัวผมเกลียดว่าคำว่า VM เหมือนกันครับ ไม่ว่าด้วยภาษาอะไรก็ตามที่ต้องทำงานผ่าน VM รู้สึกมันรำคาญหมด
+1โดยเฉพาะ VM ที่มีขนาดใหญ่ๆ
การ์ตูนน่ารัก
May the Force Close be with you. || @nuttyi
cloud or fog 555
ตั้งแต่มีพวก Web App ผมกลับชอบ Java แฮะ ทั้ง ๆ ที่แต่ก่อนไม่ชอบเลย (โดยเฉพาะบน Windows PC)
อ่านความเห็นมานานแล้ว ยิ่งอ่านยิ่งได้ความรู้ทั้งทั้งที่ตัวผมแทบไม่รู้อะไรเลย
ข่าว java ทีไร มาม่า ทุกที