Adventure in Eclipse Realm

ปกติผมไม่เขียน Java ด้วยเหตุผลว่ามันช้า (โว้ย) (เรื่องนี้เคยเขียนไปแล้วหลายที) ถ้าเขียนโปรแกรมใช้เองใช้ Python สะดวกกว่า (ตัวอย่าง)

แต่เราก็ปฏิเสธไม่ได้ว่าอุตสาหกรรมโปรแกรมมิ่งบ้านเรา ภาษา Java ครองตลาดอยู่

เนื่องจากผมมีงานนิดหน่อยที่ต้องเกี่ยวข้องกับ IDE โอเพนซอร์สทั้งสองตัวที่เน้น Java อันได้แก่ NetBeans และ Eclipse ครั้นจะพึ่งพาแต่ข่าวที่หลายๆ คนใน Blognone เขียนไว้มันก็ไม่ช่วยให้เห็นภาพซักเท่าไร ทางที่ง่ายที่สุดคือลองเล่นเองโลด

หมายเหตุ: งานนี้ขอบคุณ keng และ plynoi สำหรับคำแนะนำที่เหมือนจะมีประโยชน์

ไหนๆ Eclipse 3.2 กะ Callistro เพิ่งจะออกมาสดๆ (ข่าว) เราจึงต้องใช้ประโยชน์จากมันให้เต็มที่ เครื่องที่ผมใช้เป็น P4 2.4GHz แรมกิ๊กนึง ลง Ubuntu 6.06 Dapper

ดาวน์โหลด+ติดตั้ง

เริ่มแรกควรไปชะโงกดูใน APT Repository ก่อนว่า Eclipse ใน Dapper เป็นเวอร์ชันใด เผื่อว่าจะ apt-get ได้สะดวกดี ซึ่งผลก็คือมันยังเป็น 3.1.2 อยู่ และไม่มีวี่แววว่า 3.2 จะเข้ามาใน Dapper ได้ง่ายนัก เพราะต้องรอรับมาจาก Debian อีกทีหนึ่ง

หนทางเดียวที่เหลืออยู่คือดาวน์โหลดเอง

ผมใช้บริการ Thai National Mirror เพื่อความรวดเร็ว (เครื่องนี้ใครคุมให้มันรู้ซะมั้ง) เลือกเอาเฉพาะ Eclipse SDK 3.2 เวอร์ชันลินุกซ์ x86 เป็นไฟล์ .tar.gz มา แตก tar xvfz แล้วรัน ./eclipse ได้ตรงๆ

Tutorial

สมัยเรียนเคยต้องทำการบ้าน Java ส่ง เพื่อนผมก็ขวนขวายหาทั้ง NetBeans และ Eclipse มาใช้กันใหญ่ แต่ด้วยเครื่องของห้องแล็บในตอนนั้นมันเป็นไปไม่ได้ที่จะรันทั้งสองตัวแบบทำงานได้ (Eclipse ดีกว่านิดหน่อย) ผมก็เลยแก้ปัญหาโดยการเขียน Swing ด้วย vi มันซะเลย (ถึกมาก!)

พอมายุคนี้โปรแกรมพัฒนาเรื่องประสิทธิภาพ (efficiency ไม่ใช่ performance) มากขึ้น แถมเครื่องผมก็ดีขึ้น เลยรัน Eclipse แบบลื่นปรู๊ด

ที่ประทับใจมานานคือ Tutorial ของ Eclipse ที่ขึ้นมาใน sidebar (ภาษา Eclipse เค้าเรียก View) ซึ่งเป็นแบบ step-by-step ดี มันช่วยให้ผมสามารถเขียน HelloWorldSWT ได้ โดยไม่ต้องไปหลงทางกับตัวเลือกจำนวนมากระหว่างทาง

เปิด system-monitor ขึ้นมาดู โปรเซสของ Eclipse กิน physical memory ไปประมาณ 230 เมก ซึ่งก็พอไหวเมื่อเทียบกับแรมทั้งหมดกิ๊กนึง

Callistro

ถัดมาต้องลองของใหม่ Callistro อธิบายง่ายๆ มันก็คือ Update Manager เหมือนของ Firefox เพียงแต่มันจะสนใจเรื่อง dependency ของปลั๊กอินแต่ละตัวให้ด้วย ซึ่งตรงนี้จะไปเหมือนกับ APT

วิธีเรียกก็ Help > Software Updates > Find and Install...

จากนั้นเลือกเป็น Search for new feature โปรแกรมจะถามว่าให้เช็คจาก Update site (เหมือน repository) อันไหนบ้าง ถ้ายังไม่ลงอะไรจะมีให้เลือก 2 อัน คือ Callistro Discovery Site (อันหลัก - ชื่ออย่างหรู) กับ Eclipse Project Updates เท่าที่เห็นในตัวเลือก สามารถเพิ่มเป็นชนิด Remote, Local, Archive รวมถึง import/export list ได้อีกด้วย

ขั้นถัดมารอมันเช็คสถานะนิดหน่อย ก็จะมีตัวเลือกติดตั้งที่หน้าตาเหมือนตอนเลือก Component เวลาเราลงวินโดวส์หรือ office

ตรงนี้ผมเจอ UI flaw สองจุด

อย่างแรกคือข้อความเตือนของโปรแกรมยังดูเทคนิคโคตรๆ ผมตั้งใจจะลง Visual Editor (VE) เพื่อมาชนกับ Matisse ของ NetBeans พอติ๊กถูกที่ VE ปั๊บ มันก็ขึ้นมาเตือนว่า ต้องการ "org.eclipse.emf" ก่อน ชิปหายละ emf มันคืออะไรละเนี่ย คนไม่เคยใช้ Eclipse จะรู้ม้าย...

eclipse-callistro-flaw
อ่านตรงที่ขีดเส้นใต้รู้เรื่องไหมครับ?

ถึงปัญหานี้แก้ง่ายๆ ด้วยปุ่ม "Select Required" ซึ่งจะเลือกแพกเกจที่จำเป็นให้อัตโนมัติ แต่ผมก็ยังไม่เห็นข้อเสียใดๆ ในการเปลี่ยนข้อความเตือนเป็น "ต้องการ Eclipse Modeling Framework (EMF)" แทน "org.eclipse.emf"

ปัญหาที่สองคือเราจะรู้ได้อย่างไรว่า สิ่งที่เราต้องการมีใน Callistro? ปัจจุบันมีปลั๊กอินเพียงบางส่วนที่เข้ามาในระบบของ Eclipse ซึ่งสถานการณ์มันต่างกับ Firefox หรือ APT ที่เกือบทุกตัวอยู่ในระบบอยู่แล้ว

Visual Editor

หลังลง VE ได้แล้ว ความประทับใจของผมใน Eclipse เริ่มลดลงซักหน่อยครับ

ผมเลือกคู่มือ VE ที่น่าจะเข้าใจง่ายที่สุดจากหน้า doc ของ VE นั่นคือ เวอร์ชันของ IBM developerWorks แล้วกะจะทำตามขั้นตอนไปเรื่อยๆ เหมือนที่ทำมาแล้วตอนเรียน RoR

ตามคู่มือ ขั้นตอนดูง่ายไม่ซับซ้อน แค่สร้าง Project ใหม่ขึ้นมา จากนั้นคลิกขวาที่ Project สร้าง Visual Class ใส่ข้อมูลเล็กน้อย จะได้ไฟล์ใหม่พร้อม Visual Editor ขึ้นมา พร้อมให้เราลากปุ่มไปแปะๆ

แต่เอาเข้าจริง คลิกขวาแล้วมันไม่มี Visual Class ขึ้นมาให้เลือกนี่สิ โอ้ว ก็อชแดม!

where-is-visual-class
แวร์อิสมายวิชวลคลาส?

ผมใช้เวลาหาอยู่ 15 นาที ถามคุณ plynoi ก็ได้คำตอบแนวๆ "ไม่เคยใช้แฮะ" "ถ้าง่ายก็ไม่ใช่ Java สิ" (อันหลังนี่ตอบดี) สุดท้ายพบว่ามันอยู่ใน Other... นั่นเอง

คู่มือเล่มนี้ใช้ Swing ผมก็เลยเออออ Swing ตามด้วย ปัญหาถัดมาที่พบคือหา Toolbox ที่เอา textbox หรือ button มาวางไม่เจอ ใช้เวลาไล่หาในเมนูอีกรอบนึง ก็พบว่ามันซุกๆ แอบๆ อยู่ด้านข้าง -_-''

ve-palette
อยู่ตรงนี้ที่เดิม.......

ต่อไปก็เจอปัญหาส่วนตัวนิดหน่อยครับ Swing ที่มาให้มันเป็นเวอร์ชันเก่าที่ยังไม่มีธีม Ocean! ผมเกลียดธีม Metal สีม่วงของ Swing พอๆ กับเกลียดตุ๊กแก ไม่มีทางทนสร้างได้จนจบโปรแกรมแน่นอน

คุณ plynoi ให้ความเห็นว่า Eclipse มันอยากให้คนย้ายไปใช้ SWT กันมากกว่า เลยใส่ Swing หน้าตาเห่ยๆ มาให้ ผมก็ทำตามคำแนะนำโดยสร้างคลาสใหม่ที่เป็น SWT แทน

SWT หน้าตาสดใสปิ๊งปั๊งกว่า Swing มากมายครับ ผมเลยสนุกใหญ่ลองลากปุ่มไปมา แต่ก็ปัญหาข้อที่สี่ซึ่งแก้ไขไม่ง่ายเหมือนกัน คือ Eclipse เพียวๆ ที่เคยปรู๊ดปร๊าด พอมี VE มาเริ่มอืดซะแล้ว ขนาดแรมกิ๊กนึงเชียวนะ

วิธีแก้ปัญหาของผม คือ ลง NetBeans 5.5 Beta ครับ

NetBeans 5.5

ทีมโปรแกรมเมอร์ที่ออฟฟิศให้ความเห็นว่าบางฟีเจอร์ NetBeans 5.5 ดีกว่า Eclipse 3.2 หลายช่วงตัวอยู่ โดยเฉพาะ Mastisse ที่ให้ความรู้สึกเหมือน Visual Studio ตัวใหม่ๆ ยังไงยังงั้น

ระหว่างตะลุยแดน Eclipse ผมเลยโหลด NetBeans มาพลางๆ แต่พอจะลงก็พบอุปสรรคว่า ผมไม่ได้ลง Sun JDK เอาไว้ (มีแต่ JRE) ดังนั้นก็ต้องต่อตอนหน้าล่ะครับ ตะลุยแดน NetBeans

ภาพลักษณ์ผมติดลบเลย - -*

เกลียด ide java ก็ตรงความเห่ย ช้า รก ใช้ยาก แล้วก็กินแรมเนี่ยแหละ (แรม 1 กิ๊ก ผมเปิด vs.net 2003 รันโปรเจคท์ใหญ่ได้พร้อมกันสองตัว)

สรุปแล้ว java เลยเป็นแค่ทางผ่านมา .net สำหรับผมอยู่ดี

เกลียด java รัก python ด้วยคน เหตุผลเดียวกันครับ

ลองใช้ Eclipse เขียน Python ,C++(GCC) ก็สนุกดีนะครับ

"Callistro อธิบายง่ายๆ มันก็คือ Update Manager"

Callistro ไม่ใช่ update manager นะ
Eclipse มี update manager ในตัวอยู่แล้ว
ตัว Callistro มันคือ "ชุดของโมดูลยอดฮิต" อ่ะ
ปัญหาใหญ่ของการลงสารพัดโมดูลของ Eclipse ก็คือ dependency
โดยเฉพาะพวกที่ยังไม่ stable มันจะตีกันมาก
ยกตัวอย่างเช่น A beta 1 ต้องการ B alpha 5 และ C beta 2
แต่ B alpha 5 ต้องรันกะ C beta 1 ยังรันกะ C beta 2 ไม่ได้
... แบบนี้ก็จบกัน ทำอะไรไม่ได้
ตัว Callistro นี่คือเป็นโครงการความร่วมมือ เพื่อให้แน่ใจว่าสถานการณ์อย่างนั้นจะไม่เกิดขึ้น สำหรับโมดูลหลัก ๆ

อ้อ แล้วก็ ถ้าจะใช้โมดูลที่อยู่ในชุด Callistro ก็ต้อง update จาก repository ของ Callistro ครับ ซึ่งจะเป็นคนละตัวกับ repo ของโมดูล Eclipse ปกติ

----

NetBeans 5.5 ยังเป็น beta อยู่นะ

ถ้าจะใช้ภาษา Java อย่างเดียว และใช้ api มาตรฐาน (รวมถึงพวกที่คนใช้เยอะ ๆ อย่างที่มาจาก apache, spring) เป็นหลัก ก็ NetBeans โลดครับ

แต่ถ้าอยากใช้ภาษาอื่น อย่าง Python, Ruby, Perl ด้วย ก็ต้อง Eclipse
เพราะ 3rd-party module คือจุดแข็งของ Eclipse
(และก็เป็นจุดอ่อนด้วยมั้ง เพราะมันมั่วมาก ไม่มีการทดสอบความเข้ากันได้ซะเท่าไหร่ ... Callistro เป็นความพยายามหนึ่งที่จะแก้ปัญหาพวกนี้ แต่ก็ได้แค่ส่วนหนึ่ง)

ถ้าเขียน Python บน NetBeans ได้ ผมเลิกใช้ Eclipse ไปนานแล้วอ่ะ :P

อ้อ (หลายอ้อเว้ย)
ถ้ารู้สึกว่า ide มันอืด อาจจะเป็นเพราะเราเซตหน่วยความจำให้ jvm ไม่พอ
ลองดู http://bact.blogspot.com/2006/07/jvm-x-xx-options.html

"A beta 1 ต้องการ B alpha 5 และ C beta 2
แต่ B alpha 5 ต้องรันกะ C beta 1 ยังรันกะ C beta 2 ไม่ได้"

Bact' : เห็นภาพเลย

ถูกต้องเลย "ถ้าง่ายๆก็ไม่ใช่ java"
ถ้า mk มาเห็น project ที่ผมกำลังทำอยู่นะ
รับรองต้องบ่นว่า
"มันทำอะไรของมันเนี่ย ยุ่งชิ_หาย"
เพราะเริ่มต้นแค่โปรเจค setup ใน eclipse ก็หนาวแล้ว
(ปัญหา mismatch ระหว่าง maven project structure
กับ eclipse project structure)

Post new comment

The content of this field is kept private and will not be shown publicly.