เดิมที Java มักถูกวิจารณ์ในแง่ของแนวทางในการพัฒนาซอฟต์แวร์ที่มีความซับซ้อน และซอฟต์แวร์ที่ได้ใช้ทรัพยากรระบบมาก แต่ก็ยังเป็นแพลตฟอร์มได้รับความนิยมเนื่องเพราะ จำนวน ความหลากหลาย และขีดความสามารถของไลบรารี จำนวนผู้ใช้งาน ความปลอดภัย ค่าใช้จ่าย (ฟรี) ฯลฯ แต่หลังจากที่ Oracle ได้ซื้อ Java ไปจาก Sun ข่าวไม่ดีต่าง ๆ ได้ออกมาจำนวนมาก ไม่ว่าจะเป็นเรื่องความปลอดภัย (เฟซบุ๊ก, ทวิตเตอร์, แอปเปิล, ไมโครซอฟท์) การฟ้องร้อง และเตือนหรือห้ามไม่ใช้งาน Java ที่สำคัญท่าทีของ Oracle ที่มีต่อเรื่องราวทั้งหมดไม่น่าประทับใจเท่าไร (มีเรื่องหนึ่งที่ผมอ่านแล้วค่อนข้างตกใจคือ "ไม่จ่ายเรา เราไม่แก้บั๊กให้") การจะไปหวังพึ่งพาระบบเปิดจาก OpenJDK ก็พบกับปัจจัยเสี่ยงที่โครงการจะโดน Oracle ฟ้องในภายหลัง กล่าวโดยสรุปคือ Java กำลังจะกลายเป็นแพลตฟอร์มที่ไม่น่าใช้มากขึ้นเรื่อย ๆ
คำถามที่จะเกิดขึ้นคือ "แล้วเราจะใช้อะไรแทน Java?"
ทั้งนี้ต้องเข้าใจว่าปัญหาที่เกิดขึ้นเป็นปัญหาเกี่ยวกับ JVM ดังนั้นภาษาที่ขี่อยู่บน JVM ทั้งหมดเช่น Scala, Groovy หรือ Clojure จึงไม่ใช่คำตอบ
เทคโนโลยีแรกที่คนคุ้นเคยกับ Java คิดถึง อาจเป็น .NET เพราะเป็นเทคโนโลยีที่มีความคล้ายคลึงกันหลายส่วน แต่เมื่อเรากลับไปมองปัญหาที่เกิดขึ้นกับ Java จะเห็นได้ว่า .NET ไม่ใช่คำตอบที่ดีไปกว่า Java มากนัก ไม่มีอะไรรับประกันได้ว่าปัญหาที่เคยเกิดกับ Java จะไม่เกิดขึ้นกับ .NET ซ้ำร้ายการใช้ .NET ยังทำให้ความหลากหลายของแพลตฟอร์มลดลงไปอีก หรือหากจะมองไปที่ Mono ที่เป็นโอเพนซอร์ส ในแง่ของการตอบสนองช่องโหว่ด้านความปลอดภัยอาจทำได้ดีกว่า แต่ความเป็นโอเพนซอร์สของ Mono ไม่ได้หมายความว่า Mono เป็นเทคโนโลยีเปิดโดยสมบูรณ์ และไม่มีปัญหาด้านทรัพย์สินทางปัญญา ในทางกลับกันเราไม่รู้เลยว่าเมื่อไรที่ Mono จะมีปัญหาด้านกฎหมายกับไมโครซอฟท์ผู้เป็นเจ้าของ .NET (สำหรับคนที่ยอมจ่ายและแบกรับความเสี่ยง เพื่อแลกกับขีดความสามารถของเทคโนโลยีและความสะดวกสบายในการพัฒนาซอฟต์แวร์ ถือเป็นสิ่งที่เข้าใจได้ ไม่จำเป็นต้องอภิปรายในจุดนี้)
ดังนั้นเงื่อนไขแรกในการเลือกเทคโนโลยีที่จะมาแทน Java คือควรเป็นเทคโนโลยีโอเพนซอร์สที่ไม่ติดปัญหาเรื่องกฎหมายทรัพย์สินทางปัญญา
คำตอบที่ถูกต้องที่สุด แต่มีประโยชน์น้อยที่สุดคือ "ขึ้นอยู่กับการใช้งาน"
โดยตัวเลือกที่ผมจะนำเสนอ จะแบ่งออกเป็น 3 กลุ่มหลัก ๆ มีข้อดี ข้อเสียแตกต่างกันไป ทำให้เหมาะสมกับการใช้งานที่แตกต่างกันไป โดยทั้ง 3 กลุ่มเป็นเทคโนโลยีแบบโอเพนซอร์ส และทำงานแบบ native ทำให้สามารถใช้งานร่วมกันได้ แบบมีรอยต่อใหญ่เล็กแตกต่างกันไป กลุ่มแรกได้แก่
ตัวเลือกนี้อาจไม่ถูกใจหลาย ๆ คนเพราะสร้างความลำบากในการพัฒนามากขึ้นหลายเท่าตัวเมื่อเทียบกับ Java แต่ก็เป็นตัวเลือกที่เราปฏิเสธหรือมองข้ามไม่ได้ ปัจจุบันยังมีซอฟต์แวร์จำนวนมากที่ใช้ C/C++ ในการพัฒนา ไม่เฉพาะซอฟต์แวร์ระดับรากหญ้า แต่รวมไปถึงซอฟต์แวร์ในระดับการใช้งานด้วย แต่ซอฟต์แวร์ที่ไม่เหมาะสำหรับ C/C++ เอาเสียเลยคือ Web-based Application ด้วยเหตุที่ C/C++ เป็นเทคโนโลยีรุ่นปู่ก็จะมีข้อดีข้อเสียที่ต้องพิจารณาดังนี้
ข้อดี
ข้อเสีย
สรุปโดยรวมคือ การใช้ C/C++ แม้ว่าจะทลายข้อจำกัดได้หลาย ๆ อย่าง แต่ก็แลกมาด้วยค่าใช้จ่ายที่สูงมาก ทางออกคือใช้ C/C++ ร่วมกับเทคโนโลยีกลุ่มที่สองคือ
ภาษาที่อยู่ในกลุ่มนี้ได้แก่ PHP, Python, Ruby, JavaScript และอาจรวมไปถึง Lua ซึ่งภาษาเหล่านี้นอกจากเป็นภาษาที่ได้รับความนิยมค่อนข้างมากแล้ว ยังเป็นภาษาที่ได้รับการพิสูจน์แล้วว่ามีความพร้อมในหลาย ๆ ด้าน สามารถนำมาใช้งานในระดับ production ได้อย่างไม่มีปัญหา ด้วยความที่ภาษาเหล่านี้เป็นภาษา dynamic และค่อนข้างใหม่เมื่อเทียบกับ C/C++ (ส่วนมากเกิดในยุค 1990 ตอนกลาง) ดังนั้นจึงมีความได้เปรียบดังต่อไปนี้
ข้อดี
ข้อเสีย
จะเห็นได้ว่าการนำ C/C++ มาช่วย โดยการเขียนระบบพื้นฐาน จะช่วยได้แค่ข้อจำกัดในส่วนของ performance เท่านั้น และข้อจำกัดต่าง ๆ เกิดจากธรรมชาติของภาษา dynamic เอง เทคโนโลยีในกลุ่มสุดท้ายจะอยู่ตรงกลางระหว่างสองกลุ่มแรก คล้าย ๆ กับที่ Java เป็น
ในระยะหลังแนวทางของภาษาเกิดใหม่ค่อนข้างมีแนวโน้มไปในทิศทางเดียวกันคือ เป็นภาษาแบบ compile ที่มีความยืดหยุ่นในระบบ type มากขึ้น และมีกลิ่นอายของภาษา functional มากขึ้น ภาษาในกลุ่มนี้ได้แก่ Go, Vala, D, Rust เป็นต้น โดยภาษาที่ผมจะโฟกัสมากเป็นพิเศษคือ Vala และ D เนื่องจากทั้งสองภาษามีความพร้อมในการใช้งานมากกว่าภาษาอื่น ๆ ในงานที่ผมทำอยู่ตอนนี้ ผมเลือกที่จะใช้ Vala เพราะมีความพร้อมด้านไลบรารีมากกว่า (Vala ใช้งานไลบรารีของโครงการ GNU และ GNOME ได้เกือบทั้งหมด) แต่ D จะมีข้อได้เปรียบในส่วนของ features ของภาษา
ข้อดี
ข้อเสีย
ไม่มีใครได้ทุกอย่าง ดังนั้นจึงต้องมีการเลือกเกิดขึ้น ข่าวร้ายคือ ทุกตัวเลือกมีความเสี่ยง โดยส่วนตัวผมเลือก Vala เพราะพัฒนาได้ไม่ยากนัก แต่ performance สูง โดยผมต้องเสี่ยงกับปัจจัยที่เกิดจากความใหม่ของภาษา ซึ่งผมวิเคราะห์ว่าปัญหาเหล่านั้นจะมีแนวโน้มไปในทางที่ดีขึ้น เนื่องจากตอนนี้โครงการจำนวนมากของ GNOME ได้หันไปใช้ Vala เป็นภาษาหลัก โดยเฉพาะอย่างยิ่งโครงการในความดูแลของ Canonical ดังนั้นซอฟต์แวร์ใหม่ ๆ บน Ubuntu จะค่อย ๆ ทยอยหันไปใช้ Vala
ทั้งหมดนี้ ตั้งอยู่บนพื้นฐานที่ว่าเราเลือกได้ สำหรับคนที่ใช้ Java เป็นภาษาหลัก และมีโค้ดปริมาณมากที่เขียนด้วย Java ก็ต้องถือว่าไม่มีตัวเลือก ในระหว่างที่รอการอุดช่องโหว่จาก Oracle อยู่นี้ ผมขอให้ทุกท่านโชคดีครับ
Comments
แก้แล้วครับ ขอบคุณครับ
บทความดีมากเลยครับ ชีวิตผมน่าจะจบลงตรง C, Java, C# ส่วน JavaScript ก็หาโค้ดแล้วปรับๆ ใช้เอา เหอะๆ
มีต้องแก้นิดหน่อย ดังนี้
ลิ้งของ Vala ผิดครับ
พิารณา => พิจารณา
กระทัดรัด => กะทัดรัด
เป็นจะอยู่ตรงกลาง ?
เซกซี่ => เซ็กซี่
ทะยอย => ทยอย
แก้แล้วครับ ขอบคุณครับ
อ่านจบแล้ว ชอบบทความครับ มีประโยชน์
ดูเหมือนแอบเชียร์ Vala นะ
+1
+1 ครับ ได้ความรู้ดีมากเลย
ผมยังชอบ C/C++ อยู่ครับ
ถึงเรื่อง data struct จะวุ่นวายหน่อยก็เถอะ = =
ความนิยมเนื่องเพราะ จำนวน ความหลายหลาย --> หลากหลาย
ในเมื่อเพิ่มเกิดใหม่ --> เพิ่ง
C++ กับภาษาสคริปต์ยังไงผมก็ไม่เขียนเป็นหลัก เหมือนกับภาษาใหม่ๆ ถ้าไม่มีแบคเป็นบริษัทใหญ่หรือไม่มี Road Map ยาวๆผมก็ไม่เอาไปเขียนแน่ (แบบ Ruby) เพราะ Learning Curve มันสูงแทบจะไม่มี doc แล้วถ้าเกิดคนไม่นิยมหรือมีแนวโน้มว่าจะตายผมก็เสียเวลาฟรีๆน่ะสิ
ผมว่า C++ ไม่ตายแน่นอนครับ
ไม่ตายครับ แต่มันหลาย compiler ที่จะต้องเขียนให้ถูกกับหลัก Syntax เฉพาะของแต่ละเจ้าอีก แล้วก็ไม่รู้ว่าถ้าเขียนกับค่ายอิสระหรือ OSS แล้วมันจะอยู่ยืดไหม (เว้นแต่ MS VC++ ยืดอยู่แล้ว) พูดไปก็ปวดประสาทครับ
เน้น c/c++ ของ GNU
java มีปัญหาเรื่องความปลอดภัยเฉพาะโปรแกรมที่ทำงานบน browser อย่างเดียวนี่ครับ
ผมไม่แน่ใจว่าปัญหาเรื่องความปลอดภัยของ java เกิดขึ้นหลังจาก Oracle เป็นเจ้าของหรือเกิดปัญหามาก่อน
ถ้าเกิดปัญหาแบบนี้ตั้งแต่แรก ผมว่ามันก็ห่วยเกินไป
ผมว่า java เป็น framework language ที่ดีที่สุดแล้ว และภาษาส่วนใหญ่ก็เหมาะกับเขียนโปรแกรมคนเดียวซะมากกว่า
ติดจากเว็บเพราะในเครื่องมี JVM ครับ
จะรันซอฟต์แวร์ของ Java ต้องมี JVM
เมื่อลง JVM แล้วมันก็จะเปิดการทำงานที่ Browser ด้วย ดังนั้นเพื่อไม่ให้ถูกแฮคผ่านเว็บก็ต้องปิดปลั๊กอิน แต่จะมีซักกี่คนที่จะปิดมัน
แต่ในบทความนี้มันมีความเสี่ยงเรื่องลิขสิทธิ์ด้วยครับ ช่วงนี้ออราเคิลขี้หงุดหงิด วันดีคืนร้ายอาจโทร.ไปเรียกทนายกลางดึกมาฟ้องใครก็ได้
ไม่ได้มีปัญหาเฉพาะด้านความปลอดภัยด้านเดียว
MySQL เองยังไปอยู่กับ Oracle ทำให้เว็บเจ้าใหญ่ กะโดดหนี ไป MiraDB (กรณี Wiki )
มันมีอะไร แหม่งๆ อยู่นะ
แต่ Wordpress ยังไม่หนี :P
ตอนนี้ MySQL เริ่มไม่เสถียรแล้ว วันนี้กรอกข้อมูลลงตารางไม่ได้ drop สร้างใหม่ไม่ได้ บอกมีอยู่แล้ว (ไฟล์ใน folder data ก็ไม่มี ) สั่ง repair success แต่ไร้ความเปลี่ยนแปลง ลบลงใหม่ก็ไม่ได้ เปลี่ยน upgrade version start service ไม่ได้ สุดท้ายลง version เดิมถึงจะทำได้ งงกับมันจริงๆ
ตอนนี้ กำลังลอง Ruby อยู่ครับ มีเรื่องน่าปวดหัวพอสมควร
Opensource - Hackintosh - Graphic Design - Scriptkiddie - Xenlism Project
เท่าที่ผมอ่านหลายๆข่าวมามันมีปัญหาแค่ Java บนเว็บนิครับ
เป็นบทความไอทีที่มีคำว่า รอยต่อ และ รากหญ้า ด้วย
PanJ's Blog
ผมอ่านเจอก็นั่งฮาอยู่หน้าจอครับ 555
ผมก็ฮาอยู่ คิดในใจเล่นๆ ว่าออราเคิลนี่มันช่างอำมาตย์ยิ่งนัก ฮ่าๆ
ยังใช้จาวาอยู่ต่อไปแม้มันจะไม่น่าพิศมัย แต่มันยังทำเงินได้เป็นพออิอิ
ส่วนตัว แล้ว .NET ครับ จบ
แต่จะไปเขียน android หรือ iOS ต้องใช้ตามนั้น
ทุกวันนี้ประกาศเลิก JAVA เป็นทางการละ
คงเหลือไว้ที่ android เท่านั้น
ผมยังไม่เห็นภาษาที่ว่ามาจะทดแทน Java ได้สักตัว นอกเสียจาก .NET
แต่คนที่เขียน Java จะหันไปใช้ .NET หรือ? ผมว่าไม่น่าจะมีเยอะนะ
ผมคนหนึ่งละ ไปละ
ผมก็ย้ายครับ ย้ายหลังจากข่าว Oracle ขึ้นค่าสอบ cert ได้ไม่กี่วัน :p
เห็นด้วยครับเรื่องไม่มีตัวเลือกอื่นที่ดีเท่า .NET
ทั้งจำนวน resource, community แล้วก็ความเป็นภาษา Strong type ซึ่งเป็นข้อดีในการเขียนงานระดับ Enterprise มันเป็นตัวเดียวที่คล้ายกับ Java ที่สุดจริงๆ
เรื่องย้าย ผมว่าถ้าถึงจุดหนึ่ง Java ล่มสลาย (ซึ่งไม่มีทางเกิดขึ้นหรอก แค่ลดความนิยมลงไป) แล้ว Java developer ทั้งหลายจะย้ายจริงๆ รับรองว่าย้ายไป C#.NET เยอะที่สุดครับ ด้วย syntax และ style มันคล้ายกันมากแทบไม่มี Learning curve อะไรเลยในตัว syntax
จะมีบ้างก็คือในตัว Framework แต่ถ้าข้ามมาแล้วจับ .NET MVC เลยก็สบายหน่อย เพราะมันก็อยู่บนคอนเซปท์ MVC เหมือนกัน
อยู่ที่คนเขียน Java แหละครับว่าจะเรื่องมากกับความไม่อิสระ "เท่า Java" ของ .NET รึเปล่า ถ้าไม่ซีเรียสก็ย้ายกันง่ายๆครับ
ย้ายจาก Java มาทำ C#.NET ไม่ใช่เรื่องยากเลยครับ ขอคอนเฟิร์มด้วยคน ดีไม่ดีจะติดใจเลยล่ะครับ
ผมตัดสินใจย้ายเมื่อประมาณห้าปีที่แล้วครับ หลังจากค้นพบสัจธรรมว่า เกาะ Microsoft กินคงไม่อดตาย :D ตอนนี้ก็ยัง Happy กับ .NET ดีอยู่่ กำลังเริ่มใช้ node.js เพิ่มเติม
ผมชอบ C กับ Objective-C ครับ C++ มันรกรุงรัง
c++ แค่ใส่ เรื่อง oop เข้าไปใน c แต่เราก็สามารถเขียน c ใน c++ ได้เลยถ้าเราไม่ใช้ class แต่ถ้าเราออกแบบ class ดีๆ code จะดูเป็นระเบียบน่ะ ไม่รก
อาจจะมีการเข้าใจผิดกันนะครับ Java ที่มีปัญหาคือ ทำงานบนเครื่อง Client และถูกโจมตีผ่าน Web Browser ซึ่งทำงานอยู่ Client Side หรือผ่าน Applet
แต่การใช้งาน Java ที่แพร่หลายจริงๆนั้น ทำงานอยู่บน Server Side แล้วจะหาภาษาใหม่ทำไมหล่ะครับ???
ปัญหา คือ oracle ครับ
อย่าคิดว่า Oracle น่ากลัวขนาดนั้นสิครับ Java ที่ Oracle ขายคือ Java EE ที่ทำงานอยู่ฝั่ง Server ซะส่วนใหญ่ ทั้ง Oracle Fusion Middleware ก็ Built บน Java EE หมดเลย แถม FusionCRM หรือ FusionHCM ก็ Built บน Java EE
แต่ปัญหามันเกิดจากการทำงานของ Java ฝั่ง Browser ซึ่งเป็นสิ่งที่ Oracle จะ terminate อยู่แล้ว Applet ที่ใช้ทำ Oracle Finance หรือ Oracle SCM ก็กำลังเริ่มหาย กลายเป็นหน้าเว็ป จะเห็นว่า Oracle ไม่ทุกข์ร้อนกับปัญหาที่ Java มีรูโหว่ฝั่ง Client
แต่ถ้าเป็นรูโหว่ฝั่ง Server ที่เป็น JavaEE หลักๆหล่ะก็ จะเต้นเป็นเจ้าเข้าแน่ๆ ไม่ใช่แค่ Oracle นะครับ IBM ก็ด้วย เต้นๆ เด้งๆ ยิ่งกว่า Girly Berry อีก
ผมไม่ค่อย ชอบ การบริหารงานของ oracle นะครับ
ไม่ถูกกับค่ายนี้ จริงๆ
ยังคิดอยู่ว่า ถ้า google หรือ IBM ได้ไป คงจะดีกว่านี้ ครับ
IBM ก็เป็นอีกหนึ่งมาเฟียบนโลกไอที ที่ฆ่า Software มาแล้วร้อยพันครับ
ส่วน Google ไม่มีความเห็นครับ เพราะไม่ได้ คลุกคลีอย่างใกล้ชิด
ผมอ่าน บทความนี้ ผมสรุปใจความได้แบบนี้นะครับ
JAVA เป็น ภาษาที่ดีเป็นที่นิยม (ผมเห็นด้วย และก็ชอบ)
และJAVA ภายใต้การบริหารงานของ Oracle ผลออกมาได้น่าผิดหวัง (ผมเห็นด้วย)
สุดท้าย แล้ว JAVA จะถูกลดบทบาท ลงไปแบบต่อเนื่อง (ดูน่าจะเป็นแบบนั้น)
บทความจึงเสนอ ภาษาใหม่ๆ ที่จะมาทดแทน ในความเป็นจริงไม่มีหรอกครับ
อะไรที่มี คุณ สมบัติ แบบ java
JAVA เป็น ภาษาที่ออกมาแบบมาดี
แต่การพัฒนา มีปัญหา
ช่วงก่อน จะมาเป็น oracle SUN ดู ตันหมดมุขที่จะพัฒนา JAVA
ตอนย้ายมาหา oracle ยังแอบหวังว่า จะปลุกผี
สุดท้าย ก็ไม่ได้เรื่องตามเดิม
ส่วน MS พัฒนาเก่งมาก ตอนนี้ C# นำ JAVA แบบไม่เห็นฝุ่นแล้ว
ผิดหวังกับ oracle สุดๆๆครับ
ขอนอกเรื่องนิดนะครับ space bar เสียเหรอครับ?
เทคโนโลยีไม่ผิด คนใช้มันในทางที่ผิดนั่นแหละที่ผิด!?!
.NET เคย scale ขึ้นเหรอครับ ผมว่าแค่เรื่องนี้ก็ไม่ต้องพูดต่อแล้ว ถ้าจะบอกว่า tool ช่วยให้เขียนง่ายขึ้น แปลว่าทำ software ยังไม่จบ life cycle ครับ
แตกไปเรื่อง tool ได้ไงหว่า.. ชักเริ่มบานปลาย ;p
แต่ tool ไม่ได้มีแค่ coding tool นิ.. มี tool ทั้ง lifecycle นี่นา
ปล. ยิ่งพูดยิ่งเสียดาย rational .. ทีแรกตอน ibm เอา rational ไปใหม่ๆ เคยว่าจะลองใช้จาวามากขึ้น ดูเผินๆ แล้วครบวงจรดี แต่ผ่านมาเนิ่นนานมันไม่เนียนซักที ใช้แล้ว "รอยต่อ" เพียบ รุสึก overhead ที่เพิ่มมันไม่ค่อยคุ้มเท่าไหร่ (แถม "รอยต่อ" ระหว่าง rational กับ platform อื่นนี่ยิ่งถ่างเลย.. ไปๆ มาๆ เลยพลอยเลิกใช้ rational ไปด้วย เศร้า -.-)
แค้นฝังใจเลยครับ
Rational เคยใช้ครั้งแรกตอนเป็น Rational Rose อึ้งทึ่งมาก
โอ้โห... สุดยอด UML พ่วงต่อไปถึง Engineering ทำได้ครบสูตรมาก
พอเข้ามาอยู่ใต้ชายคา IBM โดนเปลี่ยนชื่อเป็น RSA ...... wtf !!!
หมายถึง Scalability เพิ่อจะรับ Load ได้มากขึ้นรึเปล่าครับ
ถ้าเรื่องนั้นผมว่าวิธี Scale มีหลายแบบครับ อย่างเช่นใน Azure ใช้วิธี Scale ออกด้านข้าง เพิ่ม Instance เข้าไป หรือจะเขียนให้ใช้ประโยชน์ของ CPU หลาย Core ก็จะมี Parallel
พูดถึง ibm แล้วนึกถึง informix กับ rational (ส่วน lotus นี่กึ่งยิงกึ่งผ่าน) .. แต่ของที่ ibm เลี้ยงไว้รวมถึงของที่สร้างขึ้นมานี่ แต่ละอย่างส่วนใหญ่ถือว่าโอเคเลย (ส่วนฟาก oracle นี่ นึกไม่ออกแหะ ว่ามีไรที่สามารถ "กด like" ให้ได้โดยไม่ตะขิดตะขวงใจ)
ปล1 พูดถึงเฉพาะส่วน product นะ.. ส่วน sale กับ service ไม่เกี่ยว
ปล2 ส่วนฟาก google นี่ ที่โดนกับตัวแบบจังๆ คือ docverse .. อีกตัวที่ลุ้นชะตาอยู่คือ nik
ibm ก็ไม่ได้ทิ้ง informix นะครับ ยังขายอยู่ปกติ แต่ ibm จะนำมารวมกับ DB2 หมดแล้ว
คือไม่ถึงกับโดนทิ้งโดนดอง แต่รุสึกว่า informix กับ rational มัน "หนืด" ไปเยอะตั้งแต่ตกอยู่ในมือ ibm .. หรือว่าคิดไปเองหว่า :?
แถม neutrality ยังลดไปเยอะมาก.. แต่มันก้อแหงล่ะ โดนซื้อไปแล้วนินา >.<"
ถ้าไปอยู่ในมือ Google แล้วนอกจาก Java ที่มีทั้ง Solaris แล้วก็ฮาร์ดแวร์ทั้งหลายเขาจะบริหารยังไง เพราะ Oracle เขาก็มีเหตุผลพอที่จะซื้อไว้ integrated เข้ากับ product ที่มีอยู่เดิม ส่วน IBM ก็ไม่ต้องห่วง ถ้าไม่ดองก็ทำเหมือน Oracle
แต่ถ้าเป็น Google เนี่ย จะให้เขาขอดเกล็ดเหลือแต่ Java กับ MySQL เนี่ย ซื้อมาก็ไม่คุ้มครับ
ผมเห็นด้วยนะ google ไม่เอาหรอก เอาไปก็ไม่ได้กำไร
ถ้าเอาไปจริงคงเพื่อ มนุษยชาติ
ถ้าพี่ กู คิดครองโลกจริงๆ ก็ไม่แน่นะครับ อิอิ
มันไปเรื่องTool ได้ไงหว่า
.NET มี Tool ที่ยอดจริง แต่ที่สื่อออกไม่ได้ ไม่ได้จะบอกว่า too ดีกว่าฝั่งjava (ไม่ต้องบอกก็รู้กันอยู่แล้ว)
แต่ตัว C# เองเนียละ ที่พัฒนาก้าวกระโดน จริงๆกว่า JAVA7 จะมา แถมมาแล้วยังตัดบ้างอย่างอีก
และ framework ที่MS ออกแบบช่วงหลังๆ เนียยอดมาก
MVC4 เนียเรียกว่า ชาบูเลย
ที่อื่นผมไม่รู้นะ แต่ในไทยนี่ผมเห็นจะๆเลย หน่วยงานด้านสาธารณะสุขใช้โปรแกรม JHCIS ฐานข้อมูลก็รก โปรแกรมก็รก แค่ติดตั้งยังสับสนเลย แจ้งอัพเดทกันผ่านเว็บบอร์ดอีก กว่าจะตามเจอ กว่าจะทำงานได้ ปวดหัวมาก
Java Applet หรือ Java ที่ทำ RIA น่าจะถูก Oracle ตัดหางปล่อยวัดครับ เพราะ core หลักของ Oracle อยู่ที่ Java EE
ดังนั้นต้องทาน ทำใจ แอสไพริน ครับ
เพื่อความเข้าใจตรงกัน โปรแกรม JHCIS นี่เป็น Java Application ครับไม่ใช่ Java Applet บนเว็บ ดังนั้นน่าจะไม่เข้าข่ายประเด็นนี้
อ่าวเหรอ แอบ search google เห็น Class Applet อยู่ หน้าแตก ฮาๆ :P
เปลี่ยนไปใช้ ภาษา มาม่าดูสิคับ คุณ chaiwat :-)
+1 เสริมความเห็นนี้ครับ ในฐานะที่เป็นทั้ง j2ee และ .net developer ไม่คิดว่าจะต้องหาอะไรมาแทน java นะ
ตัวปัญหาคือ java applet เท่านั้น คิดว่ามีหลายคนคงแยกไม่ออก
ประมาณ 10 โปรเจคของผมเป็น j2ee + tomcat + linux ไป 9 แล้ว อีกอันเป็น .net + iis + windows เพราะโดนสเปคบังคับ ที่ส่วนใหญ่เลือกเป็น java ก็เพราะปัจจัยเรื่องราคากับความยืดหยุ่นของ library เป็นหลัก
+1 ถูกต้องแล้วครับ ข่าวที่ออกมารู้สึกว่าจะทำให้คนทั่วไปเข้าใจผิด ซึ่งผมดูแล้วเสมือนหนึ่งตั้งใจโจมตีแพล็ตฟอร์ม JAVA
มันไม่ใช่แค่เรื่องความปลอดภัย แต่มันรวมไปถึงการคุมคามของ oracle ด้วยครับ
ยังไม่ชิน กับการคุมครามของมาเฟียวงการไอที อย่าง Oracle อีกเหรอครับ
+1 อย่างมาก
ผมว่าข่าวที่ออกมามันก็มีผลครับ เด็กๆใหม่ๆที่จะเริ่มศึกษา มาเจอบรรยากาศ Java ตอนนี้เข้าก็คงเริ่มลังเลละ ผมว่า Java สมัยแรกๆก็โดนโจมตีเทียบกับ C++ เหมือนกัน จน Programmer รุ่นใหม่ๆที่เอา Java ไปใช้กันเยอะ มันก็เลยเกิด ถ้า Java ยังเป็นแบบนี้อีกซักสองสามปีผมว่ามีดับ
เรื่องที่เกิดจากปัญหาความปลอดภัย ณ เวลานี้ จริง ๆ ผมไม่ concern มากนะครับ เพราะทุกซอฟท์แวร์ทุกระบบมันมีปัญหาอยู่แล้ว และผมเชื่อว่าปัญหานี้จะถูกแก้ไขแน่นอน การย้ายถิ่ฐานที่มั่นเพราะเรื่องนี้เรื่องเดียวจึงเป็นเรื่องไม่สมเหตุสมผล ดังนั้นประเด็นที่ว่าตำแหน่งของความปลอดภัยจะอยู่ตรงไหนกันแน่ จึงไม่น่าสนใจพอ ๆ กัน (อีกทั้งหน่วยงานที่ออกมาให้ความคิดเห็นก็ชี้ไม่ชัด บอกแค่ว่าเจาะผ่านปลั๊กอินของบราวเซอร์)
ประเด็นสำคัญคือหลังจากนั้นต่างหาก ท่าทีของ Oracle ที่มีต่อเรื่องราวทั้งหมดแย่มาก ๆ เวลาผ่านล่วงเลยมาจนตอนนี้ คนใช้เดือดร้อนกันไปมากมาย แต่กลับไม่มีมาตราการที่น่าพอใจออกมา คำถามที่ผมต้องคิดคือ หากถึงเวลาจำเป็นจริง ๆ ชี้เป็นชี้ตาย แล้วต้องขอ bug fix จาก Oracle จะออกมาให้รูปไหน คาดว่า Oracle คงปล่อยให้ผมตายไป ในข้อเขียนก็มีลิงก์ตัวอย่างให้ดูกรณี CORBA แล้วผมจะหาความเชื่อมั่นกับบริษัทที่มีนโยบายอย่างนี้ได้ยังไง
ในเรื่องของทรัพย์สินทางปัญญา ท่าทีของ Oracle ก็ไม่ได้ดีไปกว่ากันเลย ทั้งเรื่องที่มีปัญหากับ Apache และกับ Google ผมเชื่อว่าเราจะได้ใช้ Java ฟรีไปอีกนาน แต่ด้วยเงื่อนไขแบบไหน อันนั้นเป็นสิ่งที่ต้องลุ้น แต่โดยแนวทางแล้วผมประเมินว่าจะออกในรูป ใช้ฟรี แต่หากขายของที่ทำจาก Java อาจต้องจ่าย หวังว่าผมจะประเมินผิด
จริงๆ เป็นปัญหาของ Oracle ตั้งแต่ต้นอยู่แล้วครับ ไม่ใช่แค่ Java แต่ Software อื่นๆ ก็เป็นครับ จริงๆ Java เกิดจากวิธีคิดที่ดี ของคนทำ software ที่ต้องการแก้ปัญหาจริงๆ แต่ถูก Acquire โดยพ่อค้าที่หวังแต่กำไรครับ
ตัวผม รู้จักทั้ง Java และ Oracle ดี เพราะลักษณะงานที่ทำจะใกล้ชิดกับ 2 อย่างนี้มาก จึงขอพูดง่ายๆว่า อย่าคาดหวังกับ Oracle ครับ Oracle ปล่อย Software ตายมานับร้อยนับพันแล้ว
แต่ก็อย่าหมดศรัทธาในความคิดที่ดีที่จะแก้ปัญหาครับ แต่แค่ปัญหาที่เกิดขึ้น ยังไม่ใช่ key ที่ว่าจะย้ายจาก Java ไปภาษาอื่นครับ เพราะปัญหาไม่ได้อยู่ตรงจุดแข็งของ Java ดังนั้นจึงใช้ต่อไปได้ครับ
Java เกิดจาก SUN หรือ Standford University Network ซึ่งปรัชญาเค้าก็ define ไว้ 5 ข้อเป็น principals ในการออกแบบภาษา ถ้า Java ไปไม่ไหวจริงๆ ก็จะมีคนหยิบปรัชญานี้ มาสร้างภาษาใหม่ๆ ที่ยังคงปรัชญาเดิม แต่แก้ปัญหาได้มากขึ้นครับ
ผมศรัทธาใน OpenSource มาทั้งชีวิต และเชื่อว่า รากของเทคโนโลยีจริงๆ คือการแก้ปัญหาให้มนุษย์ แต่บางช่วงก็มีพ่อค้าหัวใสมาปั่นป่วนบ้าง แต่มันก็อาจจะทำลาย เพื่อให้เกิดการสร้างสิ่งใหม่
ผมก็เขียนไว้ครับ คนที่ไม่มีทางเลือกคือไม่มีทางเลือก หากซอฟท์แวร์ที่ผมมีอยู่ในมือราคาสิบล้าน ต่อให้มีปัญหายังไงผมก็ดิ้น เป็นเรื่องปกติ และแน่นอนว่าที่ผมเขียนเพื่อนำเสนอต่อคนที่ยังเลือกได้ และการเลือกทุกอย่างต้องชั่งน้ำหนัก ทุกคนมีเหตุผลในการเลือก อยู่ที่ใครยินดีจะรับความเสี่ยงแบบไหน
ครับ แค่เห็นว่า core value จริงๆของ java ยังไม่กระทบ ส่วน Oracle ไม่ได้คุกคามขนาดนั้น จะรีบหาภาษาใหม่ทำไม???
แล้วภาษาใหม่มีปรัชญาเหมือน java รึป่าว???
ประโยคสุดท้ายนี่คือ แนวธุรกิจของ Oracle แต่ตั้งเดิมเลยครับ โหลดโปรแกรมใช้ฟรี เต็มที่กับชีวิต แต่พอจะเอาไปทำขาย ต้องเสียค่า CAL ละ เมื่อ Java กลายเป็นระบบปิดมากขึ้น งานที่พัฒนาด้วย Java ก็จะราคาแพงขึ้นตาม ส่วนความปลอดภัย คนจะมองว่า สูงกว่าเดิม ซึ่งอยากบอกว่า Oracle Database เป็นฐานข้อมูลที่ Bug เยอะ พอ ๆ กับ MS SQL Server ยิ่งปิดก็ยิ่งมี Bug เยอะ และหลบซ่อนอยู่ ปิดข่าวด้วยการตลาด และ อัตราเงินเดือนของคนทำงานกับ Java เฉกเช่นเดียวกันกับ ABAP
คำตอบของข้า คือ ประกาศิต
ข้อเด่นประการหนึ่งของ Java ที่นอกเหนือจากเรื่องของ Object Oriented ก็คือ การที่มันเป็น Hardware Independent โค้ดที่ Compile ออกมามันเป็น Intermediate code ที่ถูก Execute ด้วย JVM อีกที . ถ้าจะหาอะไรมาแทน ก็คงต้องมีลักษณะแบบเดียวกัน คือ เป็น OO Language และ Compile ออกมาเป็น P Code เหมือน ๆ กันถึงจะรักษาจุดเด่นไว้ได้. ที่สำคัญ ต้องมีตัวที่สามารถ Compile Java Source ทั้งหมดให้ลงมาอยู่ใน Platform ใหม่นี้ได้ มิฉะนั้น จะต้องทุ่มทุนอีกมหาศาลในการเขียน Software ขึ้นมาใหม่ทั้งหมด หรือไม่ก็ มีตัวทำ Reverse Engineer เอา P-Code ของ Java ที่มีในปัจจุบันให้ไปอยู่บน Platform ใหม่ซะ พร้อมสร้าง Source Code ของ Platform ใหม่ ซึ่งก็คงยุ่งยากอีก เพราะคงไม่มีใครอยากมานั่งแกะ Source Code ที่ถูก Generate โดยไม่มี in-source documentation. วิธีแรกที่ทำ Cross Compilation น่าจะดีกว่า
เจ้าของจาวาเขาดุด้วยคับ
งานนี้ไงคงขอฝากความหวังไว้ที่กูเกิลนั่นแหละ รายนี้คงมีแรงจูงใจมากสุดแล้ว และมีพลังพอจะไปเจรจากับออราเคิลด้วย.. เพียงแต่ถึงขั้นจะเอามาฟรีๆ เลยมันคงไม่เหมาะอยู่ดี ก้อได้แต่หวังว่าจะสรุปตัวเลขและแนวทางที่เหมาะสมกันได้โดยไว
เซงพ่อเลี้ยงใจร้าย(Oracle) ดูแลลูก(Java)ไม่ดี เอาแต่จะใช้ประโยชน์
Java ไม่น่าอยู่ในมือ Oracle เลย ให้ตาย
Always bet on JavaScript ครับ
pittaya.com
ถูกต้อง
Python จงเจริญ ฮิ๊วววว
twitter.com/djnoly
รอให้ IDE GUI ดีๆออกมาไม่แน่ครับ ^^ GUI ทีเล่นเอาเหนื่อยเลย
ก็ไม่ต้าองใช้ ใช้เป็น Web แทน เขียนง่ายดี
ผมว่าตลกดีนะครับที่เขียนภาษาอื่นแต่ยังใช้ Eclipse กับ NetBeans.
JavaScript rules!!
+10!
ผมชอบ Node.js มากมาย
ขอบคุณสำหรับความรู้ของภาษาทั้งสามกลุ่มครับ
ตราบใดที่ Google ยังไม่เปลี่ยน ผมก็ยังใช้ java อยู่
ถือหางงูเห่ากับทับทิมต่อไป...
Python == งูเหลือม,งูหลาม
ข่าวเมื่อไหร่ : แล้วก็มีวันนี้ กูเกิ้ลซื้อจาว่าจากออราเคิลแล้ว
ปัญหาคือ เมื่อไหร่เนี่ยสิ -_-'
//เตรียมลี้ภัย
ปัญหาความปลอดภัยคือ java applet มันเป็น java awt/swing ที่ทำงานบน web browser
และถูกจำกัดความสามารถเพื่อความปลอดภัย อะไรก็ตามที่มันทำงานบน web browser ได้
มันก็อันตรายและมีความเสี่ยงสูงหมดครับ ยกเว้นภาษา script ที่ web browser รองรับ
ซึ่งจะมีความเสี่ยงน้อยลงมาเพราะมันทำงานอยู่บน web browser ครับไม่ใช่บนระบบปฏิบัติการ
เราโดยตรง เราอาจจะเคยได้ยินว่า Adobe Flash ก็มีปัญหาเช่นเดียวกัน แต่ธุรกิจหลักของเค้า
คือตัว Flash Player เอง และขนาดก็ไม่กี่ MB ซึ่งมันก็ไม่ยากลำบากนักในการดูแล
ธุรกิจหลักของ Oracle ไม่ได้เกี่ยวข้องอะไรกับ Java Applet เลย งานส่วนใหญ่ทำงาน
บน server และจำนวน code ที่ต้องดูแลนั้นมากมายมหาศาลอยู่แล้ว การทุ่มงบมาดูแล
ในส่วนที่ไม่ก่อให้เกิดรายได้กับบริษัทก็ดูจะไม่ make sense นักสำหรับผู้บริหาร (Oracle)
แต่ดูเหมือนจะเข้าใจผิดเพราะมันสร้างชื่อเสียให้กับบริษัทมากมาย จนกระทั่งคนเป็นจำนวนมาก
คิดว่า Java เป็นระบบที่ไม่ปลอดภัย ซึ่งจริงๆแล้ว ไม่มีภาษาไหนปลอดภัย ลองจินตนาการ
ว่ามีคนสร้าง Python Applet, Ruby Applet ให้ทำงานได้บน Web browser ได้
รับรองพรุนกว่า Java Applet แน่นอนถ้าไม่ได้มีการทดสอบและเขียนให้ครอบคลุมพอ ซึ่ง
มันไม่ง่าย ใช้เวลามหาศาล และต้องการความเชี่ยวชาญระดับสูง
บางคนบอกว่า Java มีช่องโหว่เยอะ ไปใช้ Ada, ML, LISP, PASCAL, COBOL,
หรือ FORTRAN ดีว่า เห็นด้วยครับ ไปโลด Ada เป็นหนึ่งในภาษาที่มีความปลอดภัยสูงมาก
strong type รุ่นเก๋าที่หลายหน่วยงานไว้วางใจ (ความปลอดภัยใน context นี้ คนละ
ความหมายกับ ช่องโหว่เยอะบน Java นะครับ ถ้า Ada จะไปทำ Ada Applet ก็คงจะ
พรุนสักวันเหมือนกัน)
สำหรับตอนนี้
วิธีแก้ปัญหาง่ายมาก คือตั้งให้ java applet มีเป็นค่าเป็น disabled โดย default
บน web browser เหมือน ActiveX. ซึ่งตอนนี้หลาย web browser ก็ได้ทำแบบ
นั้น คิดว่าปัญหาคงจะซาลงไม่นาน หลังจากที่คนเหล่านั้นได้ update web browser
ของตัวเอง
อธิบายไปแล้ว
ผมได้อ่านแล้วก่อนเขียนแล้วครับ ขอบคุณครับ
สิ่งที่ผมจะสื่อคือต้องการจะให้รู้ว่าทำไมมันถึงมีช่องโหว่ครับ ซึ่งสิ่งที่คุณเขียนมา
ผมเห็นว่ามันไม่ชัดเจน เลยอยากเขียนให้ทุกคนที่บังเอิญมาได้อ่านเข้าใจได้มากขึ้น
ซึ่งบางทีสิ่งที่ผมเขียนอาจจะซ้ำๆกับสิ่งที่หลายๆคนรู้อยู่แล้วแต่ผมเชื่อว่ามีคนที่ยังสับสนอยู่
"(อีกทั้งหน่วยงานที่ออกมาให้ความคิดเห็นก็ชี้ไม่ชัด บอกแค่ว่าเจาะผ่านปลั๊กอินของบราวเซอร์)"
ประเด็นนี้ ผมเห็นด้วยว่ามันต้องผ่าน plugin browser ครับ เพราะถ้าไม่อย่างนั้นมันคง
เป็นวิกฤษระดับโลก มีกี่รายที่ใช้ java เป็น web server ที่รู้ๆสถาบันทางการเงิน
เป็นจำนวนมากใช้ ไม่อยากนึกเลย
ผมขอเพิ่มนิดนึงใน comment ของตัวเอง
ลองคิดดูว่าถ้า hacker ไม่เจาะผ่านทาง Browser จะทำอย่างไร?
อาศัยช่องโหว่ของ OS? นั่นก็เป็นช่องโหว่ของ OS ไม่ใช่ Java ถ้า hacker สามารถ
เอา code ไปวางให้ทำงานบนเครื่องเป้าหมายได้ ทุกอย่างก็จบ กรณีนี้ก็เหมือนการเปิด
file attachment ที่มากับ email ประเด็นมันคือทำอย่างไรให้สามารถนำ code
ไป run ที่เครื่องเป้าหมายได้ มันต้องมีช่องทางครับ ไม่ Browser ก็ OS อย่างแรก
ไม่ค่อยน่ากลัวเพราะแค่ปิดการทำงาน แต่อย่างหลัง Java หรือไม่ก็ไม่เกี่ยวแล้ว ถ้า
สามารถวาง code บนระบบได้ ก็เขียน virus ด้วย C แล้วไป compile
ที่เครื่องเป้าหมายโลด จะได้ optimize ตรงกับ arch ของระบบ hacker
คงจะฟินถ้าทำอย่างนั้นได้
อาจจะมีคำถามอีกว่าทำไมเจาะผ่าน Browser ถึงไม่ใช่ปัญหาของ Browser?
เพราะมันไม่ได้ทำงานบน browser แต่มันทำงานโดยตรงบน OS โดยผ่าน interface
บางอย่างที่ browser อนุญาติให้ ซึ่งค่อนข้างหลวมนั่นคือปัญหา
ยาว ขี้เกียจอ่าน แต่มากด like ให้เพื่อน
+1000000
C#, .NET, Mono คือ คำตอบ ณ เวลานี้ของผมครับ เพราะขีดความสามารถในการ Port โค้ด Java ที่มีปัญหามาได้ และการใช้ Memory, CPU ตัว Mono ทำได้ดีกว่ามาก ตอนนี้ Mono รองรับ ASP.NET MVC3 แล้วครับ
คำตอบของข้า คือ ประกาศิต
ไม่เคยลอง mono เลยครับ มันใช้งานได้จริงเหรอครับ
แล้ว asp.net ธรรมดา work ไหมครับ
แล้วใช้ EF ได้ไหม
แล้วเครื่องมือจะ ok แบบ VS เหรอครับ
ขอบคุณผู้เขียนบทความและทุกคอมเม้นครับ มีประโยชน์มากๆ
สิ่งที่ผมต้องการจะสื่อ คือ ด้วยเหตุผลที่กล่าวถึงในบทความ ผลกระทบน้อยมากครับ ไม่ถึงกับทำให้น่าใช้น้อยลง และถึงย้ายได้ก็ยังไม่จำเป็นต้องย้ายครับ
ประเด็น:
ปล: ผมชอบ JVM แต่ไม่ชอบ java
ย้ายซะเถอะครับ ..... มันไม่เป็นของ Public อีกต่อไปแล้ว ทุก ๆ อย่างในโลกนี้มีเกิด แล้วก็มีตาย ตอนนี้ก็น่าจะเป็นเวลาที่ดีที่จะปล่อยให้มันตายไปซะที จาวาถึงจะดี แต่ก็ไม่ใช่ดีที่สุด มันอาจจะดีที่สุดในเวลานั้น และนั่นก็เกือบยี่สิบปีแล้วมั้ง มันโบราณไปเรียบร้อยแล้ว จะไปติดหนึบกับของโบราณ ๆ ล้าสมัยอย่างนั้นอยู่ทำไมกันหละครับ
โดนบางคนบอกครับว่า Java ยังเหมาะสมกับการเรียน OOP ในชั้นเรียน เอาเข้าจริง ผมบอกเลยว่า C# หัดตั้งแต่ตอนนี้แหละรุ่งกว่า มันมีทุกอุปกรณ์แล้วตอนนี้แม้แต่ PS4
คำตอบของข้า คือ ประกาศิต
ถ้าแบบนั้นให้เขาเรียน Turbo C# ก่อนนะครับ ถ้าไปเขียน VC# ตั้งแต่เริ่มเลยก็ฉิบหายกันพอดี
มันเป็นภาษาที่มีค่าใช้จ่ายน่ะครับ ... จริงอยู่ว่ามันมีรุ่น Express แต่ถึงเวลาที่จะเอามาใช้ได้ระดับ production แล้วก็ต้องเสียเงินซื้ออยู่ดี แต่ Java นี่ถ้าเป็นแล้วมันจะไปยาวๆ มาก
พูดไปก็รู้สึกประหลาดๆ กับคำพูดตัวเองครับ ... ในไทยงาน C# น่าจะหาง่ายกว่าเยอะ
java หาง่ายกว่าครับ ส่วน C# Express ทำในเชิงพาณิชย์ได้แต่ห้ามเอา Express ไปขายเด็ดขาดครับ
เพื่อนผมตอนนี้จะเปลี่ยนงานยังหางานใหม่ไม่ได้เลยครับ เพราะดันมาสาย C#
จริงเหรอครับ ผมว่า C# งานเยอะน้า พักนี้
ในแง่การเรียน c# จะทำให้เด็กโฟกัสกับ programming ได้มากกว่าครับ
เรียน java นี่ต้องตบตีกับ environment ที่ไม่ค่อยจะแน่นอนนของมันก่อน
อ่านแล้วขำ นักศึกษา ป โท ที่ผมไปสอน ยังมึนกับ java home 55555
JAVA_HOME นี่ตัวจี๊ดเลยสำหรับคนหัดใหม่ ไหนจะ javac อีก
ข้อดีของจาวาก่อนนี้เลย.. เพราะมันเปิดกว้าง เลยทำให้มีตัวเลือกที่หลากหลาย
ส่วนข้อเสียของจาวาก่อนนี้คือ.. มันเปิดกว้าง เลยทำให้มีแนวทางที่หลายหลาก
ถ้าออราเคิลจะปิดแบบแอปเปิลยังพอโอเค.. แต่ตอนนี้ดันปิดแบบ หวงก้าง นี่ซิ
นั่นแหละครับ ประเด็น java ไม่ได้ดีที่สุดสำหรับทุกเรื่อง ถ้าจะย้ายด้วยเหตุผลอื่น เช่น ต้องใช้ green thread แบบนี้ก็สมควรย้าย แต่ถ้าย้ายเพราะแค่ java ถูก oracle ยึดครอง ผมเห็นว่าจะเป็นการตื่นตูมเกินไป รอให้เกิดเรื่องที่กระทบจริง ๆ แล้วค่อยย้าย ดีกว่าย้ายไปเสี่ยงกับของใหม่ที่ระบบจะล่มหรือคนจะเลิกเมื่อไหร่ก็ไม่รู้ (ถ้าเป็นงานเล็ก ๆ เสี่ยงหน่อยก็คงไม่มีปัญหาอะไร)
ส่วนเรื่องความเก่าและโบราณ ผมคิดว่าคุณกำลังพูดถึง java as a programming language ครับ แต่ java ที่ผมพูดถึง คือ java as a platform (JVM) ซึ่งบน JVM นอกเหนือจาก java แล้ว ก็มีภาษาอื่นอีกหลายแนวให้เลือก ซึ่งภาษาเหล่านี้ก็ไม่ได้โบราณเลย ผมก็ไม่ได้เขียน java มานานแล้วเหมือนกันแต่ยังใช้ JVM อยู่
JVM ก็ไม่ได้ดีเลิศไร้ที่ตินะครับ มีหลายอย่างเหมือนกันที่ทำให้ผมอยากย้ายหนีออกไป แต่ไม่ใช่เรื่อง oracle หรือ security ของ applet แน่ ๆ
+10000
.NET เป็นคำตอบสุดท้าย ตาม Microsoft ไว้น่าจะสบายใจที่สุดแหละ
ใช้เท่าที่ Mono รองรับไปก่อนครับ ตาม MS มากไประวังจะเหมือน VB6
คำตอบของข้า คือ ประกาศิต
เหมือน VB6 นี่คือยังไงหรอครับ
แต่ไงคงต้องจับตาแนวทางที่ต่อๆ ไปให้ดีเช่นกัน.. ดูๆ แล้วภาษาเริ่มต้นจะเน้นไปที่ js มากขึ้น ส่วนโลก .net จะโอนไปที่งานที่ต้องการ "รีด" เปนพิเศษ (กินพื้นที่ของกลุ่ม C มากขึ้น แล้วขยับไปอยู่ตรงกลางแทน เช่นส่วนที่เน้นเรื่อง perf เน้นการ scale)
ผมคนหนึ่งที่เริ่มต้นด้วย VB6 นะครับ ตอนนี้เป็น VB.Net แล้วก็ไม่เห็นจะมีปัญหาอะไรนิครับ เขียนง่ายกว่าเดิมอีก
VB6 โดนทิ้งไงครับ ก่อนหน้านี้ซัก 2 - 3 ปี ผมเห็น Microsoft แจกหนังสือ VB.NET ฟรี ส่วน C# ต้องเสียเงินซื้อ VB.NET ก็ดีครับ ง่ายดี แต่พอต้องเขียนอะไรเยอะ ๆ โดยเฉพาะ Lambda Expression ผมว่า C# มันเขียนสั้นกว่า
คำตอบของข้า คือ ประกาศิต
Lambda Expression คือสุดยอด JAVA อาย 555
ผมว่า VB6 มันตายเพราะ Limitation และความเก่าของเทคโนโลยีมากกว่าครับ เท่าที่ผมเห็น VB6 โปรแกรมเมอร์ก็ย้ายมาเป็น VB.NET กันไม่ได้ยากมากมาย
สำหรับคนที่ไม่ใช่สายเทคนิคัลหรือนานๆ เขียนโค้ดที.. การอ่านเขียนภาษากลุ่ม VB นั้นทำได้ง่ายกว่า
อีกจุดคือแม้โค้ดจะดูไม่ค่อยกระชับ แต่ถ้าใช้พวก snippet/template/shortcut/etc คล่องๆ แล้ว จำนวนการคียจะพอๆ กัน
ocaml เดะ
ปกติ .NET เขียน C# อยู่ แล้วก็ C/C++
สงสัยมานานแล้วว่า Java เริ่มปิดมากขึ้น ต่อไป Andriod จะทำอย่างไร
มีโอกาสเปลี่ยนไปเขียนด้วยภาษาอื่นไหม?
อีกอย่าง ถ้าเปรียบเทียบอนาคตภาษา Go กับ Pyton เป็นอย่างไรบ้างครับ
และไลเซ่นส์อนุญาตฺเหมือนกันไหมครับ ?
Android ค่อนข้างผูกกับ Java เยอะเลย โอกาศเปลี่ยนนี่คงต้องสร้าง OS ใหม่ได้เลย
@fb.me/frozenology@
คงไม่ถึงขนาดนั้นครับ Mono Android มาแล้ว
Google ยังไงก็ Java ต่อไปครับ เพราะเขาบอกเองว่า แค่ยืมภาษา Java มาใช้
คำตอบของข้า คือ ประกาศิต
ใครอ่านข่าวแล้วคิดว่า Java ผิดนี้คิดผิดนะครับ Java ไม่ผิด แต่เราอยากไล่เตะก้น Oracle มากกว่า
โปรเจ็คอื่นๆ ไม่ว่า MySQL หรือ Openoffice ก็ล้วนทำให้คิดได้เป็นอย่างเดียวว่าไม่น่าตกไปอยู่ในมือ Oracle เลย ไม่งั้นคงจะดีกว่านี้
มันไม่ง่ายเลยที่จะทำ GIF ให้มีขนาดน้อยกว่า 20kB
Oracle พยายามจะหาประโยชน์ในรูปของตัวเงินจาก Java มากกว่า
โดยที่ยังพัฒนา Java SE/EE ต่อบนแพลตฟอร์มหลักๆและยังให้โหลด SDK/Runtime/RI ได้ฟรี แต่ในอีกมุมก็พยายามเก็บเงินจากการใช้ในเชิงพาณิชย์ระดับที่มีปัญญาจะจ่าย เช่นถ้าต้องการ patch เพื่อแก้บั๊ก Oracle Java Runtime ที่มีผลกระทบการใช้งาน production ทันที โดยไม่รอวงรอบอัพเดท (ที่ไม่รู้ว่าจะออกมาเมื่อไร) ก็จ่ายซัพพอร์ตซะ ส่วนถ้าไม่จ่ายก็ต้อง 'ศรีทนได้' หา workaround กันตามมีตามเกิดกันไป
ถามว่าถ้าคุณไม่อยากจ่ายซัพพอร์ต Java Runtime มันก็ยังมี OpenJDK, IcedTea ให้เลือกใช้ได้อยู่ (อารมณ์เหมือน Mono นี่แหล่ะ) แต่จะถึงขั้น drop-in replacement รึเปล่าอันนี้ก็ต้องเป็นความเสี่ยงที่ต้องรับกันไป แต่มันเปิดและสามารถมีส่วนร่วมในการแก้ไขได้ แต่หน่วยงานที่ใช้จะมีทักษะถึงขนาดนั้นแก้ไขได้เองรึเปล่าก็เป็นเรื่องที่ต้องไปประเมินกันเอง
ส่วน Oracle DB vs. MySQL ก็อารมณ์ลูกรัก/ลูกเลี้ยงแหล่ะ ยิ่ง OpenOffice นี่ก็ไม่ทำเงินให้เลย ผมว่าถ้าอยู่กับหนูน้อยหมวกแดง (ซึ่งก็ยากเพราะทุนน่าจะไม่ไหว) ก็คงเป็นอีกแบบ
เลิกเขียน Java แล้วครับ (ถ้าอาจารย์ไม่บังคับไม่เขียนแน่) แต่ยังคงต้องใช้เพื่อ Minecraft :)
ตอนนี้ใช้ C# อยู่ ชอบ C# มากๆครับ
Java เองก็ไม่ได้เลวร้ายอะไรนะ ผมว่ามันดีด้วยซ้ำ
เพราะผมเคยเขียน Java มาก่อนทำให้ตอนเริ่มเขียน Android เป็นเรื่องง่ายมากครับ มันก็มีจุดขายของมันครับ ไม่ได้เลวร้ายซะดีเดียว
ไม่ได้เลวร้ายซะดีเดียว ?
เดี๋ยวนี้ PaPaSek มีบอทคอยตรวจทุกคอมเมนต์แล้วสินะครับ...
สงสัยเค้าโดนควบคุมความประพฤติแล้วล่ะครับ
นั่นสิ ทำไมต้องรังแกเค้าอยู่คนเดียว
orz
ปล. สงสัยบอทจะไม่มีระบบ TL;DR อ่านทุก byte จริงๆ
;p
ด้วยเหตุนี้ผมเลยต้องไป grammar nazi ใส่คนอื่นเพราะเก็บกดไงครับ
พูดถึง Ruby อย่าลืม YAML Parser security issue ด้วยนะคร้าบบบบ เดี๋ยวจะนึกว่าปลอดภัยกว่าจาวา พรุนไปถึง Rubygems.org เลยทีเดียว
รู้สึกว่าบทความนี้หลงทางนะครับ ปัจจุบันไม่ค่อยมีใครพัฒนาแอพพลิเคชั่นโดยใช้ Java Applet แล้ว ถ้าหากใครยังพัฒนาโปรแกรมโดยใช้ Applet อยู่ก็ควรเปลี่ยนไปใช้อย่างอื่นแทนได้แล้ว แบบนี้เห็นด้วยครับ
Java sandbox ไม่ใช่ Java Applet ครับ ต่อให้เป็น service แบบเซิร์ฟเวอร์ก็ยังมีบริการจำนวนมากอิงกับระบบความปลอดภัยของ sandbox ผู้ดูแลระบบอาจจะยอมให้รันเซิร์ฟเวอร์ของผู้ผลิตภายนอกบนเซิร์ฟเวอร์โดยควมคุมสิทธิการเข้าถึงผ่านไฟล์ policy (โมดูล java.security.manager)
การที่ sandbox มีปัญหาช่องโหว่เช่นนี้ ทำให้ทุกบริการที่อิงกับระบบความปลอดภัยมีโอกาสถูกโจมตีได้ ตอนนี้บริการที่ถูกโจมตีหนักๆ คือ Applet แต่ไม่มีอะไรรับประกันว่าอนาคตเกิดบริการเซิร์ฟเวอร์สักตัวที่ถูกจำกัดสิทธิการเข้าถึง (เช่นไม่ให้เรียก system) เอาไว้เกิดหลุดออกมาได้ แฮกเกอร์ก็จะสามารถเข้าถึงทุกสิทธิเท่ากับ user ที่ใช้รันบริการนั้นๆ แทนที่จะถูกจำกัดตาม policy ที่กำหนด
lewcpe.com, @wasonliw
ถูกครับ แต่ Sandbox ถูกพัฒนามาไว้สำหรับ Java Applet และ Java Web Start ครับ
ผมไม่เข้าใจว่าทำไมบริการเซิร์ฟเวอร์ถึงได้รับผลกระทบจากระบบ sandbox ครับ ทั้งๆที่ model มัน
ใช้สำหรับ client.
"The original security model provided by the Java platform is known as the sandbox model, which existed in order to provide a very restricted environment in which to run untrusted code obtained from the open network. The essence of the sandbox model is that local code is trusted to have full access to vital system resources (such as the file system) while downloaded remote code (an applet) is not trusted and can access only the limited resources provided inside the sandbox."
copy มาจาก spec ตาม link ครับ
http://docs.oracle.com/javase/7/docs/technotes/guides/security/spec/security-spec.doc1.html
ผมไม่แน่ใจว่าถ้า disable plugin java บน web browser แล้วมันจะ block การเข้าถึง
web start ด้วยหรือปล่าว
ช่วงนี้ถ้าเห็นไฟล์ .jnlp ก็อย่าไป click เล่นกันนะครับ
เหตุผลของการออกแบบมันไม่ได้จำกัดการใช้งานครับ ผมอาจจะรันแอพพลิเคชั่นอะไรสักตัวที่เป็นเดสก์ทอป, เซิร์ฟเวอร์ ฯลฯ โดยอิงโมเดลความปลอดภัยจาก sandbox กำหนดว่ามันทำอะไรได้บ้าง (ตัวอย่างบน stackoverflow)
และอย่างที่บอกครับ ถ้าโมเดลความปลอดภัยจาก sandbox ถูกเจาะได้ ความปลอดภัยทั้งหมดจะอิงอยู่บนระบบรักษาความปลอดภัยของ OS อย่างเดียว
ไม่ใช่แค่ Applet และ Web Start ที่อิงกับระบบรักษาความปลอดภัยของ sandbox เซิร์ฟเวอร์ก็อิงกับมัน เช่น Tomcat เองก็อิงกับโมเดลนี้ เพื่อรักษาความปลอดภัยในกรณีที่หน้า jsp มีปัญหา มีบั๊ก หรือกรณีให้บริการ jsp กับผู้ใช้ภายนอก
lewcpe.com, @wasonliw
เหตุผลในการออกแบบผมเชื่อว่า เพื่อรองรับ applet, web start ครับ แต่ SUN (อิงถึงสมัยยังเป็น SUN)
ชอบคิดเผื่อครับ เช่น java servlet ไม่จำเป็นจะต้องทำงานบน HTTP เป็นต้น
ส้วน link ที่ให้มาตาม stackoverflow นั้นเป็นการกระทำที่ไม่แนะนำอยู่แล้วครับ
การอนุญาติให้ user นำ code ขึ้นไป run ได้บน server ก็เหมือนการค้ำประกันเงินกู้
ให้กับคนที่ไม่รู้จักครับ
Link ที่ชี้ไปยัง tomcat ที่คุณให้มาก็เป็นกรณีเดียวกันครับ
"However, running with a SecurityManager is definitely better than running without one" copy มาจาก
http://tomcat.apache.org/tomcat-7.0-doc/security-manager-howto.html
เค้าก็พูดถูกครับ มีดีกว่าไม่มี
ลองคิดดูว่าถ้าเราให้ใครก็ได้ upload ไฟล์ .php ไปบน server เราได้มันจะเกิดอะไรขึ้น
ครับ แต่ภายใต้ระบบ sandbox ที่มีบั๊กที่รู้กันโดยทั่วไป ทำให้วลี "better than running without one" นั้นไม่จริงอีกต่อไป เพราะผู้ใช้สามารถก้าวข้ามระบบ sandbox ออกมาได้
ถ้า user สั่งเรียก system สิ่งที่ผู้ดูแลระบบคาดหวังคือ tomcat จะตายทั้ง process แล้วมาดู log ได้ว่าเกิดอะไรขึ้น นี่คืิอฟีเจอร์ที่ Java ให้มา
ภายใต้ระบบ sandbox ที่มีบั๊กและไม่ได้รับการแก้ไข แฮกเกอร์ (ซึ่งอาจจะเป็นคนเขียน jsp หรือคนใช้หน้าเว็บที่เจาะผ่าน jsp ที่มีบั๊กอยู่อีกทีก็ได้) สามารถเรียก system ซึ่งเกิน policy ที่วางไว้แล้ว process ยังไม่ตาย
lewcpe.com, @wasonliw
Bug มันไม่คงอยู่ตลอดไปหรอกครับ ดังนั้นมีก็ยังดีกว่าไม่มีอยู่ดี
ผมเห็นด้วยว่า Oracle ควรจะรีบแก้ Bug นี้แต่ผมยังไม่เห็นว่า
มันเป็นอันตรายกับ server มากไปกว่าภาษาอื่นแต่อย่างใดครับ
นั้นเป็นเหตุผลที่ผมเขียนว่า "ลองคิดดูว่าถ้าเราให้ใครก็ได้ upload ไฟล์ .php
ไปบน server เราได้มันจะเกิดอะไรขึ้น" ผมกล่าวถึง PHP ครับ
เรื่องการเจาะระบบเว็บเพื่อไปวางไฟล์หรือแก้ไขไฟล์มันเป็น ฺBug ของ
application นั้นๆครับ ภาษาไหนก็ไม่รอดครับ
เป็นการถกกันที่น่าสนใจที่สุดเท่าที่อ่านในข่าวนี้เลย +1 ทั้งคู่ครับ
มันไม่ง่ายเลยที่จะทำ GIF ให้มีขนาดน้อยกว่า 20kB
บั๊กมีอยู่และถูกแก้ไปเป็นเรื่องปกติครับ ปัญหาคือท่าที่ของออราเคิลที่ปล่อยให้ปัญหาอยู่นานเกินไป จนกระทั่งการโจมตีกระจายออกไปเป็นวงกว้าง อันนี้ไม่ใช่เรื่องปกติ
สิ่งที่ผมกังวลกับการใช้งานอื่นๆ นอกเหนือจาก Applet คือการสร้างความรับรู้ด้านความปลอดภัยที่ผิดไป (false sense of security) ทุกวันนี้ระบบอย่าง php หรือ fastcgi อื่นๆ ไม่มี ระบบ sandbox แต่ก็อยู่ในความรับรู้ของผู้ดูแลระบบ เช่น ไม่ควรรัน apache ด้วย root หรือ จำกัดสิทธิการเข้าถึงของ user www-data ไว้เท่าที่ต้องการจริงๆ
ระบบ sandbox ถ้าทำงานได้ถูกต้อง ผู้ดูแลระบบอาจจะไม่ได้มานั่งรีวิวว่าจะรันเซิร์ฟเวอร์แบบไหน user อะไร และ user นั้นๆ มีสิทธิอะไรบ้าง เพราะคอนฟิก sandbox อย่างถูกต้องไปแล้ว เช่นเดียว
การสร้างความรับรู้ด้านความปลอดภ้ัยที่ผิด แย่กว่าการไม่รับรองความปลอดภัยเสียอีกครับ
lewcpe.com, @wasonliw
เดี๋ยวก็ต้องมีคนมาบอกว่า ก็ต้องรู้ด้วยตัวเองว่าไม่มีอะไรปลอดภัย 100% และต้องตามข่าวบั๊กอยู่เสมอ ... ซึ่งผมก็เห็นด้วย แต่มันไม่ควรเกิดขึ้นที่เดิมซ้ำๆ แบบที่เกิดกับระบบ sandbox ของ Java แบบนี้ครับ
ถูกครับ ผมเชื่อว่าไม่มีใครชอบใจการตอบสนองของ Oracle ที่ค่อนข้างช้ากับเรื่องที่เกิดขึ้น
มีอย่างหนึ่งที่ผมติดใจครับ คือเรื่องของ false sense of security ครับ เพราะว่าจริงๆ
แล้วผู้ออกแบบระบบควรจะคำนึงถึงความเสี่ยงต่างๆ ที่อาจจะเกิดขึ้นอยู่แล้ว และอย่างที่ผมบอกว่า
การอนุญาติให้ user สามารถนำ code มา run ได้บน server นี่ก็เหมือน "การค้ำประกัน
เงินกู้ให้กับคนที่ไม่รู้จัก" ส่วนเรื่องเชื่อใจ sandbox ว่าจะช่วยป้องกัน มันก็เหมือน "การฝากบ้าน
ไว้กับ รปภ หน้าหมู่บ้าน" มันขึ้นอยู่กับดุลยพินิจของผู้ออกแบบระบบครับ ซึ่งผมเชื่อว่าผู้ออกแบบ
ระบบต้องมองในมุมมอง pessimistic ไว้ก่อนอยู่แล้ว
ส่วนเรื่อง "ไม่ควรรัน apache ด้วย root หรือ จำกัดสิทธิการเข้าถึงของ user www-data
ไว้เท่าที่ต้องการจริงๆ" ผมว่ามันก็ใช้กับทุกระบบเหมือนกันหมดครับ
"การสร้างความรับรู้ด้านความปลอดภ้ัยที่ผิด แย่กว่าการไม่รับรองความปลอดภัยเสียอีกครับ"
ผมเห็นด้วยครับ
ประเด็นของคุณก็มี point ครับ
เพราะเป็นไปได้ว่า มีความต้องการที่จะพัฒนาระบบให้ user สามารถนำ code มา run
บน server ได้ นักพัฒนาจึงตัดสินใจเลือก platform java แทนระบบอื่น เพราะ
คิดว่าตอบโจทย์เรื่องความปลิดภัยตรงนี้ได้ และประหยัดเวลาไม่ต้อง implement เอง รวม
ถึงเชื่อใจบริษัทยักษ์ใหญ่ว่าน่าจะทำได้ดีกว่าตัวเองทำ อันนี้ก็จะเป็น false sense of security
ที่สร้างปัญหาได้
ผมยกประเด็น sandbox ของ Java เหมือนกับระบบ VM ทั้งหลายนะครับ
คือระบบความปลอดภัยของ VM ทั้งหลายไปรับประกันว่าจะแยกกัน "เหมือนรันคนละเครื่อง" ดังนั้นผู้ดูแลระบบทั้งหลายจะไปวางใจกับระบบรักษาความปลอดภัยแบบนี้ เราจะเห็นเครื่องที่มีความเสี่ยงต่างกันรันอยู่ในเครื่องเดียวกัน คุณนำเครื่องเซิร์ฟเวอร์ย้ายงานไปรันบน Azure หรือ Amazon AWS คุณคาดหวังว่าระบบ VM จะรับประกันว่าลูกค้าคนอื่นเข้ามาอ่านหน่วยความจำหรือไฟล์ไม่ได้
วันหนึ่งที่มีบั๊กความปลอดภัยของ VM ปรากฎว่าลูกค้าอ่านหน่วยความจำข้ามเครื่องกันได้ (เคยเกิดขึ้นจริงกับระบบ VM หลายระบบ) เราไม่สามารถไปโทษลูกค้าได้ว่าโง่เองที่ดันเชื่อใจ แต่ต้องเร่งแก้ไข
ระบบ sandbox ก็เหมือนกันครับ Java ไปโฆษณาฟีเจอร์นี้ไว้ มีคนใช้จำนวนมาก (Application Server ทั้งหลาย อย่าง Tomcat หรือกระทั่ง ColdFusion นั้นมีหลาย policy สำหรับแต่ละส่วนด้วยซ้ำ)
ด้วยลักษณะการตอบสนองแบบนี้ ผู้ที่ยังใช้ Java อยู่ต้องตระหนักเต็มที่ (ซึ่งเอกสารของจาวาไม่เคยยอมรับเรื่องนี้) ว่าระบบ sandbox มีปัญหา ฟีเจอร์นี้ใช้การไม่ได้ และบั๊กของซอฟต์แวร์จะทำให้แฮกเกอร์เข้าถึงสิทธิของผู้ใช้ที่ใช้รันอยู่ทั้งหมด
lewcpe.com, @wasonliw
ผมก็เคยได้ยินครับ และรู้ว่ามันเป็นประเด็นของ Cloud มานานแล้ว ซึ่งเป็นสิ่งแรกๆที่เรา
จะได้รู้เมื่อศึกษา Cloud ถึงแม้มันจะเป็น VM คนละอย่างกันแต่ผมก็พอจะเข้าใจที่คุณสื่อครับ
Bug ประเภทนั้นเป็นระดับร้ายแรงครับ และเป็นเหตุผลว่าทำไมถึงมี private cloud.
เรื่อง Java ผมอธิบายไปหมดแล้ว และผมว่าคุณเข้าใจผมและผมเข้าใจคุณแล้ว
เรื่องอื่นๆ ผมว่ามันเป็นเรื่องของนโยบายและการดำเนินงานของบริษัทอื่นๆซึ่งผมไม่ได้มีส่วนได้เสียด้วย
โดยส่วนตัวผมก็ไม่ชอบกับการตอบสนองที่เชื่องช้าของ Oracle เช่นกันครับ
มีโยงไปถึง cloud .. อยากขอแจงเพิ่มว่ารากของปัญหาอยู่ที่ส่วน virtualization (แล้วถึงส่งผลข้างเคียงมายัง cloud อีกที)
ที่แจงก้อเพื่อให้ชี้ว่ามันไม่ใช่ปัญหาโดยตรง ดังนั้น on-premise cloud จึงอาจมีปัญหานี้เช่นกัน.. การรับมือเรื่องนี้อยู่ที่การออกแบบในแง่ resx isolation กับกระบวนดูแลจัดการระบบ (ถ้า deploy แบบ on-premise แต่สองจุดที่เอ่ยถึงยังทำได้ไม่ดีพอ มันก้อพรุนได้เช่นกัน เผลอๆ พรุนกว่าด้วย)
C++ ดีนะ แต่ขาด Tool ที่ดีมากกว่า
ถ้า Microsoft หรือใครทำ C++ Tool ได้เหมือนกับ C# ละก็ จะมีคนใช้ C++ มากขึ้นเยอะ
@fb.me/frozenology@
คงยาก.. ไงไปติดตรงภาษาอยู่ดี (ถ้าใช้ศัพท์ของ ms คือ unmanaged code vs. managed code)
กลายเป็นบทความเรียกแฟนคลับ Java ไปเสียแล้ว แฟนคลับจะใช้ก็ใช้ไปครับ ไม่มีใครว่า ผมเองก็ยังต้องใช้ Java ในบางงาน ประเด็นคือ สำหรับคนที่ไม่อยากใช้ อยากมองหาทางเลือก แต่ไม่มีข้อมูล ก็เอาบทความไปประกอบการพิจารณาได้
แต่ผมมีคำถามที่อยากรู้เหมือนกัน คือ คนที่ออกมา defense Java มาก ๆ เคยทำงานกับเทคโนโลยีตัวอื่นหรือเปล่า ทำงานกับอะไรมาบ้าง? ไม่ได้ถามกวนหรืออะไรนะครับ แต่อยากรู้จริง ๆ
ผมชอบ บทความนะครับ
เพียงแต่ จะหาอะไรแทน JAVA มันยากนะครับ ข้อดีข้องมันเยอะจริงๆ
คงต้องดูว่า facebook twitt google ใช้อะไร ก็น่าจะดูเป็นอย่าง (ไม่ค่อยแน่ใจ)
ส่วนตัวเลิกแล้วครับ JAVA จากการทำงานทั้ง JAVA และ NET
ช่วงแรก NET นี้ ได้แต่ตามJAVA แต่ตอนนี้ ไม่ใช่ละ
เพราะอะไร เพราะ JAVA มันไม่พัฒนา
ถ้าJAVA พัฒนา .NET ไม่ไ่ด้เกิดหรอก
แล้วทำไมJAVA มันไม่พัฒนา ???? หรือ พัฒนาช้า หรือหลงทาง ????
อยากจะบอกว่า หลงรัก Lambda Expression ของ .NETมาก
หรือ linq ที่จัดการได้ data จาก source ต่างๆ ได้มากมาย
ผมไม่เคยทำงานกับ Java แต่ก็รู้สึกว่าตัวเนื้อข่าวเองก็จุดประเด็นล่อเป้าตั้งแต่แรกอยู่แล้วนี่ครับ? ไม่แปลกที่คนที่ใช้ Java อยู่และไม่เห็นด้วยหรือมีมุมมองต่างจากคุณจะมาโพสความคิดเห็นที่ตรงกันข้าม ประเด็นคือคุณเปิดรับความคิดเห็นมากแค่ไหนต่างหาก
Russia is just nazi who accuse the others for being nazi.
someone once said : ผมก็ด่าของผมอยู่นะ :)
ชอบความเห็นนี้ครับ ผมก็ว่าความรู้สึกนี้มันคืออะไร ความเห็นนี้อธิบายได้ดีครับ
แล้วบทความนี้ก็ทำให้รู้สึกเปิดสมองประเทืองปัญญาดีมาก
ต้องขอบคุณหลายๆ ความเห็น
#จอกนี้ขอคารวะทุกท่าน
+1 ให้ความเห็นนี้ครับ
ต้นเรื่องของบทความค่อนข้าง strong และเป็นความคิดเห็น ไม่ใช่ข้อเท็จจริง ก็ต้องมีคนเห็นต่างอยู่แล้ว ผมไม่เห็นด้วยกับต้นเรื่องของบทความ ไม่รู้ว่าผมเป็นแฟนคลับด้วยรึเปล่า แต่ผมจะไม่เรียกคนอื่นว่าแฟนคลับ เพราะถ้าผมโดนเรียกแบบนี้ โดยคนที่ไม่รู้จักผมดี ผมจะรู้สึกว่าคนคนนั้นมีอคติมากเกินและไม่ควรเสวนาด้วยครับ (ผมอาจจะคิดไปเองก็ได้)
เรื่องทางเลือกผมไม่แย้ง ใครจะย้ายเพราะอะไรก็เป็นเรื่องส่วนตัว แต่ขอแย้งเฉพาะการเอาเรื่อง security ของ applet และเรื่องการถือครองของ oracle มาโยงสรุปว่าน่าใช้น้อยลง เท่านั้นครับ ผมยังไม่เห็นว่ามันจะเป็นอันตรายต่อผู้เกี่ยวข้องยังไง (ฝั่ง server JVM) ต่อให้ลากยาวไปถึง sandbox model บน server ที่ถ้าเกิดขึ้นจริง และ oracle อาจไม่แก้ให้ฟรี ๆ คนที่ใช้ feature นี้ ซึ่งน่าจะใหญ่และรวยพอ คงยอมจ่ายค่า support ให้ oracle สบาย ๆ อยู่แล้ว
ส่วนเรื่องคำถามที่ว่าผมเคยใช้อะไรอย่างอื่นมั้ย เคยครับ ใช้กับงานจริงมาก็หลายตัว แต่จะให้ไล่ในนี้คงไม่ใช่เรื่องครับ กลัวว่าจะกลายเป็นการประกาศศักดากันเสียเปล่า ๆ อยากเน้นไปที่การสนับสนุนและหักล้างด้วยเหตุและผลมากกว่า
ผมยังไม่เห็นว่าใครเป็นแฟนคลับ Java นะครับ หวังว่าคุณจะไม่เห็นผมเป็นหนึ่งในแฟนคลับ
และไม่อยากให้คุณเรียกใครว่าแฟนคลับเช่นกัน เราเป็น professional ครับไม่ใช่เด็กคลั่งไคล้ดารา
ส่วนใหญ่ผมจะมา comment ในเรื่องเกี่ยวกับ Java เพราะไม่อยากให้คนเข้าใจผิด นั่นเพราะ
ผมรู้เรื่อง Java แต่ภาษาอื่นส่วนใหญ่ที่ผมเห็น ค่อนข้างออกข่าวหรือบทความมาแนวนำเสนอ
features ซึ่งผมก็ไม่มีความเห็นอะไร ผมอยากให้คนรุ่นใหม่ๆ (หมายถึงรุ่นที่ใหม่กว่าคุณกับผมซึ่งผมเอง
ยังเชื่อว่าเราก็ยังไม่เก่า :D )ไม่มองอะไรฉาบฉวยครับ
งานส่วนใหญ่ผมเป็น Java ครับ รองลงมาก็ PHP, Groovy, Perl, Python ตามลำดับ
ส่วน .NET นี่ ไม่เคยมีโอกาสได้ใจงานจริงเสียดี ซึ่งผมรู้ว่าตัวภาษาหรือหลักการของ .NET
มีการปรับปรุงอย่างมากและรวดเร็ว แน่นอนว่ามันย่อมต้องดีกว่า Java อย่างแน่นอน
รวมถึงหลายๆภาษาที่เกิดใหม่ เกิดขึ้นมาเพื่อแก้ไขปัญหาบางอย่าง หรือทำให้การแก้ไขปัญหาง่ายขึ้น
ซึ่งมันก็จะมีจุดยืนของมัน
บทความโดยรวมค่อนข้างดีครับ เพียงแค่มันมีบางจุดที่อาจจะทำให้คนสับสนได้ ซึ่งผมไม่อยาก
ปล่อยผ่านครับ ผมไม่ใช่คนเก่งอะไรเลย และผมคาดหวังให้คนรุ่นใหม่กว่าผมเก่งนำหน้าผมด้วยซ้ำ
ซึ่งถ้าเป็นอย่างนั้นได้ผมจะดีใจมาก และอยากให้ทุกคนที่นี่ใช้เหตุผลและความสนุกในการโต้แย้งครับ
มันจะทำให้การถกเถียงเรื่องเทคโนโลยีเป็นเรื่องเปิดกว้างและน่าสนใจมากยิ่งขึ้น ดีกว่าแบ่งฝักแบ่งฝ่าย
ใจเย็นคุณเพื่อน
ตอนนี้ ไปอ่านข่าว JAVA 8 จะมี Lambda Expressions แต่ไม่รู้จะออกมาเมื่อไหร กว่า 6 จะไป 7 นาน จนลืม
อยากให้ลองอ่าน Lambda Expressions ของ c#
http://www.codeproject.com/Tips/298963/Understand-Lambda-Expressions-in-3-minutes
ไม่รู้ว่าตอนนี้ web framewok ของ java ไปถึงไหนแล้ว
แต่ ของ.NET MVC4 นี้แจ่มมาก
ยิ่งมากับ pattern ใหม่ๆ อย่าง MVVM อาจทำให้หลายคนลืม MVC
http://en.wikipedia.org/wiki/Model_View_ViewModel
มันมีมาสักพักแล้วไม่หรอ lambda expression มันก็แค่ช่วยให้ code มันกระชับขึ้น
ช่วงนี้ไม่ได้ไล่ตามเทคโนโลยีแล้ว มันจะไปมันจะมา ก็เป็นวัฎจักร ขนาดที่ว่ากำลังอยาก
จะศึกษาการทำเกมด้วย XNA Microsoft ดันมาประกาศว่าจะหยุดพัฒนาเสียอีก
เอาไว้คุยมากกว่านี้ช่องทางอื่นละกัน มันไม่เกี่ยวกับบทความเดี๋ยวเค้าจะว่าเอา
ผมว่า lambda expression มันคือการเปิดโลกอีกโลกนึงเลยนะครับ แต่ต้องทำควบคู่ไปกับการทำให้ฟังก์ชั่นเป็น first class citizen ด้วย กรณีตัวอย่างคือ jQuery
ok ค่อยคุยกัน
แค่อยากจะสื่อว่า lambda expression มีมานานแล้ว แต่ ทำไม JAVA ถึงไม่ได้ใช้สักที่
อ่านตรงนี้ เห็นว่าจะมากับ java8
http://openjdk.java.net/projects/lambda/
ถ้าพลาดอะไร โทษที่นะ
lambda exp มันทำมากกว่าการกระชับพื้นที่ code .. มันคือส่วนนึงของ paradigm แบบ functional
ปล.
เดาว่าเหยื่อจาวาหลายรายคงติดจุดนี้แล.. ส่วนแกนหลายที่ใช้ scala อยู่ ฝ่าย dev เลยลงและเผลอเปิดทิ้งไว้
อยากถามกลับเหมือนกันครับ ว่าคุณรู้จัก java ดีแค่ไหน เคยทำงานกับ platform ตัวนี้มากน้อยแค่ไหน แล้วผมว่าการเอา java มาเปรียบเทียบกับ Vala ด้วยคุณสมบัติ โครงสร้าง การนำไปใช้งาน มันไม่มีทางเปรียบเทียบกันได้ครับ
มากน้อยระดับที่คุมโปรเจคได้ ขอทุนได้ครับ
ผมไม่ได้เปรียบเทียบ Java กับอะไรนะครับ เป็นการนำเสนอข้อดีข้อเสียแต่ละตัวไป คุณสมบัติ กับโครงสร้าง ไม่ว่าภาษาไหนมันก็ไม่เหมือนกันอยู่แล้ว แต่การนำไปใช้งาน มันไม่ต่างกันมากขนาดนั้นหรอกครับ
การใช้งานตัวภาษาไม่ต่างกันมาก เห็นด้วยครับ แต่ถ้าพูดถึงในระดับ plattform ต่างกันแน่นอนครับ การที่บทความนำข้อจุดอ่อนของ applet ที่โดนโจมตีบ่อยครั้งซึ่งผมก็เห็นด้วยว่ามันห่วยและควรจะเลิกใช้ได้แล้ว แต่การที่จะสรุปว่าเราควรที่จะเลิกใช้ java เพราะเรื่องจุดอ่อนของ applet นี่ออกจะเป็นการด่วนสรุปไปหน่อยครับ
ผมไม่ได้พูดถึง Applet แสดงว่าไม่ได้ว่าผมห่วยใช่ไหมครับ?
ไม่หรอกครับ :D
เป็นที่รู้กันครับว่า applet มีจุดอ่อน ตกเป็นเป้าและโดนโจมตี(สำเร็จ) มาตลอด applet ตอนที่มันออกมาแรกๆ นี่เป็นที่ฮือฮามาก ถือเป็นยุคแรกๆ ของ RIA แต่เมือเวลาผ่านไป มีสิ่งใหม่ที่ดีกว่า ตอนนี้คงเป็นยุคของ HTML 5 ทุกอย่างมีเกิดมีดับ ผมว่าน่าจะถึงเวลาของ applet แล้ว
Java ช่วงนี้โดนเล่นเยอะ (จริงๆมันก็โดนเล่นมานานและ จาวาเร็ววววซ์)
ประเด็นเรื่องความปลอดภัยและ Oracle อาจยังเป็นข้อสงสัย อันนี้รอติดตามข่าวต่อไป
แต่ในโลก Enterprise Business Application ฝั่ง Server ส่วนใหญ๋ยังต้องพึ่ง J2EE อย่างมาก
บริษัทผมอีกแผนกพัฒนา POS โดยใช้ Openbravo ผมลองเล่นดูมันก็โอเคนะ รองรับงานร้านอาหารได้สบายๆ
ตัวผมเองก็เขียน Web App (PHP) แต่เวลาออก Report ก็ต้องใช้ +Java Bridge+Tomcat+Jasper Report+iReport
หลายๆองค์กรก็ค้นคว้าพัฒนามาหลายปี ลงทุนไปเยอะ ใช้เป็นCoreก็เยอะ มองดูดีๆ Java มันแทรกซึมไปทุกๆที่ ผมว่ามันคงไม่หายในเร็วๆนี้หรอก
ผมไม่เห็นด้วยกับบทความนี้นะครับ เพราะตัวเลือกที่ให้มาไม่ได้แก้ปัญหาขงอ Java ที่เกิดขึ้นในตอนนี้
ปัญหาความปลอดภัยของจาวาตอนนี้คือปัญหา sandbox ที่ควรจะรับประกันความปลอดภัยเพิ่มเติมได้แต่กลับรั่วออกมา แพลตฟอร์มที่จะทดแทนในระดับเดียวกันได้ควรเป็นแพลตฟอร์มที่ให้ฟีเจอร์เดียวกันคือ sandbox ตอนนี้แพลตฟอร์มที่ผมนึกออกยังมีเพียง Native Client, .NET และ Android เท่านั้น แพลตฟอร์มอื่นๆ ที่ผู้เขียนว่ามาในบทความไม่ได้รับประกันในรูปแบบเดียวกับ sandbox เลย
แพลตฟอร์มอื่นๆ ไม่มีปัญหาเพราะไม่เคยมีฟีเจอร์ คงไม่สามารถเรียกว่าการทดแทนครับ
lewcpe.com, @wasonliw
เห็นด้วยครับ
การนำเสนอปัญหา java ผมว่าถูกแล้ว
แต่การนำเสนอสิ่งทดแทน เป็นเรื่องยาก ผมมองไปก็มีแต่ .NET
แต่ว่า server ในโลกนี้ไม่ได้มีแต่windowนะซิ
ยังไงก็แทนที่JAVA ไม่ได้
ผมกลับได้แต่หวังว่า จะมีใครมาปลุกผี ให้ JAVA กลับมาแรงอีกครั้ง
ถ้า JAVA กลับมาแรง ผมก็จะกลับมาฝั่ง JAVA
ไม่มีใครปลุกผีได้ถ้าออราเคิลไม่หยุดครอบงำวิญญาณในทางที่ไม่ควรแบบนี้ครับ
ถ้าด๊อบบี้ยังอยู่ในอำนาจของมลฟอยล์ คงต้องรอฮอร์นนี่แฮรี่มาแจกถุงเท้ามนุษย์เงินเดือนครับ
จริงๆ ผมชอบภาษา JAVA นะครับ
แต่หลังๆ .NET พัฒนาดีกว่ามาก ในขณะ ที่JAVA เดินจงกลม
แต่ยังไง .NET มันได้แค่ window มันเลยตัด java ไม่ได้ 100%
ผมยังใช้ JAVA ทำ android อยู่ครับ
ถ้ากูเกิลขอซื้อนะ หล่อเลย
แต่เดิมซันก็เชื่องช้า หลังๆออกแนวเลอะเทอะ
ตอนนี้ oracle ก็หน้าเงินไปหน่อย
กูเกิลเอาจาวามาใช้แต่ละอย่าง ผมว่าแหลมคมกว่าเยอะครับ ได้มาจริงๆคงพัฒนาแบบก้าวกระโดด
ตอนนี้พี่แกกำลังลองผิดลองถูกทำภาษาใหม่หลายตัว แต่ดูแล้วไม่น่าจะรอด
ไม่แน่นะครับ product ตัวหลักหลายตัวของกูเกิลก็ยังใช้จาวาอยู่
Oracle คงน้ำลายไหลเลยครับ ส่วน Google อาจถูกฟันหัวแตก
มันไม่ง่ายเลยที่จะทำ GIF ให้มีขนาดน้อยกว่า 20kB
เห็นด้วยครับ
ผมไม่เห็นด้วยกับคุณลิ่วครับ :D
ผมว่าคุณ Bow ไม่ได้มองเรื่องการทดแทนกันเรื่องความปลอดภัยด้านเดียว (และก็เตือนแล้วว่าทุกตัวเลือกมีความเสี่ยง) และบทความดูจะเป็นการหาทางเลือกเพิ่มเติมมากกว่านะครับ โดยเงื่อนไขมุ่งไปที่ต้องเป็นโอเพนซอร์สและไม่มีปัญหาด้านกฏหมายในอนาคต
คุณ Bow ไม่ได้เอาความปลอดภัยมาเทียบแข่งกัน แต่กล่าวเรื่องความปลอดภัยเป็นหนึ่งในสาเหตุที่ควรหาอะไรมาเป็นทางเลือกครับ
ผมจะไม่ใช่นักพัฒนาโปรแกรม แต่การอ่านบทความนี้ผมว่าเป็นแนะนำการหาทางเลือกที่น่าจะเป็นไปได้ ไม่ได้มุ่งเน้นเอาฟีเจอร์มาเปรียบเทียบกันแบบตรงๆ
ผมเห็นด้วยในประเด็นการทดแทน sandbox และยอมรับว่าไม่ได้มองจุดนี้ในตอนเขียน สิ่งที่ผมเขียนผมมองในการใช้งานกรณีทั่ว ๆ ไปมากกว่า และอย่างที่ตอบไป ผมมีปัญหากับท่าทีของ Oracle มากกว่าปัญหาของ sandbox ในตอนนี้ที่ไม่ช้าก็เร็วต้องได้รับการแก้ไข
อย่างไรก็ตามผมเคยคิดในประเด็นนี้เหมือนกัน (แต่ไม่ใช่ตอนเขียนบทความ) คำถามที่ผมตั้งคือ แนวคิดแบบ sandbox มีความจำเป็นแค่ไหน โดยส่วนตัวผมมองว่ามีแค่ NaCl เท่านั่นที่ sandbox จำเป็นและเวิร์คจริง ๆ แต่กรณีอื่น ๆ เช่น Applet คงสรุปได้ในระดับหนึ่งแล้วว่ามันมีปัญหา หรือการ remote execution ก็มีเทคนิคอื่น ๆ ที่พอทดแทนกันได้อย่าง pyro (แต่เรื่องความปลอดภัย pyro ไม่ได้ดีกว่าเลย) ซึ่งโดยตัวแนวคิด remote execution เองมันมีปัญหาเรื่องความปลอดภัยในตัวอยู่แล้ว หาก concern เรื่องนี้ ก็ควรใช้ remote call มากกว่า
เอาจริงๆผมก็ไม่ใช่มาด้าน java เพราะไม่ปลื้มกับ performance เท่าไหร่ แต่ถ้าผมเป็นและมีตัวเลือกให้เลือกตอนนี้ ผมก็คงเลือก ตระกูล.net ละ เพราะใกล้เคียงกับ java ในการพัฒนา ละถึงค่อยไปพิจารณาตัว c/c++ ต่อ (ถนัดทั้ง c++ และ c#. net)
แต่ที่จะไม่ใช้แน่ๆคงเป็นพวก script language เพราะเคยใช้ python เขียนทำเกมมาแล้ว ไม่ปลื้มอย่างแรง
พวกบั๊กที่ควรจะกรองได้ใน compile ก็ไปอยู่ที่ runtime หมด ลำบากจริงๆอย่างที่มีเขียนในบทความ
พวกตัวแปรที่ไม่มี type ระบุ หลายคนอาจจะมองว่าดีเพราะเขียนง่าย แต่ผมว่ามันยุ่งเหยิงและไม่เป็นระเบียบเลย manage ได้ยาก ถ้าเขียนพวกโปรแกรมตัวเล็กๆก็อาจจะพอได้ แต่ถ้าสเกลใหญ่ที่มีคนเป็นสิบ แล้วผลัดเข้าออกโปรเจคท์ พวกเข้าใหม่นี่ตายแน่ๆกับความไร้ระเบียบตรงนี้
เนื่องด้วยมันเป็นภาษาสคริปท์ที่วิ่งบนรันไทม์ เคสนี้ไม่ได้เอาฮา แต่มันเกิดขึ้นจริงๆเมื่อโค๊ดชุดเดียวกัน รันบน single core กับ dual core แล้วให้ผลลัพท์ที่ไม่เหมือนกัน! โปรเจคท์ทำเกมของเพื่อนเจอมาแล้ว เห็นมากับตาตัวเอง
performance ที่ไม่ดี
อนาคตถ้า java มันจะไม่เป็น java อย่างที่เคยเป็น ผมว่ามันก็ต้องมีอย่างอื่นมาทดแทนตรงช่องว่างนี้อยู่แล้ว ช่องว่างที่สำคัญแบบนี้มันไม่มีทางกลวงโบ๋ไปได้หรอก
การเขียนภาษาสคริปต์ต้องใช้ discipline ที่สูงกว่าภาษาคอมไพล์ครับ Python ถือว่าโอเคแล้ว เพราะเป็น duck type แล้วก็บังคับเรื่อง indent หากเป็น PHP แล้วเจอเพื่อนร่วมง่ายมักง่ายนี่ ปวดหัวมาก ๆ ดังนั้นก่อนเริ่มโครงการข้อแนะนำคือต้องกำหนด convention ในการเขียนโปรแกรมก่อน แล้วต้องยึดมั่นใน convention นั้นไว้ให้มั่น
ส่วนการทำเกม หากใช้ python เป็นกาวประสานนี่ถือว่ามาถูกทางแล้วครับ แต่หากไปเขียน algorithm หนัก ๆ มีลูปเยอะ ๆ ไม่เหมาะแน่นอน และเป็นไปได้ ควรใช้พวก numpy หรือ library ที่เขียนด้วย C มาช่วยให้เยอะที่สุด
ประเด็นมันอยู่ตรงที่ว่า คนที่ครอบครองมันอยู่ในเวลานี้ ไม่ได้ทำเพื่อสังคมหนะสิครับ ถ้าเขาทำเพื่อสังคม เขาก้อจะเห็นส่วนรวมเป็นสำคัญ และจะทำงานเพื่อบริจาค ไม่ใช่เพื่อผลกำไร มันถึงไม่น่าใช้อีกต่อไปแล้วไง
ผมว่า จะทำเพื่ออะไร จะกำไร หรือ เพื่อบริจาค ไม่ใช่ปัญหาหลัก
ปัญหาหลักคือ การพัฒนา มันช้าครับ มีปัญหาภายในเยอะ
คำว่า ไม่น่าพิศมัย ถูกต้องเลย
เพียงแต่ผมยังมองว่าไม่มีอะไรแทนที่ได้ครับ
ผมว่า Javascript มาแรงนะครับ ตอนนี้ลามไปถึง Server Side แล้ว (ด้วย Node.js ที่รันบน Google V8) :)
สำหรับ Java เราคุ้นเคยกับการทำงานกับ java มาไม่น้อยไม่ว่าจะเป็น WebSphere หรือ Jboss สาย Java น่าจะรู้ดี ถ้าไม่เคยพัฒนา java บน WebSphere หรือ Jboss แสดงว่ายังมาไม่สุดทางบนสาย Java บอกได้เลยว่ามันทำให้เรื่องการพัฒนา Software Web application เต็มไปด้วยความซ้ำซ้อนและยุ่งยาก bug เพียบ โปรเจคล่าช้า การแก้ปัญหาทาง technical เต็มไปด้วยคำถาม พูดได้เลยว่า No Strong เราจะหลีกเลื่องทันทีถ้าต้องพัฒนา Software ด้วย java แต่ก็หลีกเลี่ยงไม่ได้ถ้าหากลูกค้าต้องการที่จะใช้มัน สำหรับ .Net คุณจะปวดหัวมากกับ Version ของ .Net แน่นอนมัน Easy and Faster
เราเลือกที่จะใช้ Php และ C/C++ ในการพัฒนา Software แน่นอนโปรแกรมเมอร์ที่ดีคุณควรพัฒนา Software ได้ทั้ง Desktop app และ Web app http://www.thaicomponent.com/
จาวาเร็วส์
ผมห่วงว่าภาษาเกิดใหม่มันจะตีกัน ตอนนี้ go ของกูเกิล ตีกับ rust ของ mozila อยู่ครับ