Special Report

เดิมที 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 ทำให้สามารถใช้งานร่วมกันได้ แบบมีรอยต่อใหญ่เล็กแตกต่างกันไป กลุ่มแรกได้แก่

C/C++

ตัวเลือกนี้อาจไม่ถูกใจหลาย ๆ คนเพราะสร้างความลำบากในการพัฒนามากขึ้นหลายเท่าตัวเมื่อเทียบกับ Java แต่ก็เป็นตัวเลือกที่เราปฏิเสธหรือมองข้ามไม่ได้ ปัจจุบันยังมีซอฟต์แวร์จำนวนมากที่ใช้ C/C++ ในการพัฒนา ไม่เฉพาะซอฟต์แวร์ระดับรากหญ้า แต่รวมไปถึงซอฟต์แวร์ในระดับการใช้งานด้วย แต่ซอฟต์แวร์ที่ไม่เหมาะสำหรับ C/C++ เอาเสียเลยคือ Web-based Application ด้วยเหตุที่ C/C++ เป็นเทคโนโลยีรุ่นปู่ก็จะมีข้อดีข้อเสียที่ต้องพิจารณาดังนี้

ข้อดี

  • มีไลบรารีและเครื่องมือสำหรับการพัฒนาให้เลือกใช้มากมาย
  • เป็นเทคโนโลยีที่เป็นที่ยอมรับและเป็นที่รู้จักในวงกว้าง
  • นักพัฒนาที่หาได้ไม่ยากนัก (แต่หาเก่ง ๆ ยากหน่อย)
  • performance สูง ใช้ทรัพยากรระบบน้อย
  • ทำงานเข้ากับส่วนต่าง ๆ ของระบบได้เป็นอย่างดี ตั้งแต่ล่างสุดยันบนสุด
  • เป็นพื้นฐานของเทคโนโลยีเกือบทั้งหมด

ข้อเสีย

  • ในการพัฒนาซอฟต์แวร์ทำได้ยาก และใช้ระยะเวลานาน
  • เมื่อมันยากการสร้างบุคลากรก็ยากด้วย
  • การบริหารจัดการหน่วยความจำเอง นอกจากจะเหนื่อยแล้ว โอกาสที่ซอฟต์แวร์เน่าก็มีสูง
  • การคอมไพล์และจัดการแพกเกจ นอกจากจะยาก และซับซ้อนแล้ว สำหรับแต่ละแพลตฟอร์มก็ไม่เหมือนกันอีก แต่ก็พอมีเครื่องมือช่วยในเรื่องนี้อยู่หลายตัว

สรุปโดยรวมคือ การใช้ C/C++ แม้ว่าจะทลายข้อจำกัดได้หลาย ๆ อย่าง แต่ก็แลกมาด้วยค่าใช้จ่ายที่สูงมาก ทางออกคือใช้ C/C++ ร่วมกับเทคโนโลยีกลุ่มที่สองคือ

Script Language

ภาษาที่อยู่ในกลุ่มนี้ได้แก่ PHP, Python, Ruby, JavaScript และอาจรวมไปถึง Lua ซึ่งภาษาเหล่านี้นอกจากเป็นภาษาที่ได้รับความนิยมค่อนข้างมากแล้ว ยังเป็นภาษาที่ได้รับการพิสูจน์แล้วว่ามีความพร้อมในหลาย ๆ ด้าน สามารถนำมาใช้งานในระดับ production ได้อย่างไม่มีปัญหา ด้วยความที่ภาษาเหล่านี้เป็นภาษา dynamic และค่อนข้างใหม่เมื่อเทียบกับ C/C++ (ส่วนมากเกิดในยุค 1990 ตอนกลาง) ดังนั้นจึงมีความได้เปรียบดังต่อไปนี้

ข้อดี

  • ใช้เวลาในการพัฒนาที่สั้น จากประสบการณ์อาจสั้นกว่า C/C++ ประมาณ 5-10 เท่า
  • สร้างบุคลากรได้ง่าย
  • มีระบบจัดการหน่วยความจำอัตโนมัติโอกาสซอฟต์แวร์เน่ามีน้อยกว่า C/C++ มาก
  • เนื่องจากโค้ดที่เขียนสั้นกว่า โอกาสเกิดบั๊กมักน้อยกว่า
  • มีไลบรารีและเครื่องมือสำหรับการพัฒนาให้เลือกใช้มากมายเช่นกัน บางภาษาอย่าง Python ติดตั้งเสร็จมีโมดูลพร้อมใช้ให้เลือกมากมาย จนแทบไม่ต้องติดตั้งอะไรเพิ่ม
  • ระบบนิเวศในการพัฒนาซอฟต์แวร์ที่กะทัดรัด ไม่จำเป็นต้องใช้เครื่องมืออะไรมากมาย interpreter ตัวเดียวเอาอยู่ และขนาดของ interpreter ส่วนมากจะอยู่ในหลักสิบเมกะไบต์ ซึ่งถือว่าเล็กมาก
  • หานักพัฒนาง่าย (เป็นบางภาษา โดยเฉพาะ PHP หาง่ายสุด ๆ)
  • โดยทั่วไปจะใช้หน่วยความจำน้อย

ข้อเสีย

  • performance ต่ำ แม้จะมีเทคนิคที่จะเขียนให้เร็วได้ แต่ก็ต้องใช้ประสบการณ์สูง
  • การขยายระบบทำได้ยากกว่า แต่ปัจจุบันมี Cloud เข้ามาช่วย ปัญหาเหล่านี้จึงค่อย ๆ ลดลง
  • ระบบ type ที่เป็น dynamic แม้จะมีข้อดีมากมาย แต่ไม่มีเครื่องมือตรวจสอบความถูกต้องพื้นฐานอย่าง compiler ทำให้ข้อผิดพลาดหลาย ๆ อย่างจะถูกตรวจพบตอน run time
  • การ refactoring มีโอกาสสร้างความผิดพลาดในระบบได้สูง
  • ต้องมีการทดสอบที่เข้มข้นกว่าภาษาที่ต้องมีการ compile
  • การทำในรูปแบบธุรกิจจะทำได้ยากกว่า เพราะโดยปกติซอฟต์แวร์จะรันจากโค้ดโดยตรง ในกรณีที่ต้องการซ่อนโค้ด ต้องใช้เครื่องมืออื่น ๆ เพิ่มเติม เช่น py2exe

จะเห็นได้ว่าการนำ C/C++ มาช่วย โดยการเขียนระบบพื้นฐาน จะช่วยได้แค่ข้อจำกัดในส่วนของ performance เท่านั้น และข้อจำกัดต่าง ๆ เกิดจากธรรมชาติของภาษา dynamic เอง เทคโนโลยีในกลุ่มสุดท้ายจะอยู่ตรงกลางระหว่างสองกลุ่มแรก คล้าย ๆ กับที่ Java เป็น

ภาษาเกิดใหม่

ในระยะหลังแนวทางของภาษาเกิดใหม่ค่อนข้างมีแนวโน้มไปในทิศทางเดียวกันคือ เป็นภาษาแบบ compile ที่มีความยืดหยุ่นในระบบ type มากขึ้น และมีกลิ่นอายของภาษา functional มากขึ้น ภาษาในกลุ่มนี้ได้แก่ Go, Vala, D, Rust เป็นต้น โดยภาษาที่ผมจะโฟกัสมากเป็นพิเศษคือ Vala และ D เนื่องจากทั้งสองภาษามีความพร้อมในการใช้งานมากกว่าภาษาอื่น ๆ ในงานที่ผมทำอยู่ตอนนี้ ผมเลือกที่จะใช้ Vala เพราะมีความพร้อมด้านไลบรารีมากกว่า (Vala ใช้งานไลบรารีของโครงการ GNU และ GNOME ได้เกือบทั้งหมด) แต่ D จะมีข้อได้เปรียบในส่วนของ features ของภาษา

ข้อดี

  • ในกรณีส่วนใหญ่ performance ของ Vala และ D ไม่ต่างกับ C/C++ มากนัก
  • Vala และ D มีโครงสร้างคล้าย ๆ Java หรือ C# การศึกษาทำความเข้าใจทำได้ไม่ยาก (แต่ก็ขาดความเซ็กซี่ไปในตัว)
  • ใช้งานง่าย ทั้ง Vala และ D มี feature และไลบรารีที่ช่วยให้พัฒนาง่ายกว่า Java ด้วยซ้ำ แต่ก็ไม่ง่ายไปกว่าภาษาสคริปต์
  • มีระบบ type ที่เข้มงวดขึ้น ลดความผิดพลาดบางอย่างลง
  • มีระบบบริหารจัดการหน่วยความจำที่มีประสิทธิภาพ โดยใช้ reference counting แต่ไม่ครอบคลุมทุกกรณี อาจทำให้ซอฟต์แวร์เน่าได้ แต่มีความเสี่ยงน้อยกว่า C/C++ มาก
  • ทำงานร่วมกับ C ได้ดี ทำให้มีโอกาสเข้าถึงไลบรารีจำนวนมากได้

ข้อเสีย

  • ในเมื่อเพิ่งเกิดใหม่ ก็มีไลบรารีให้ใช้น้อยกว่าคนเก่าเป็นธรรมดา หรือแม้แต่ Vala ที่มีไลบรารีให้เลือกใช้มากมายก็ตาม ก็ยังมีจุดที่ยังไม่ครอบคลุม การเรียกใช้ไลบรารีในภาษา C ในหลาย ๆ กรณีต้องออกแรงเอง
  • เครื่องมือที่มีให้ยังไม่ดีพอ ยิ่งเป็นภาษา static ด้วยแล้ว เครื่องมือมีผลกับการพัฒนามาก
  • เอกสารและองค์ความรู้ในการศึกษาทำความเข้าใจยังมีน้อย
  • มีปัญหาขึ้นมา หาคนถามยาก ต้องแก้ด้วยตัวเองไปก่อน
  • หานักพัฒนายาก ยกเว้นจะสร้างเอง

ไม่มีใครได้ทุกอย่าง ดังนั้นจึงต้องมีการเลือกเกิดขึ้น ข่าวร้ายคือ ทุกตัวเลือกมีความเสี่ยง โดยส่วนตัวผมเลือก Vala เพราะพัฒนาได้ไม่ยากนัก แต่ performance สูง โดยผมต้องเสี่ยงกับปัจจัยที่เกิดจากความใหม่ของภาษา ซึ่งผมวิเคราะห์ว่าปัญหาเหล่านั้นจะมีแนวโน้มไปในทางที่ดีขึ้น เนื่องจากตอนนี้โครงการจำนวนมากของ GNOME ได้หันไปใช้ Vala เป็นภาษาหลัก โดยเฉพาะอย่างยิ่งโครงการในความดูแลของ Canonical ดังนั้นซอฟต์แวร์ใหม่ ๆ บน Ubuntu จะค่อย ๆ ทยอยหันไปใช้ Vala

ทั้งหมดนี้ ตั้งอยู่บนพื้นฐานที่ว่าเราเลือกได้ สำหรับคนที่ใช้ Java เป็นภาษาหลัก และมีโค้ดปริมาณมากที่เขียนด้วย Java ก็ต้องถือว่าไม่มีตัวเลือก ในระหว่างที่รอการอุดช่องโหว่จาก Oracle อยู่นี้ ผมขอให้ทุกท่านโชคดีครับ

Hiring! บริษัทที่น่าสนใจ

Carmen Software company cover
Carmen Software
Hotel Financial Solutions
Next Innovation (Thailand) Co., Ltd. company cover
Next Innovation (Thailand) Co., Ltd.
We are web design with consulting & engineering services driven the future stronger and flexibility.
KKP Dime company cover
KKP Dime
KKP Dime บริษัทในเครือเกียรตินาคินภัทร
Kiatnakin Phatra Financial Group company cover
Kiatnakin Phatra Financial Group
Financial Service
Fastwork Technologies company cover
Fastwork Technologies
Fastwork.co เว็บไซต์ที่รวบรวม ฟรีแลนซ์ มืออาชีพจากหลากหลายสายงานไว้ในที่เดียวกัน
Thoughtworks Thailand company cover
Thoughtworks Thailand
Thoughtworks เป็นบริษัทที่ปรึกษาด้านเทคโนโยลีระดับโลกที่คว้า Great Place to Work 3 ปีซ้อน
Iron Software company cover
Iron Software
Iron Software is an American company providing a suite of .NET libraries by engineer for engineers.
CLEVERSE company cover
CLEVERSE
Cleverse is a Venture Builder. Our team builds several tech companies.
Nipa Cloud company cover
Nipa Cloud
#1 OpenStack cloud provider in Thailand with our own data center and software platform.
Bangmod Enterprise company cover
Bangmod Enterprise
The leader in Cloud Server and Hosting in Thailand.
CIMB THAI Bank company cover
CIMB THAI Bank
MOVING FORWARD WITH YOU - CIMB is the leading ASEAN Bank
Bangkok Bank company cover
Bangkok Bank
Bangkok Bank is one of Southeast Asia's largest regional banks, a market leader in business banking
MuvMi (Urban Mobility Tech Co.,Ltd.) company cover
MuvMi (Urban Mobility Tech Co.,Ltd.)
Shape the future of urban mobility towards affordable, clean, and safe solutions
T.N. Digital Solution Co., Ltd. company cover
T.N. Digital Solution Co., Ltd.
TNDS has been involving in every first move of banking’s major digital transformation.
KBTG - KASIKORN Business-Technology Group company cover
KBTG - KASIKORN Business-Technology Group
KBTG - "The Technology Company for Digital Business Innovation"
Siam Commercial Bank Public Company Limited company cover
Siam Commercial Bank Public Company Limited
"Let's start a brighter career future together"
Icon Framework co.,Ltd. company cover
Icon Framework co.,Ltd.
Global Standard Platform for Real Estate แพลตฟอร์มสำหรับธุรกิจอสังหาริมทรัพย์ครบวงจร มาตรฐานระดับโลก
REFINITIV company cover
REFINITIV
The Financial and Risk business of Thomson Reuters is now Refinitiv
H LAB company cover
H LAB
Re-engineering healthcare systems through intelligent platforms and system design.
The Gang Technology Co., Ltd. company cover
The Gang Technology Co., Ltd.
We're a Digital Agency that helps our customers transform their business into digital with ease.
LTMH company cover
LTMH
LTMH มุ่งเน้นการพัฒนาผลิตภัณฑ์ที่สามารถช่วยพันธมิตรของเราให้บรรลุเป้าหมาย
Seven Peaks company cover
Seven Peaks
We Drive Digital Transformation
Wisesight (Thailand) Co., Ltd. company cover
Wisesight (Thailand) Co., Ltd.
The Best Choice For Handling Social Media · High Expertise in Social Data · Most Advanced and Secure
MOLOG Tech company cover
MOLOG Tech
We are Modern Logistic Platform, Specialize in WMS, OMS and TMS.
Data Wow Co.,Ltd company cover
Data Wow Co.,Ltd
We enable our clients to realize increased productivity by solving their most complex issues by Data
LINE Company Thailand company cover
LINE Company Thailand
LINE, the world's hottest mobile messaging platform, offers free text and voice messaging + Call
LINE MAN Wongnai company cover
LINE MAN Wongnai
Join our journey to becoming No.1 food platform in Thailand

บทความดีมากเลยครับ ชีวิตผมน่าจะจบลงตรง C, Java, C# ส่วน JavaScript ก็หาโค้ดแล้วปรับๆ ใช้เอา เหอะๆ

มีต้องแก้นิดหน่อย ดังนี้

  • หน้าวงเล็บเปิด หลังวงเล็บปิด เว้นหนึ่งเคาะ
  • ไลบรารี่ -> ไลบรารี; ซอฟท์แวร์ -> ซอฟต์แวร์; แพกเกจ -> แพ็คเกจ; บุคคลากร -> บุคลากร; บัก -> บั๊ก; ระบบนิเวศน์ -> ระบบนิเวศ; Gnome -> GNOME; พิารณา -> พิจารณา
  • Script Languages ไม่ต้องมี s
  • MB น่าจะแก้เป็น เมกะไบต์

ด้วยเหตุที่ C/C++ เป็นเทคโนโลยีรุ่นปู่ก็จะมีข้อดีข้อเสียที่ต้องพิารณาดังนี้

พิารณา => พิจารณา

  • ระบบนิเวศในการพัฒนาซอฟต์แวร์ที่กระทัดรัด

กระทัดรัด => กะทัดรัด

เทคโนโลยีในกลุ่มสุดท้ายเป็นจะอยู่ตรงกลางระหว่างสองกลุ่มแรก คล้าย ๆ กับที่ Java เป็น

เป็นจะอยู่ตรงกลาง ?

แต่ก็ขาดความ เซกซี่ไปในตัว

เซกซี่ => เซ็กซี่

ดังนั้นซอฟต์แวร์ใหม่ ๆ บน Ubuntu จะค่อย ๆ ทะยอยหันไปใช้ Vala

ทะยอย => ทยอย

gamegolf Sat, 23/02/2013 - 20:21

ผมยังชอบ C/C++ อยู่ครับ

ถึงเรื่อง data struct จะวุ่นวายหน่อยก็เถอะ = =

Architec Sat, 23/02/2013 - 20:48

C++ กับภาษาสคริปต์ยังไงผมก็ไม่เขียนเป็นหลัก เหมือนกับภาษาใหม่ๆ ถ้าไม่มีแบคเป็นบริษัทใหญ่หรือไม่มี Road Map ยาวๆผมก็ไม่เอาไปเขียนแน่ (แบบ Ruby) เพราะ Learning Curve มันสูงแทบจะไม่มี doc แล้วถ้าเกิดคนไม่นิยมหรือมีแนวโน้มว่าจะตายผมก็เสียเวลาฟรีๆน่ะสิ

ไม่ตายครับ แต่มันหลาย compiler ที่จะต้องเขียนให้ถูกกับหลัก Syntax เฉพาะของแต่ละเจ้าอีก แล้วก็ไม่รู้ว่าถ้าเขียนกับค่ายอิสระหรือ OSS แล้วมันจะอยู่ยืดไหม (เว้นแต่ MS VC++ ยืดอยู่แล้ว) พูดไปก็ปวดประสาทครับ

massacre Sat, 23/02/2013 - 20:56

java มีปัญหาเรื่องความปลอดภัยเฉพาะโปรแกรมที่ทำงานบน browser อย่างเดียวนี่ครับ
ผมไม่แน่ใจว่าปัญหาเรื่องความปลอดภัยของ java เกิดขึ้นหลังจาก Oracle เป็นเจ้าของหรือเกิดปัญหามาก่อน
ถ้าเกิดปัญหาแบบนี้ตั้งแต่แรก ผมว่ามันก็ห่วยเกินไป
ผมว่า java เป็น framework language ที่ดีที่สุดแล้ว และภาษาส่วนใหญ่ก็เหมาะกับเขียนโปรแกรมคนเดียวซะมากกว่า

ติดจากเว็บเพราะในเครื่องมี JVM ครับ

จะรันซอฟต์แวร์ของ Java ต้องมี JVM

เมื่อลง JVM แล้วมันก็จะเปิดการทำงานที่ Browser ด้วย ดังนั้นเพื่อไม่ให้ถูกแฮคผ่านเว็บก็ต้องปิดปลั๊กอิน แต่จะมีซักกี่คนที่จะปิดมัน

แต่ในบทความนี้มันมีความเสี่ยงเรื่องลิขสิทธิ์ด้วยครับ ช่วงนี้ออราเคิลขี้หงุดหงิด วันดีคืนร้ายอาจโทร.ไปเรียกทนายกลางดึกมาฟ้องใครก็ได้

ไม่ได้มีปัญหาเฉพาะด้านความปลอดภัยด้านเดียว

ตอนนี้ MySQL เริ่มไม่เสถียรแล้ว วันนี้กรอกข้อมูลลงตารางไม่ได้ drop สร้างใหม่ไม่ได้ บอกมีอยู่แล้ว (ไฟล์ใน folder data ก็ไม่มี ) สั่ง repair success แต่ไร้ความเปลี่ยนแปลง ลบลงใหม่ก็ไม่ได้ เปลี่ยน upgrade version start service ไม่ได้ สุดท้ายลง version เดิมถึงจะทำได้ งงกับมันจริงๆ

ส่วนตัว แล้ว .NET ครับ จบ

แต่จะไปเขียน android หรือ iOS ต้องใช้ตามนั้น

ทุกวันนี้ประกาศเลิก JAVA เป็นทางการละ
คงเหลือไว้ที่ android เท่านั้น

เห็นด้วยครับเรื่องไม่มีตัวเลือกอื่นที่ดีเท่า .NET

ทั้งจำนวน resource, community แล้วก็ความเป็นภาษา Strong type ซึ่งเป็นข้อดีในการเขียนงานระดับ Enterprise มันเป็นตัวเดียวที่คล้ายกับ Java ที่สุดจริงๆ

เรื่องย้าย ผมว่าถ้าถึงจุดหนึ่ง Java ล่มสลาย (ซึ่งไม่มีทางเกิดขึ้นหรอก แค่ลดความนิยมลงไป) แล้ว Java developer ทั้งหลายจะย้ายจริงๆ รับรองว่าย้ายไป C#.NET เยอะที่สุดครับ ด้วย syntax และ style มันคล้ายกันมากแทบไม่มี Learning curve อะไรเลยในตัว syntax

จะมีบ้างก็คือในตัว Framework แต่ถ้าข้ามมาแล้วจับ .NET MVC เลยก็สบายหน่อย เพราะมันก็อยู่บนคอนเซปท์ MVC เหมือนกัน

อยู่ที่คนเขียน Java แหละครับว่าจะเรื่องมากกับความไม่อิสระ "เท่า Java" ของ .NET รึเปล่า ถ้าไม่ซีเรียสก็ย้ายกันง่ายๆครับ

ผมตัดสินใจย้ายเมื่อประมาณห้าปีที่แล้วครับ หลังจากค้นพบสัจธรรมว่า เกาะ Microsoft กินคงไม่อดตาย :D ตอนนี้ก็ยัง Happy กับ .NET ดีอยู่่ กำลังเริ่มใช้ node.js เพิ่มเติม

c++ แค่ใส่ เรื่อง oop เข้าไปใน c แต่เราก็สามารถเขียน c ใน c++ ได้เลยถ้าเราไม่ใช้ class แต่ถ้าเราออกแบบ class ดีๆ code จะดูเป็นระเบียบน่ะ ไม่รก

อาจจะมีการเข้าใจผิดกันนะครับ Java ที่มีปัญหาคือ ทำงานบนเครื่อง Client และถูกโจมตีผ่าน Web Browser ซึ่งทำงานอยู่ Client Side หรือผ่าน Applet

แต่การใช้งาน Java ที่แพร่หลายจริงๆนั้น ทำงานอยู่บน Server Side แล้วจะหาภาษาใหม่ทำไมหล่ะครับ???

อย่าคิดว่า 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 อีก

champillon Sun, 24/02/2013 - 00:21

In reply to by best

IBM ก็เป็นอีกหนึ่งมาเฟียบนโลกไอที ที่ฆ่า Software มาแล้วร้อยพันครับ

ส่วน Google ไม่มีความเห็นครับ เพราะไม่ได้ คลุกคลีอย่างใกล้ชิด

best Sun, 24/02/2013 - 01:00

In reply to by champillon

ผมอ่าน บทความนี้ ผมสรุปใจความได้แบบนี้นะครับ

JAVA เป็น ภาษาที่ดีเป็นที่นิยม (ผมเห็นด้วย และก็ชอบ)
และJAVA ภายใต้การบริหารงานของ Oracle ผลออกมาได้น่าผิดหวัง (ผมเห็นด้วย)
สุดท้าย แล้ว JAVA จะถูกลดบทบาท ลงไปแบบต่อเนื่อง (ดูน่าจะเป็นแบบนั้น)

บทความจึงเสนอ ภาษาใหม่ๆ ที่จะมาทดแทน ในความเป็นจริงไม่มีหรอกครับ
อะไรที่มี คุณ สมบัติ แบบ java

JAVA เป็น ภาษาที่ออกมาแบบมาดี
แต่การพัฒนา มีปัญหา

ช่วงก่อน จะมาเป็น oracle SUN ดู ตันหมดมุขที่จะพัฒนา JAVA
ตอนย้ายมาหา oracle ยังแอบหวังว่า จะปลุกผี

สุดท้าย ก็ไม่ได้เรื่องตามเดิม

ส่วน MS พัฒนาเก่งมาก ตอนนี้ C# นำ JAVA แบบไม่เห็นฝุ่นแล้ว

ผิดหวังกับ oracle สุดๆๆครับ

.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

คือไม่ถึงกับโดนทิ้งโดนดอง แต่รุสึกว่า informix กับ rational มัน "หนืด" ไปเยอะตั้งแต่ตกอยู่ในมือ ibm .. หรือว่าคิดไปเองหว่า :?

แถม neutrality ยังลดไปเยอะมาก.. แต่มันก้อแหงล่ะ โดนซื้อไปแล้วนินา >.<"

ถ้าไปอยู่ในมือ Google แล้วนอกจาก Java ที่มีทั้ง Solaris แล้วก็ฮาร์ดแวร์ทั้งหลายเขาจะบริหารยังไง เพราะ Oracle เขาก็มีเหตุผลพอที่จะซื้อไว้ integrated เข้ากับ product ที่มีอยู่เดิม ส่วน IBM ก็ไม่ต้องห่วง ถ้าไม่ดองก็ทำเหมือน Oracle

แต่ถ้าเป็น Google เนี่ย จะให้เขาขอดเกล็ดเหลือแต่ Java กับ MySQL เนี่ย ซื้อมาก็ไม่คุ้มครับ

มันไปเรื่อง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 บนเว็บ ดังนั้นน่าจะไม่เข้าข่ายประเด็นนี้

+1 เสริมความเห็นนี้ครับ ในฐานะที่เป็นทั้ง j2ee และ .net developer ไม่คิดว่าจะต้องหาอะไรมาแทน java นะ
ตัวปัญหาคือ java applet เท่านั้น คิดว่ามีหลายคนคงแยกไม่ออก

ประมาณ 10 โปรเจคของผมเป็น j2ee + tomcat + linux ไป 9 แล้ว อีกอันเป็น .net + iis + windows เพราะโดนสเปคบังคับ ที่ส่วนใหญ่เลือกเป็น java ก็เพราะปัจจัยเรื่องราคากับความยืดหยุ่นของ library เป็นหลัก

+1 ถูกต้องแล้วครับ ข่าวที่ออกมารู้สึกว่าจะทำให้คนทั่วไปเข้าใจผิด ซึ่งผมดูแล้วเสมือนหนึ่งตั้งใจโจมตีแพล็ตฟอร์ม JAVA

ผมว่าข่าวที่ออกมามันก็มีผลครับ เด็กๆใหม่ๆที่จะเริ่มศึกษา มาเจอบรรยากาศ 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 น่าจะดีกว่า

งานนี้ไงคงขอฝากความหวังไว้ที่กูเกิลนั่นแหละ รายนี้คงมีแรงจูงใจมากสุดแล้ว และมีพลังพอจะไปเจรจากับออราเคิลด้วย.. เพียงแต่ถึงขั้นจะเอามาฟรีๆ เลยมันคงไม่เหมาะอยู่ดี ก้อได้แต่หวังว่าจะสรุปตัวเลขและแนวทางที่เหมาะสมกันได้โดยไว

ข่าวเมื่อไหร่ : แล้วก็มีวันนี้ กูเกิ้ลซื้อจาว่าจากออราเคิลแล้ว

ปัญหาคือ เมื่อไหร่เนี่ยสิ -_-'

//เตรียมลี้ภัย

ปัญหาความปลอดภัยคือ 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 อนุญาติให้ ซึ่งค่อนข้างหลวมนั่นคือปัญหา

C#, .NET, Mono คือ คำตอบ ณ เวลานี้ของผมครับ เพราะขีดความสามารถในการ Port โค้ด Java ที่มีปัญหามาได้ และการใช้ Memory, CPU ตัว Mono ทำได้ดีกว่ามาก ตอนนี้ Mono รองรับ ASP.NET MVC3 แล้วครับ

ไม่เคยลอง mono เลยครับ มันใช้งานได้จริงเหรอครับ

แล้ว asp.net ธรรมดา work ไหมครับ

แล้วใช้ EF ได้ไหม
แล้วเครื่องมือจะ ok แบบ VS เหรอครับ

สิ่งที่ผมต้องการจะสื่อ คือ ด้วยเหตุผลที่กล่าวถึงในบทความ ผลกระทบน้อยมากครับ ไม่ถึงกับทำให้น่าใช้น้อยลง และถึงย้ายได้ก็ยังไม่จำเป็นต้องย้ายครับ

ประเด็น:

  • ย่อหน้าแรก บทความพูดถึงจุดแข็งของ java ซึ่งเป็น java ทางฝั่ง server แต่อ้างถึง link ที่เป็นความไม่ปลอดภัยของ java ฝั่ง client แล้วสรุปว่า java เป็น platform ที่น่าใช้น้อยลง => ผมยังไม่เห็นความเกี่ยวข้องของเหตุและผล ทำให้รู้สึกว่ายังไม่มีความจำเป็นต้องย้าย แม้จะเป็นกลุ่มคนที่ย้ายได้ไม่ลำบากก็ตาม
  • JVM มีข้อดีมากมายโดยเฉพาะเรื่อง performance ที่ใครหลายคนคิดว่า JVM ช้า จริง ๆ แล้ว JVM เร็วมาก จะเป็นรองก็แต่ภาษาตระกูล C เท่านั้น ซึ่งการใช้งานส่วนใหญ่จะไม่ได้ต้องการ performance ระดับที่จะทำให้ผู้ใช้รู้สึกได้ถึงความแตกต่างด้วยซ้ำ ถ้าจะหา platform ที่มาแทน JVM ได้ในเรื่อง memory management + performance อาจจะไม่ได้หาได้ง่าย ๆ
  • link เกือบทั้งหมด พูดถึง java applet มีเพียง 1 link ที่พูดถึงการฟ้องร้องเรื่อง API ซึ่งการฟ้องร้องน่าจะไม่กระทบกับผู้ใช้ปลายทางแบบเรา ๆ ยกเว้นว่าเราจะไปสร้างภาษาหรือ platform ใหม่ ทำให้ผมคิดว่าเรายังไม่ต้องรีบหนีไปใช้ OpenJDK หรือ implementation อื่น ๆ ด้วยเหตุผลเรื่องลิขสิทธิ์ หรือกรณีแย่สุดเรื่อง API คือเราเลิกเขียน java แล้วไปใช้ภาษาอื่นที่รันบน JVM แทน
  • และอีก 1 link เรื่องไม่จ่ายเงินก็จะไม่แก้บั๊ก อันนี้เป็นความเสี่ยง แต่ผมไม่รู้ว่าในอดีต sun ตอบสนองต่อการแก้บั๊กได้เร็วเพียงใด และ bug ที่ link นี้พูดถึงคือเรื่องอะไร ร้ายแรงแค่ไหน เพราะ open source platform ดัง ๆ หลายตัวก็ปล่อยให้มีบั๊กค้างคาเป็นปี ๆ เหมือนกัน
  • การย้ายไป platform หรือภาษาอื่นโดยเฉพาะภาษาใหม่ (โดยไม่จำเป็น) กลับเป็นเรื่องอันตรายมากกว่า เพราะภาษาเหล่านั้นยังไม่ถูกใช้งานมากพอที่จะทำให้เจอปัญหาที่ซ่อนอยู่ ต่างกับ JVM ที่ถูกใช้งานอย่างกว้างขวางมาอย่างต่อเนื่องยาวนาน ยิ่งงานใหญ่ ยิ่งซับซ้อน ยิ่งเสี่ยงกับความใหม่ของ platform มากกว่า
  • กรณีที่ oracle หักดิบ เก็บเงินคนใช้หรือคนขายน่าจะเกิดได้ยากมาก เหมือนเป็นการตีตราบาปให้ตัวเองทำให้ทุกคนเห็นว่าต่อไปนี้อะไรของ oracle อย่าไปยุ่ง อย่าไปพัฒนาต่อยอด (ถ้าเกิดจริงค่อยย้าย)
  • ถ้าพูดถึงความเสี่ยงเรื่องลิขสิทธิ์ (ผมเห็นว่า) ภาษาเกิดใหม่อย่าง vala หรือ D ยังเสี่ยงที่จะไม่ได้รับความนิยมและหยุดการพัฒนาไปเองมากกว่าครับ

ปล: ผมชอบ JVM แต่ไม่ชอบ java

ย้ายซะเถอะครับ ..... มันไม่เป็นของ Public อีกต่อไปแล้ว ทุก ๆ อย่างในโลกนี้มีเกิด แล้วก็มีตาย ตอนนี้ก็น่าจะเป็นเวลาที่ดีที่จะปล่อยให้มันตายไปซะที จาวาถึงจะดี แต่ก็ไม่ใช่ดีที่สุด มันอาจจะดีที่สุดในเวลานั้น และนั่นก็เกือบยี่สิบปีแล้วมั้ง มันโบราณไปเรียบร้อยแล้ว จะไปติดหนึบกับของโบราณ ๆ ล้าสมัยอย่างนั้นอยู่ทำไมกันหละครับ

โดนบางคนบอกครับว่า Java ยังเหมาะสมกับการเรียน OOP ในชั้นเรียน เอาเข้าจริง ผมบอกเลยว่า C# หัดตั้งแต่ตอนนี้แหละรุ่งกว่า มันมีทุกอุปกรณ์แล้วตอนนี้แม้แต่ PS4

มันเป็นภาษาที่มีค่าใช้จ่ายน่ะครับ ... จริงอยู่ว่ามันมีรุ่น Express แต่ถึงเวลาที่จะเอามาใช้ได้ระดับ production แล้วก็ต้องเสียเงินซื้ออยู่ดี แต่ Java นี่ถ้าเป็นแล้วมันจะไปยาวๆ มาก

พูดไปก็รู้สึกประหลาดๆ กับคำพูดตัวเองครับ ... ในไทยงาน C# น่าจะหาง่ายกว่าเยอะ

ในแง่การเรียน c# จะทำให้เด็กโฟกัสกับ programming ได้มากกว่าครับ

เรียน java นี่ต้องตบตีกับ environment ที่ไม่ค่อยจะแน่นอนนของมันก่อน

ข้อดีของจาวาก่อนนี้เลย.. เพราะมันเปิดกว้าง เลยทำให้มีตัวเลือกที่หลากหลาย

ส่วนข้อเสียของจาวาก่อนนี้คือ.. มันเปิดกว้าง เลยทำให้มีแนวทางที่หลายหลาก

ถ้าออราเคิลจะปิดแบบแอปเปิลยังพอโอเค.. แต่ตอนนี้ดันปิดแบบ หวงก้าง นี่ซิ

นั่นแหละครับ ประเด็น java ไม่ได้ดีที่สุดสำหรับทุกเรื่อง ถ้าจะย้ายด้วยเหตุผลอื่น เช่น ต้องใช้ green thread แบบนี้ก็สมควรย้าย แต่ถ้าย้ายเพราะแค่ java ถูก oracle ยึดครอง ผมเห็นว่าจะเป็นการตื่นตูมเกินไป รอให้เกิดเรื่องที่กระทบจริง ๆ แล้วค่อยย้าย ดีกว่าย้ายไปเสี่ยงกับของใหม่ที่ระบบจะล่มหรือคนจะเลิกเมื่อไหร่ก็ไม่รู้ (ถ้าเป็นงานเล็ก ๆ เสี่ยงหน่อยก็คงไม่มีปัญหาอะไร)

ส่วนเรื่องความเก่าและโบราณ ผมคิดว่าคุณกำลังพูดถึง java as a programming language ครับ แต่ java ที่ผมพูดถึง คือ java as a platform (JVM) ซึ่งบน JVM นอกเหนือจาก java แล้ว ก็มีภาษาอื่นอีกหลายแนวให้เลือก ซึ่งภาษาเหล่านี้ก็ไม่ได้โบราณเลย ผมก็ไม่ได้เขียน java มานานแล้วเหมือนกันแต่ยังใช้ JVM อยู่

JVM ก็ไม่ได้ดีเลิศไร้ที่ตินะครับ มีหลายอย่างเหมือนกันที่ทำให้ผมอยากย้ายหนีออกไป แต่ไม่ใช่เรื่อง oracle หรือ security ของ applet แน่ ๆ

เหมือน VB6 นี่คือยังไงหรอครับ

แต่ไงคงต้องจับตาแนวทางที่ต่อๆ ไปให้ดีเช่นกัน.. ดูๆ แล้วภาษาเริ่มต้นจะเน้นไปที่ js มากขึ้น ส่วนโลก .net จะโอนไปที่งานที่ต้องการ "รีด" เปนพิเศษ (กินพื้นที่ของกลุ่ม C มากขึ้น แล้วขยับไปอยู่ตรงกลางแทน เช่นส่วนที่เน้นเรื่อง perf เน้นการ scale)

ผมคนหนึ่งที่เริ่มต้นด้วย VB6 นะครับ ตอนนี้เป็น VB.Net แล้วก็ไม่เห็นจะมีปัญหาอะไรนิครับ เขียนง่ายกว่าเดิมอีก

VB6 โดนทิ้งไงครับ ก่อนหน้านี้ซัก 2 - 3 ปี ผมเห็น Microsoft แจกหนังสือ VB.NET ฟรี ส่วน C# ต้องเสียเงินซื้อ VB.NET ก็ดีครับ ง่ายดี แต่พอต้องเขียนอะไรเยอะ ๆ โดยเฉพาะ Lambda Expression ผมว่า C# มันเขียนสั้นกว่า

ผมว่า VB6 มันตายเพราะ Limitation และความเก่าของเทคโนโลยีมากกว่าครับ เท่าที่ผมเห็น VB6 โปรแกรมเมอร์ก็ย้ายมาเป็น VB.NET กันไม่ได้ยากมากมาย

สำหรับคนที่ไม่ใช่สายเทคนิคัลหรือนานๆ เขียนโค้ดที.. การอ่านเขียนภาษากลุ่ม VB นั้นทำได้ง่ายกว่า

อีกจุดคือแม้โค้ดจะดูไม่ค่อยกระชับ แต่ถ้าใช้พวก snippet/template/shortcut/etc คล่องๆ แล้ว จำนวนการคียจะพอๆ กัน

สงสัยมานานแล้วว่า Java เริ่มปิดมากขึ้น ต่อไป Andriod จะทำอย่างไร
มีโอกาสเปลี่ยนไปเขียนด้วยภาษาอื่นไหม?

อีกอย่าง ถ้าเปรียบเทียบอนาคตภาษา Go กับ Pyton เป็นอย่างไรบ้างครับ
และไลเซ่นส์อนุญาตฺเหมือนกันไหมครับ ?

ใครอ่านข่าวแล้วคิดว่า Java ผิดนี้คิดผิดนะครับ Java ไม่ผิด แต่เราอยากไล่เตะก้น Oracle มากกว่า

โปรเจ็คอื่นๆ ไม่ว่า MySQL หรือ Openoffice ก็ล้วนทำให้คิดได้เป็นอย่างเดียวว่าไม่น่าตกไปอยู่ในมือ Oracle เลย ไม่งั้นคงจะดีกว่านี้

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 เป็นเรื่องง่ายมากครับ มันก็มีจุดขายของมันครับ ไม่ได้เลวร้ายซะดีเดียว

นั่นสิ ทำไมต้องรังแกเค้าอยู่คนเดียว

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 ที่กำหนด

ถูกครับ แต่ 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 กับผู้ใช้ภายนอก

เหตุผลในการออกแบบผมเชื่อว่า เพื่อรองรับ 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 ยังไม่ตาย

Bug มันไม่คงอยู่ตลอดไปหรอกครับ ดังนั้นมีก็ยังดีกว่าไม่มีอยู่ดี
ผมเห็นด้วยว่า Oracle ควรจะรีบแก้ Bug นี้แต่ผมยังไม่เห็นว่า
มันเป็นอันตรายกับ server มากไปกว่าภาษาอื่นแต่อย่างใดครับ

นั้นเป็นเหตุผลที่ผมเขียนว่า "ลองคิดดูว่าถ้าเราให้ใครก็ได้ upload ไฟล์ .php
ไปบน server เราได้มันจะเกิดอะไรขึ้น" ผมกล่าวถึง PHP ครับ

เรื่องการเจาะระบบเว็บเพื่อไปวางไฟล์หรือแก้ไขไฟล์มันเป็น ฺBug ของ
application นั้นๆครับ ภาษาไหนก็ไม่รอดครับ

บั๊กมีอยู่และถูกแก้ไปเป็นเรื่องปกติครับ ปัญหาคือท่าที่ของออราเคิลที่ปล่อยให้ปัญหาอยู่นานเกินไป จนกระทั่งการโจมตีกระจายออกไปเป็นวงกว้าง อันนี้ไม่ใช่เรื่องปกติ

สิ่งที่ผมกังวลกับการใช้งานอื่นๆ นอกเหนือจาก Applet คือการสร้างความรับรู้ด้านความปลอดภัยที่ผิดไป (false sense of security) ทุกวันนี้ระบบอย่าง php หรือ fastcgi อื่นๆ ไม่มี ระบบ sandbox แต่ก็อยู่ในความรับรู้ของผู้ดูแลระบบ เช่น ไม่ควรรัน apache ด้วย root หรือ จำกัดสิทธิการเข้าถึงของ user www-data ไว้เท่าที่ต้องการจริงๆ

ระบบ sandbox ถ้าทำงานได้ถูกต้อง ผู้ดูแลระบบอาจจะไม่ได้มานั่งรีวิวว่าจะรันเซิร์ฟเวอร์แบบไหน user อะไร และ user นั้นๆ มีสิทธิอะไรบ้าง เพราะคอนฟิก sandbox อย่างถูกต้องไปแล้ว เช่นเดียว

การสร้างความรับรู้ด้านความปลอดภ้ัยที่ผิด แย่กว่าการไม่รับรองความปลอดภัยเสียอีกครับ

เดี๋ยวก็ต้องมีคนมาบอกว่า ก็ต้องรู้ด้วยตัวเองว่าไม่มีอะไรปลอดภัย 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 มีปัญหา ฟีเจอร์นี้ใช้การไม่ได้ และบั๊กของซอฟต์แวร์จะทำให้แฮกเกอร์เข้าถึงสิทธิของผู้ใช้ที่ใช้รันอยู่ทั้งหมด

ผมก็เคยได้ยินครับ และรู้ว่ามันเป็นประเด็นของ 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++ มากขึ้นเยอะ

กลายเป็นบทความเรียกแฟนคลับ 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 อยู่และไม่เห็นด้วยหรือมีมุมมองต่างจากคุณจะมาโพสความคิดเห็นที่ตรงกันข้าม ประเด็นคือคุณเปิดรับความคิดเห็นมากแค่ไหนต่างหาก

ชอบความเห็นนี้ครับ ผมก็ว่าความรู้สึกนี้มันคืออะไร ความเห็นนี้อธิบายได้ดีครับ

แล้วบทความนี้ก็ทำให้รู้สึกเปิดสมองประเทืองปัญญาดีมาก

ต้องขอบคุณหลายๆ ความเห็น

#จอกนี้ขอคารวะทุกท่าน

+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 นี่ออกจะเป็นการด่วนสรุปไปหน่อยครับ

ไม่หรอกครับ :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 เลย

แพลตฟอร์มอื่นๆ ไม่มีปัญหาเพราะไม่เคยมีฟีเจอร์ คงไม่สามารถเรียกว่าการทดแทนครับ

เห็นด้วยครับ
การนำเสนอปัญหา java ผมว่าถูกแล้ว
แต่การนำเสนอสิ่งทดแทน เป็นเรื่องยาก ผมมองไปก็มีแต่ .NET
แต่ว่า server ในโลกนี้ไม่ได้มีแต่windowนะซิ
ยังไงก็แทนที่JAVA ไม่ได้

ผมกลับได้แต่หวังว่า จะมีใครมาปลุกผี ให้ JAVA กลับมาแรงอีกครั้ง
ถ้า JAVA กลับมาแรง ผมก็จะกลับมาฝั่ง JAVA

ไม่มีใครปลุกผีได้ถ้าออราเคิลไม่หยุดครอบงำวิญญาณในทางที่ไม่ควรแบบนี้ครับ

ถ้าด๊อบบี้ยังอยู่ในอำนาจของมลฟอยล์ คงต้องรอฮอร์นนี่แฮรี่มาแจกถุงเท้ามนุษย์เงินเดือนครับ

จริงๆ ผมชอบภาษา JAVA นะครับ
แต่หลังๆ .NET พัฒนาดีกว่ามาก ในขณะ ที่JAVA เดินจงกลม
แต่ยังไง .NET มันได้แค่ window มันเลยตัด java ไม่ได้ 100%

ผมยังใช้ JAVA ทำ android อยู่ครับ

ถ้ากูเกิลขอซื้อนะ หล่อเลย

แต่เดิมซันก็เชื่องช้า หลังๆออกแนวเลอะเทอะ
ตอนนี้ oracle ก็หน้าเงินไปหน่อย

กูเกิลเอาจาวามาใช้แต่ละอย่าง ผมว่าแหลมคมกว่าเยอะครับ ได้มาจริงๆคงพัฒนาแบบก้าวกระโดด
ตอนนี้พี่แกกำลังลองผิดลองถูกทำภาษาใหม่หลายตัว แต่ดูแล้วไม่น่าจะรอด

ไม่แน่นะครับ product ตัวหลักหลายตัวของกูเกิลก็ยังใช้จาวาอยู่

ผมไม่เห็นด้วยกับคุณลิ่วครับ :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 เขียนทำเกมมาแล้ว ไม่ปลื้มอย่างแรง

  1. พวกบั๊กที่ควรจะกรองได้ใน compile ก็ไปอยู่ที่ runtime หมด ลำบากจริงๆอย่างที่มีเขียนในบทความ

  2. พวกตัวแปรที่ไม่มี type ระบุ หลายคนอาจจะมองว่าดีเพราะเขียนง่าย แต่ผมว่ามันยุ่งเหยิงและไม่เป็นระเบียบเลย manage ได้ยาก ถ้าเขียนพวกโปรแกรมตัวเล็กๆก็อาจจะพอได้ แต่ถ้าสเกลใหญ่ที่มีคนเป็นสิบ แล้วผลัดเข้าออกโปรเจคท์ พวกเข้าใหม่นี่ตายแน่ๆกับความไร้ระเบียบตรงนี้

  3. เนื่องด้วยมันเป็นภาษาสคริปท์ที่วิ่งบนรันไทม์ เคสนี้ไม่ได้เอาฮา แต่มันเกิดขึ้นจริงๆเมื่อโค๊ดชุดเดียวกัน รันบน single core กับ dual core แล้วให้ผลลัพท์ที่ไม่เหมือนกัน! โปรเจคท์ทำเกมของเพื่อนเจอมาแล้ว เห็นมากับตาตัวเอง

  4. performance ที่ไม่ดี

อนาคตถ้า java มันจะไม่เป็น java อย่างที่เคยเป็น ผมว่ามันก็ต้องมีอย่างอื่นมาทดแทนตรงช่องว่างนี้อยู่แล้ว ช่องว่างที่สำคัญแบบนี้มันไม่มีทางกลวงโบ๋ไปได้หรอก

การเขียนภาษาสคริปต์ต้องใช้ discipline ที่สูงกว่าภาษาคอมไพล์ครับ Python ถือว่าโอเคแล้ว เพราะเป็น duck type แล้วก็บังคับเรื่อง indent หากเป็น PHP แล้วเจอเพื่อนร่วมง่ายมักง่ายนี่ ปวดหัวมาก ๆ ดังนั้นก่อนเริ่มโครงการข้อแนะนำคือต้องกำหนด convention ในการเขียนโปรแกรมก่อน แล้วต้องยึดมั่นใน convention นั้นไว้ให้มั่น

ส่วนการทำเกม หากใช้ python เป็นกาวประสานนี่ถือว่ามาถูกทางแล้วครับ แต่หากไปเขียน algorithm หนัก ๆ มีลูปเยอะ ๆ ไม่เหมาะแน่นอน และเป็นไปได้ ควรใช้พวก numpy หรือ library ที่เขียนด้วย C มาช่วยให้เยอะที่สุด

ประเด็นมันอยู่ตรงที่ว่า คนที่ครอบครองมันอยู่ในเวลานี้ ไม่ได้ทำเพื่อสังคมหนะสิครับ ถ้าเขาทำเพื่อสังคม เขาก้อจะเห็นส่วนรวมเป็นสำคัญ และจะทำงานเพื่อบริจาค ไม่ใช่เพื่อผลกำไร มันถึงไม่น่าใช้อีกต่อไปแล้วไง

ผมว่า จะทำเพื่ออะไร จะกำไร หรือ เพื่อบริจาค ไม่ใช่ปัญหาหลัก
ปัญหาหลักคือ การพัฒนา มันช้าครับ มีปัญหาภายในเยอะ

คำว่า ไม่น่าพิศมัย ถูกต้องเลย
เพียงแต่ผมยังมองว่าไม่มีอะไรแทนที่ได้ครับ

Thaicomp Tue, 23/04/2013 - 13:43

สำหรับ 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/