ถึงคิวของ NetBeans มั่ง
บนลินุกซ์ NetBeans ใช้ระบบ installer (ไม่เหมือน Eclipse ที่แตก tar.gz มาแล้วรันตรงๆ ได้เลย) ซึ่งเจ้า installer นี้เปิดมาปั๊บมันจะเช็คหา JDK ในเครื่องเราก่อนเป็นอย่างแรก เมื่อวานมันบอกว่าหาไม่เจอ ผมเลยดาวน์โหลด Sun JDK 1.5 ผ่านทาง APT (อยู่ใน multiverse) ทิ้งไว้แล้วก็กลับบ้านไปก่อน
พอมาวันนี้มาติดตั้ง JDK เรียบร้อย มันก็ยังหาไม่เจอแฮะ
ผมลอง java -version ดูพบว่าในเครื่องมี Blackdown JDK 1.4 ติดตั้งอยู่แล้วซะงั้น สรุปว่า installer มันห่วยเอง
ในเอกสารของซันบอกว่าสามารถลงแบบระบุ path ได้ โดยสั่ง
$ ./netbeans-5_5-beta-linux.bin -is:javahome path_to_your_jdk
มาถึงตรงนี้ผมเลือกเป็น Sun JDK ดูจะปลอดภัยกว่าของ Blackdown แต่ปัญหาคือ path ของ Sun JDK มันอยู่แถวไหนล่ะ?
ค้นจาก Google ส่วนมากจะพบคำแนะนำในกรณีที่ดาวน์โหลด Sun JDK มาลงเอง ซึ่งมันเป็นวิธีเก่า เพราะตอนนี้ JDK เพิ่งเปลี่ยน license ทำให้คนใช้ Ubuntu สามารถ apt-get ได้ตรงๆ วิธีใหม่สะดวกกว่าเยอะ แต่ผมหาไม่เจอว่ามันไปอยู่ที่ไหน ดูจากข้อมูลแพกเกจว่ามันลงไฟล์อะไรบ้าง ก็ดันมีตั้งหลายที่ซะอีก
ตัดฉากมาตอนค้นเจอเลย สรุปว่ามันไปอยู่ที่ /usr/lib/jvm/java-1.5.0-sun-1.5.0.06 ครับ
เมื่อ installer ดำเนินการได้แล้วก็ไม่มีอะไรยาก เราจะได้ไอคอน NetBeans มาอยู่บนเดสก์ท็อปโดยดุษฎี
เมื่อเปิดโปรแกรมมาปั๊บ ผมก็ต้องพบกับฝันร้ายอีกครั้ง "นี่มัน Swing นี่หว่า" (กรุณาอ่านด้วยน้ำเสียงแบบเดียวกับ "นี่มันประเทืองนี่หว่า")
ถึงแม้ธีม Ocean ใน Swing ของ JDK 1.5 จะพัฒนาขึ้นมาในระดับ พอรับได้ ไม่รูปชั่วตัวม่วงเหมือน Metal แต่เทียบกับ SWT ของ Eclipse ที่ถอดธีม Human ของ GTK+ แบบไม่ผิดเพี้ยน มันสู้กันไม่ได้เลยนะ
หน้าจอต้อนรับก็โชว์ข่าวสารของ NetBeans ซึ่งไม่ค่อยมีประโยชน์เท่าไร (คนส่วนมากคงปิดทิ้ง) เทียบกับของ Eclipse แล้วดูสดใสคิกขุน้อยกว่า แต่ตรงนี้มันคงไม่ใช่ประเด็นสำคัญ ข้ามไป
ลองสร้าง Project ใหม่ก็ดูตรงไปตรงมาดี หน้าจอหลักของตัวโปรแกรมดูเรียบง่ายกว่า Eclipse ที่มี pane นู้นนี้วุ่นวาย โดยรวมๆ เทียบแล้วผมชอบของ NetBeans มากกว่า ยกเว้น
คิดว่าเรื่องสวย-ไม่สวย มันเป็นปัญหาระดับองค์กรของ Sun แล้วล่ะครับ ถ้าจำกันได้ Sun Java Desktop ก็คือการเอา SuSE มาแต่งม่วงนั่นเอง ไม่รู้มีอะไรกับสีม่วงเนาะ ผมเชื่อว่าถ้า Java มีอินเทอร์เซฟสวยๆ แบบของแอปเปิล พอเอามารวมกับฟีเจอร์ที่มีอยู่แล้ว Java คงครองโลกไปนานแล้วล่ะ
ยกคำพูดคุณ plynoi มาเป็นซีรีย์ คุณ plynoi ยกคำพูดของ Linus มาอีกทีว่า "บั๊กของ Java คือ Sun!" (หา citation กันเอาเองนะ)
Java สัญญาว่าจะทำ native GTK+ ใน Java 6 Mustang (ข่าว) ซึ่งก็เป็นนิมิตหมายอันดี แต่เทียบระยะเวลาที่ Swing ลืมตาดูโลกเมื่อปี 96 เป็นระยะเวลา 10 ปีกว่าๆ รู้สึกนานไปนิดนะ
เนื่องจากผมไม่ใช่โปรแกรมเมอร์ full-time เลยเลือกพิจารณาเพียงบางฟีเจอร์เท่านั้น ฟีเจอร์ที่ผมสนใจคือ Matisse GUI Builder ที่มีเสียงร่ำลือมาอย่างมากมายว่าให้ความรู้สึกเหมือน Visual Studio ตัวใหม่ๆ ผมพวกยุขึ้นง่ายอยู่แล้วเลยเอาซะ
วิธีการเริ่มต้นก็ใกล้เคียงกับ Eclipse ให้คลิกขวาที่ Project แล้วเลือก New > JFrame Form (แถมอันนี้มีให้เลือกทันทีไม่ต้องไปขุดๆ หาเหมือนคราวก่อน)
ผมลองหยิบจับ ขยับยึกยักซักพัก ก็เห็นด้วยว่า Matisse มันน่าประทับใจจริงๆ ครับ เผอิญไม่ได้ใช้ Visual Studio คงเปรียบเทียบให้ไม่ได้ แต่เทียบกับ Interface Builder ของ XCode ก็พอฟัดเหวี่ยงเลยล่ะ การตอบสนองของโปรแกรมลื่นกว่า VE ของ Eclipse มากๆ
อันที่ NetBeans ทำได้ดีกว่า Eclipse หลาย คือเรื่องเอกสาร ผมทำตามไกด์การสร้าง UI แบบละเอียดยิบ คงเป็นเพราะ NetBeans อยู่ในการควบคุมของ Sun มากกว่า เลยมีส่วนสนับสนุนตัวโปรแกรมที่สมบูรณ์กว่า (Sun จ้างเขียนได้)
ปัญหาที่พบในการทดสอบสร้าง UI ด้วย Matisse คือ
เรื่องประสิทธิภาพนั้น ดูใน system-monitor มันกินแรมไปเรื่อยๆ ไล่ตั้งแต่ 120 กว่าเมกจนมาถึง 200 เมก ไม่ว่าจะปิด-เปิด Project ใหม่หรือไม่ก็ตาม อันนี้ Eclipse ก็เป็นเหมือนกัน ผมเข้าใจว่าเป็นกับ garbage collector ของ JVM ละมั้ง ผู้รู้วานช่วยตอบด้วยครับ ถ้าตอบแล้วขอถามอีกอันว่า เมื่อไรมันจะคืนแรมครับ
ความประทับใจโดยรวมตอนนี้ ถึงจะไม่มีตัวไหนชนะกันขาด แต่ผมชอบ NetBeans มากกว่าครับ ไว้ JDK 1.6 ออกแล้วมาลองใหม่อีกรอบ (ตอนนี้ก็กลับไปใช้ vi ต่อ)
ui + icon ของ NetBeans มันไม่ใช่หน้าตา Ocean นะ คนละอันกัน
(เป็น Swing แต่ customized)
ถ้าอยากให้มันคืนแรมทันที กดรูปถังขยะใกล้ ๆ กับที่โชว์จำนวนแรมน่ะ
ปกติมันจะยังไม่คืนจนกว่าจะไม่เหลือแล้ว
"ไล่ตั้งแต่ 120 กว่าเมกจนมาถึง 200 เมก ไม่ว่าจะปิด-เปิด Project ใหม่หรือไม่ก็ตาม อันนี้ Eclipse"
ของ Eclipse กินเท่าไหร่อ่ะ ?
ปกติของผมมันจะเริ่มแถว ๆ 40 นะ แล้วก็ขึ้นไปเรื่อย ๆ ถ้าปิดโปรเจกต์ มันก็จะคืนให้ แล้วลดลงมาแถว 40 เหมือนเดิม
อันนี้คือบน Windows นะ ไม่ใช่ Linux
(Eclipse รุ่น 3.1 มีคนบ่น ๆ ว่าบน Linux ช้ากว่า กินแรมเยอะกว่า Windows ไม่รู้ว่า 3.2 เป็นไง)
เทียบความรู้สึกประมาณสาม-สี่ปีก่อนสมัย Eclipse เพิ่งขึ้น 3 Netbaens อะไรก็ไม่รู้ JBuilder ก็จำไม่ได้
ตอนนั้นลองใช้ทั้งสามตัวนี่แหล่ะทำ Senior Project ปรากฎว่าผมประทับใจกับ Eclipse ที่สุดไม่ใช่เพราะอะไรนอกจากความเป็น Native ของ SWT ทำให้มันเร็วกว่า Swinging ไปหลายขุม
แต่แฟนจาวาหลายๆ คนก็มาบอกว่า ผมมัน Java พันธุ์ทาง พันธุ์แท้ต้อง Swing และ AWT เท่านั้น!!!
keng: ลอง NetBeans ตัวใหม่ และ Eclipse ตัวใหม่ แล้วเทียบกัน
NetBeans ตัวใหม่ ๆ เร็วขึ้นจริง ๆ อย่างเห็นได้ชัด
ส่วน Eclipse ผมคิดว่าก็ไม่ได้เร็วหรือช้าลง
แต่ผมเห็นในเน็ตหลายคนบอกว่า เค้ายังใช้ Eclipse 2.x อยู่ เพราะเครื่องเค้าเล่น 3 ไม่ไหว มันช้าลง
แต่ผมก็ยังใช้ Eclipse เป็นหลักนะ ไม่ได้เกี่ยวกะช้าหรือเร็ว แต่มันเกี่ยวกะฟังก์ชั่นที่ต้องใช้น่ะ
deans4j : Beyonce-style นี่ผมติดปุ๊บคงไม่ได้ทำงานแล้วครับ
ป.ล. ถ้าไม่มี eclipse nb มันคงไม่ดีขึ้นได้ขนาดนี้หร๊อกกก 5 5 5(เคยใช้งานจริง netbean 3.x นรกโคตรๆ )
เรื่องคืน Ram นี่ ของฝั่ง client นี่ไม่เคยสังเกตเลย
แต่ถ้าเป็นพฤติกรรมทางฝั่ง server
heap size จะเริ่มที่ค่าค่าหนึ่ง
แล้วจะ allocate เพิ่มขึ้น
ในกรณีที่ free mem มันเหลือน้อย + garbage free mem ได้น้อยกว่าที่ควร
แต่เวลาลดลง จะลดอย่างช้ามากๆ
คือถ้านั่งสังเกต จะมองไม่ออกเลยว่า heap size มันลดลง
ต้องข้ามวันแล้วมาดู ถึงจะเห็น
ปล.
- พฤติกรรมที่ว่านี่เป็นของ IBM JRE นะ
- heap size คือค่าที่เราตั้งผ่าน -xms, -xmx
memory ที่ใช้ใน heap size หลักๆ ก็คือ
objects กับ classes
ถ้าพวก server , objects จะมีปริมาณเยอะกว่าพวก classes
แต่ถ้าเป็น client, ปริมาณ classes จะสูงอย่างมีนัยสำคัญ
- garbage collection คือการ free memory ที่ใช้ใน heap
- คำว่า client หมายถึงพวก GUI Desktop application
bact':
Eclipse ของผมเริ่มที่ 106 เมกครับ ลองเปิด project ที่เป็น VE ง่ายๆ ขึ้นมา กินไป 143 เมก พอปิดแล้วยืนระยะ 143 เมกเท่าเดิม
รูปถังขยะนี่มันอยู่ตรงไหนอะ?
keng:
ใช้มาแล้วสรุปว่าประทับใจ SWT มากกว่า Swing นะ ถ้าเอาภาษาอังกฤษคงต้องใช้ว่ามัน "polish" กว่า ดีไซน์มาดีกว่า อย่างน้อยผมก็ไม่ต้องมาเลือกตอนแรกว่ามันต้องใช้ Panel, Dialog, Window หรือ Frame เลือกเป็นแค่ Composite อย่างเดียวก็พอ
deans4j:
มันต้องใช้ปลั๊กอิน ผมคงไม่นับน่ะนะ ที่ต้องการคือ default setting ที่ดูดีเหมาะสม ส่วนจะ customize ได้หรือเปล่าอันนั้นของแถมที่มีก็ดี ไม่มีก็ไม่เป็นไร
mk - ถ้านับอย่างนั้น Eclipse ก็ไม่ควรรวม VE, WTP ของ Eclipse ด้วยหรือเปล่า?
double standard นิหน่า :)
รูปถังขยะนี่ หมายถึงใน NetBeans ครับ
ตัว Eclipse นี่จำได้ว่าเมื่อก่อนมันมีแสดงจำนวนแรมที่เหลือนี่นา เอ ตะกี้เปิดดู มันหายไปไหนหว่า
ถ้าเกิดว่าของ mk ยังมีอยู่ ก็กดดับเบิ้ลคลิกบนตัวเลขเลยน่ะ
เอ้ย หยุด มึนใหญ่แล้วเรา เอาใหม่ ๆ
ที่ mk บอกขนาด mem มาน่ะ เป็นขนาด mem อะไร ของทั้ง Eclipse/NetBeans ทั้งหมดเลย ? (ซึ่งน่าจะดูยากนะ เพราะดูแค่ตัว process ของตัว executable ของ ide ไม่ได้ ต้องรวมบางส่วนใน jvm ด้วย)
ผมนึกว่าหมายถึงเจ้า heap อย่างเดียวนะ (อย่างที่พี่ pok ว่า gc นี่มันเกี่ยวกะ heap) ที่มันจะแสดงในตัว Eclipse/NetBeans เลยอ่ะ
ของ Eclipse ถ้าไม่แสดง ให้เลือก Window -> Pref -> General -> Show Heap Status -- ถังขยะมาแล้ว :P
ของ NetBeans ถ้าไม่แสดง ให้คลิกขวาตรง toolbar เลือก memory -- *ไม่มี*รูปถังขยะนะ กดดับเบิ้่ลคลิกที่ตัวเลขได้เลย - -" ฉันมึน
บน Windows เปิด ide ขึ้นมาโล่ง ๆ ไม่มีโปรเจกต์อะไรเลย
Eclipse ใช้ heap ไป ~41 MB
NetBeans ใช้ heap ไป ~23 MB
จำสลับกัน แย่เลยเรา - -
อ้อ แต่ Eclipse 3.2 มี dynamic help นะ ผมว่าทำดี (สวย/สะดวก) กว่าของ NetBeans 5.5 beta อ่ะ เปิดดูคู่กับโค้ดได้เลย เป็น tab อันนึง
deans4: หมายถึงเฉพาะหน้าตานะครับ Eclipse เปิดมาก็ "ดู" native ส่วน NetBeans ต้องลงปลั๊กอินตามลิงก์ที่ให้มา แค่นั้นล่ะ
bact': ผมมองให้มุมมองผู้ใช้ครับ ว่าเปิดโปรแกรมนี้แล้วมันกินแรมเราไปเท่าไร วิธีนับก็นับ process ทั้งหมดที่โผล่มาหลังเปิดโปรแกรม (ดูใน system-monitor)
ส่วนเรื่อง heap ลองทำดูแล้ว
- Eclipse 40MB
- NetBeans 45MB