มองมุม Sun ซักวัน

    ได้อ่านบทความ http://www.theserverside.com/resources/article.jsp?l=J2EE-vs-DOTNET จาก Sun ก็รู้สึกสนุกดี เลยเอามาคุยให้ฟัง

    มันเป็นบทความที่เปรียบเทียบ J2EE กับ .NET ในแง่ของการทำ Web Service เขาเริ่มต้นโดยบอกว่าเขาเป็นกลาง เอาข้อเท็จจริงมาพูด เราก็มาฟังเขาดูหน่อยว่าเขาพูดอะไรบ้าง

 

ความสามารถ

    เขาบอกว่า J2EE มีความสามารถ มากกว่า .NET ในแง่ของการจัดการ State, Persistenet Service และ Programmatic Transaction และ ยังมี vendor ช่วยทำ business process management, E-Commerce components, XML-based legacy integration และ enhanced B2B collaboration

    ส่วน .NET ก็มีความสามารถมากกว่า J2EE ในแง่ของการรองรับ browser ได้ทุกแบบ, Queue component ที่ดีกว่า

    สรุปว่าสูสีครับ (สูสียังไง? นับข้อดี Java ได้ 7 ข้อ ส่วน ถ้าเอาเข้าจริงๆ .NET ดูด้อยกว่าเยอะเลย - supojc)

 

Microsoft เดียวดาย

    Java มี partner เยอะ ช่วยกันสร้าง Solution แต่ Microsoft มาคนเดียว

 

การรองรับระบบเดิม

    เมื่อต้องการติดต่อกับ Application ที่มีอยู่แล้วในองค์กร เช่น Cobol, SAP, J2EE มี JMS, Web Service, Corba, JNI และ JCE เอาไว้เชื่อม

    .NET มี Host Integration Server, COM TI, MSMQ และ BiZTalk

    สรุป J2EE ดูดีกว่า JCE ยอดเยี่ยม ไม่มีตัวไหนของ Microsoft เทียบได้

การตลาด

    J2EE ทำตลาดมาเป็นเวลานาน มี vendor ร่วมกว่า 50 เจ้า แต่ก็จะประมาท Microsoft ไม่ได้ เพราะ Microsoft มีทีมการทำการตลาดที่แข็ง และกำลังทุมกำลังเพื่อทำการตลาดส่วนนี้

 

ความสามารถของตัว Platform เอง

J2EE มีมานานแล้ว ผ่านร้อนผ่านหนาวมาเยอะ จนวันนี้แข็งแกร่งมาก ยกเว้นบางจุด เช่น Automatic persistent ของ EJB ยังไม่เก่งนัก, JCA และ Web Serive ยังใหม่อยู่

ส่วน Microsoft ซึ่ีงเคยทำ Windows DNA มาก่อนก็มีประสบการณ์ ทำความสำเร็จมาพอสมควร แต่  CLR ของ .NET ยังใหม่นัก ยังอยู่ใน Beta ด้วยซ้ำไป, C# ยังใหม่อยู่, Web Service สำหรับ Microsoft ก็ยังใหม่เช่นกัน

 

ภาษา

.NET รองรับได้หลายภาษา เรามีความเชื่อว่าแนวคิดการใช้หลายภาษาในองค์กรเป็นสิ่งไม่ดี ด้วยเหตุผลดังต่อไปนี้

    แล้วการออกแบบ CLR ให้รองรับหลายภาษานั้น มันก็มีปัญหาเช่นกัน

เราไม่รู้สึกว่า การรองรับหลายภาษาใน CLR มันจะมีความหมายอะไรนัก

สรุปก็คือ ให้คุณระวังปัญหาที่จะเกิดดังกล่าว ถ้าคุณใช้หลายภาษาในองค์กร

Migration

พิจารณาองค์กรที่ใช้ J2EE และ WinDNA ถ้าใช้ J2EE ต่อ ก็จะมี JCA ให้เชื่อม โดยเขียน code เพิ่มนิดเดียว

แต่สำหรับ .NET ถึงแม้จะมีพื้นฐานจาก MTS และ COM+ แต่ก็ต้องเขียนใหม่เพื่อให้ได้ความสามารถแบบ Managed Code ถ้าไม่เขียนก็ยังพอที่จะเชื่อมได้

Gartner Group กล่าวไว้ว่า การปรับมาเป็น .NET ครั้งนี้ เป็นยิ่งกว่า การปรับจาก DOS มาเป็น Windows เสียอีก อาจจะต้องเขียนใหม่ 60%

 

Portability

J2EE portable และ เป็น standard มี partner เยอะ แต่เขาก็คิดว่าความ portable มันก็ยังไม่ได้ 100% แต่ก็เข้าใกล้ทุกวัน

ตรงข้ามกับ .NET อยู่บน Windows ไม่มีความ portable เลย ถึงแม้ว่า Microsoft จะบอกว่า รองรับ platform อื่นๆ อีกในอนาคต แต่ก็มีคำถามว่า บน platform อื่นจะสมบูรณ์แค่ไหน? ประวัติศาสตร์สอนให้เราไม่ไว้ใจ Microsoft เพราะ Microsoft เคยพูดทำนองนี้กับ COM แต่ก็ไม่เห็นจะเป็นจริงอะไร เราค่อนข้างจะไม่เชื่อ Microsoft ในจุดนี้

ว่าแต่ว่า portablity สำคัญกับคุณแค่ไหน? ผมมี 3 เหตุการณ์ที่น่าสนใจ

ถ้าคุณยังไม่รู้ว่าตัวเองต้องสนใจ Portablitity หรือไม่ ก็ลองตั้งคำถามให้กับตัวเองดูว่า ถ้าคุณเป็น Consultant แล้วจำเป็นต้องเลือกสิ่งดีๆ ให้กับลูกค้า คุณจะเลือกอะไร

ผมขอบอกว่า Consultant ชั้นนำเลือก J2EE เยอะครับ เขาไม่ได้เลือกเพียงเพราะว่า Web Service แต่เขาดูถึง Application ด้วยครับ

นั่นทำให้ J2EE ในสายตาเราแจ่มจรัส!

Web Service

J2EE ทำ Web Service ผ่าน JAXP และ ebXML และจะมีการรองรับใหม่ๆ ตามมาอีกมาก และแน่นอนครับ ยังมี Vendor ช่วยทำอีกมากด้วย

ส่วน .NET ก็มีเครื่องมือช่วยทำ Web Service เช่นกัน แต่ .NET ก็ยังรองรับ Web Service ไม่สมบูรณ์ .NET ยังไม่รองรับ ebXML

เครื่องมือ

J2EE มี Forte, JBuilder, Visual Cafe, Visual Age และอื่นๆ อีกมาก แต่ Microsoft มีเพียงตัวเดียวคือ Visual Studio.NET

ขอสรุปว่า Microsoft ชนะขาดครับ เพราะ Visual Studio.NET เหนือกว่าทุกตัวที่กล่าวมา

Shared Context

Shared Context คือความสามารถ ที่ Web Service ต่างๆ ต้องใช้ร่วมกัน เช่น username, passoword และเลขที่บัตรเครดิต ซึ่งใส่ครั้งเดียว Web Service ต่างๆ จะดึงเอาไปใช้งานได้ ไม่ต้องใส่ซ้ำ

J2EE รองรับการ Shared Context โดยใช้ decenterized และ distributed Database ซึ่งใช้ JAXP และ JDBC เพื่อดึงข้อมูลออกมา แต่ Shard Context ของ J2EE ยังไม่เกิดครับ  Sun กำลังจะสร้างมาตรฐานขึ้นมาให้ใช้

ส่วน .NET นั้นเป็น Database แบบรวมศูยน์ ที่ Passport.NET

สรุปคือทั้งสองวิธีมีข้อดีข้อเสียครับ ซึ่งข้อดีของ J2EE คือ

ข้อดีของ .NET

ค่าใช้จ่าย

ต้องดูที่ Hardware ครับ J2EE นั้นกว้างมาก จะใช้ Hardware แบบแพงสุดๆ ก็ได้ หรือจะถูกมากๆ ก็มี แต่ .NET นั้น ต้องถูกเข้าว่า เพราะต้องใช้ Win32 Platform

 

ประสิทธิภาพ

J2EE มีประสิทธิภาพสูงเพราะสามารถลด Traffic ของ Internet โดยการทำ State-full Application, และ Cache ที่มีประสิทธิภาพสูง และที่ J2EE เหนือกว่า คือ programmer สามารถปรับกลไกภายในได้เอง ในทางกลับกับ .NET ไม่ได้แสดงอะไรให้เห็นเลยว่ามีประสิทธิภาพสูงกว่า

ถ้าไม่ปรับอะไร .NET จะเร็วกว่า (เร็วกว่ายังไง? - supojc) แต่ถ้าโปรแกรมเมอร์เก่ง ปรับกลไกภายในเป็น J2EE จะเร็วกว่า

การขยาย

J2EE ชนะขาด เพราะสามารถปรับตัวเองเข้ากับ Hardware ที่มีประสิทธิภาพสูงได้ แต่ .NET ติดยึดกับ Win32

 

สรุป

ศึกนี้คงเหมือนหนังชีวิต ดูกันยาวๆ แต่มีจุดที่น่าสนใจ Vendor ที่มาทาง J2EE มักจะรุ่งเรือง แต่ถ้าไปทาง Microsoft มักจะรุ่งริ่ง เพราะฉะนั้น เลือกให้ดี

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

แล้วคุณควรจะทำอย่างไร? ทั้งสองตัว ดีทั้งคู่ มุ่งสู่เป้าหมายเดียวกัน การเลือกตัวไหนดี ให้คุณพิจารณา ถึงขนาดที่ต้องขยายในอนาคต ปริมาณผู้เชี่ยวชาญ ความสัมพันธ์กับ vendor อย่าไปสนใจที่ความสามารถที่เพิ่มขึ้นเพียงเล็กน้อย (ฟันธงไปเลยสิ! รู้นะว่าคิดอะไรอยู่ - supojc)

มาลองดูคำกล่าวสนับสนุนแต่ละตัวกัน

สนับสนุนทั้ง 2

ฝ่ายสนับสนุน .NET

ฝ่ายสนับสนุน J2EE

สรุปแล้ว J2EE เจ๋งกว่า .NET ครับ

 

-------------------------------------------------------------------------------------

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

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

ผมคงไม่ชี้แจงโต้เรื่องเหล่านี้ มีแต่จะแซว Sun เล่นๆ ซะหน่อย Sun เขียนบทย่อ ของเรื่องนี้ ก่อนที่จะทำ link ไปให้ ว่า Java ครองตลาด application server อยู่ถึง 96% ผมคงไม่ได้บอกว่า Sun นั่งเทียนเขียนตัวเลขนี้ขึ้นมานะครับ แต่ผมอยากจะบอกว่า ต่อให้ 100% ก็ไม่มีความหมายครับ ถ้าวางกลยุทธ์ผิด และเกาะเก้าอี้ของตัวเองไม่แน่น ก็อาจจะกลายเป็น 0 ได้ ผมขอยกตัวอย่างให้ดูครับ

 

ผมจำประวัติศาสตร์ของคอมพิวเตอร์อยู่สมัยหนึ่งได้ คือเมื่อประมาณสิบกว่าปีที่ผ่านมา สมัยที่ APPLE ยังครองตลาด มากกว่า 90% ของ PC อยู่ มีอยู่วันหนึ่ง IBM ก็ขึ้นเวที ในขณะนั้นวงการต่อรอง ร้อยบาทเอาขี้หมากองเดียว ว่าไม่มีทางที่ IBM จะล้ม Apple ได้ เพราะในขณะนั้นส่วนแบ่งมีกว่า 90% แถมยังมี Software ที่ vendor ต่างๆ สร้างขึ้นให้ใช้รวมแล้วกว่า 40,000 ตัวในขณะนั้น ผิดกับ IBM ที่มาตัวเปล่า คุณรู้รึเปล่าว่า IBM ทำยังไง เมื่อก่อน มีการสร้าง Card ไปเสียบในเครื่อง IBM PC พร้อมกับ floppy drive ตัวหนึ่ง พอเสียบแล้ว เล่นโปรแกรม Apple ได้เลย

IBM ก็ค่อยๆ สร้าง Software ขึ้นมาเอง จนไม่นานครับ ไม่มีใครพูดถึงโปรแกรม 40,000 ตัวของ Apple อีกเลย

อันนี้เป็นประวัติศาสตร์ ผมไม่ได้หมายความว่ามันจะซ้ำรอยอีก แค่ชี้ให้ดูครับ