เมื่อสัปดาห์ที่แล้ว ซันได้ออก JavaFX 1.0 สำหรับวินโดวส์และแมค ซึ่งถือเป็นก้าวที่สำคัญอีกก้าวของซันในการไล่กวดอโดบีกับไมโครซอฟท์ในตลาด Rich Internet Application
Blognone จะพาไปดูว่า JavaFX ทำงานอย่างไร สำหรับตอนแรกจะมองดูจากสายตาของผู้ใช้ทั่วไปครับ
คำอธิบายแบบเข้าใจง่าย
JavaFX คือ Flash ของซัน
(แบบเดียวกับ Silverlight คือ Microsoft Flash)
คำอธิบายแบบเข้าใจง่ายที่สุด
JavaFX คือ Java Applet กลับชาติมาเกิดใหม่
ตลาด RIA นั้นต้องยกให้ Java Applet ของซันเป็นผู้บุกเบิกเจ้าแรกๆ แต่อาจเป็นได้ว่าแนวคิดของซันนั้นล้ำหน้ายุคสมัยเกินไป หรือไม่ก็ Java Applet ทำงานได้ช้าเกินไป เขียนยากเกินไป ทำให้ในภายหลังตลาด RIA นั้นถูกตีตลาดด้วย Flash Player จากค่าย Adobe/Macromedia จนทุกวันนี้แทบไม่มีใครพูดถึง Java Applet อีกแล้ว
สาเหตุที่โลกจำเป็นต้องมี RIA ก็เป็นเพราะว่า HTML และเว็บเบราว์เซอร์นั้นมีความสามารถไม่พอกับความต้องการของแอพพลิเคชันบางอย่าง (เช่น วิดีโอ, แอนิเมชัน หรือ กราฟฟิกแบบเวกเตอร์) ถึงแม้ว่า HTML5 จะแก้ปัญหาเหล่านี้ไปบ้างบางจุด แต่ก็ยังไม่ทันต่อความต้องการของทั้งผู้ใช้และผู้พัฒนาซอฟต์แวร์ (HTML4 ออกเมื่อปี 2000 ส่วน HTML5 ยังอีกนาน)
จุดนี้จึงเป็นช่องว่างให้กับบริษัทไอทียักษ์ใหญ่ เข้ามาสร้างเทคโนโลยีที่แสดงผลเนื้อหาแบบอินเทอร์แอคทีฟออนไลน์ โลกของ RIA นั้นต่างจากเว็บตรงที่ไม่มีหน่วยงานที่คอยคุมมาตรฐานอย่าง W3C คุม HTML ดังนั้นถ้าใครชนะในตลาดนี้ ก็แปลว่าตัวเองจะมีอิทธิพลขนาดกำหนดทิศทางของโลกอินเทอร์เน็ตได้ส่วนหนึ่งเลยทีเดียว
ผู้เล่นหลักในตลาดนี้มี 3 ราย ได้แก่ Flash/Flex จากอโดบี, Silverlight จากไมโครซอฟท์ และล่าสุดคือ JavaFX จากซัน
อย่างที่ผมบอกไปแล้วว่า JavaFX คือ Java Applet กลับชาติมาเกิด แต่ว่ามาเกิดทั้งทีจะให้มีความสามารถเท่าเดิมก็คงจะสู้เขาได้ยาก ดังนั้นฟีเจอร์ใหม่ (สำหรับผู้ใช้) มีดังนี้
ฟังดูไม่ค่อยมีอะไรน่าตื่นเต้นนัก แต่มันก็ช่วยทำให้ซันมีเทคโนโลยีด้าน RIA ที่เทียบเท่าคู่แข่ง สำหรับฟีเจอร์ของนักพัฒนา ผมขอยกยอดไปไว้ตอนหน้า
คนที่เคยใช้ Flash และ Silverlight คงทราบดีว่าต้องดาวน์โหลดตัวรันไทม์ (หรือบางยี่ห้อจะเรียก Player) มาติดตั้งในเครื่องเสียก่อน จึงจะสามารถเล่นเนื้อหาที่เป็น Flash หรือ Silverlight ได้
สำหรับ JavaFX นั้นจะต่างออกไปเล็กน้อย เนื่องจากว่ามันเป็นจาวา JavaFX จะรันด้วย Java Runtime Environment (JRE) ที่ติดตั้งอยู่บนคอมพิวเตอร์อยู่แล้ว (ถ้ามีนะ)
แต่ว่า JavaFX นั้นมีฟีเจอร์ใหม่ๆ บางอันที่ JRE รุ่นปกติไม่มี ดังนั้นในครั้งแรกที่เรารันแอพเพล็ต JavaFX ตัว JRE จะดาวน์โหลดส่วนขยายที่จำเป็นในการรัน JavaFX โดยอัตโนมัติ ในทางทฤษฎี มันก็คือการดาวน์โหลดรันไทม์ของ JavaFX แบบเดียวกับ Silverlight หรือ Flash นั่นเอง แต่ในทางปฏิบัติ ผู้ใช้จะไม่ต้องผ่านกระบวนการดาวน์โหลด ติดตั้ง รีสตาร์ทเว็บเบราว์เซอร์ ซึ่งลดความยุ่งยากลงไปได้พอสมควร
ซันหวังว่า การที่คอมพิวเตอร์จำนวนมากมี JRE ติดตั้งอยู่แล้ว จะช่วยให้ JavaFX นั้นเป็นที่นิยมได้ง่ายขึ้น มีคอมพิวเตอร์ที่สามารถรัน JavaFX จำนวนมากได้ในระยะเวลาอันรวดเร็ว เพราะว่าสงคราม RIA นี้เป็นสงครามชิงพื้นที่ ใครเผยแพร่รันไทม์ได้มากกว่า คนนั้นมีโอกาสชนะสูง (ปัจจุบันอโดบีอ้างว่าคอมพิวเตอร์ 98% นั้นติดตั้ง Flash Player)
เมื่อรู้จักแนวคิดคร่าวๆ ของ JavaFX ไปแล้ว ตอนนี้ได้เวลาทดสอบครับ
ณ ขณะที่ผมเขียนนี้ JavaFX 1.0 มีเฉพาะเวอร์ชันวินโดวส์และแมคเท่านั้น ยังไม่มีเวอร์ชันสำหรับลินุกซ์และโซลาริส ในคำประกาศของซัน (A Word on Linux and Solaris Support) บอกว่ามีเวอร์ชันทดสอบเป็นการภายในแล้ว แต่ว่ายังไม่สมบูรณ์ดี และน่าจะตามมาในเวอร์ชัน 1.x ซึ่งซันยังไม่ระบุว่าเมื่อไร
สำหรับวินโดวส์และแมค มีความต้องการขั้นต่ำดังนี้
เนื่องจากว่าผมไม่มีวินโดวส์ การทดสอบนี้จะทำบน Mac OS X 10.5 ด้วย Firefox 3 นะครับ
ขั้นตอนก็ง่ายๆ ไม่มีอะไรมาก เปิดเบราว์เซอร์แล้วเข้าไปยังหน้า Samples ของ JavaFX เลือกตัวอย่างมาสักอันหนึ่ง ตามต้องการ รอเว็บเบราว์เซอร์ค้างสักพักหนึ่งตามปกติ พอเบราว์เซอร์เริ่มโหลดจาวาแอพเพล็ตขึ้นมา ก็จะมีหน้าต่างขึ้นมาถามว่าอนุญาตให้รันได้หรือไม่
ในการทดสอบของผมมีปัญหาว่าหลังจากตอบ Trust แล้ว แอพเพล็ตไม่ถูกแสดง ผมเลยต้องแก้เกมโดยการเรียกผ่าน Java Web Start แทนเว็บเบราว์เซอร์ปกติ (สอบถามคุณ cblue แล้วพบปัญหาแบบเดียวกัน) ก็จะเป็นการดาวน์โหลดตัวแอพเพล็ตมารันที่เครื่องแทน
โหลดตัวแอพเพล็ตเสร็จ ก็จะถามเช่นเดิมว่าอนุญาตให้รันแอพเพล็ตนี้ไหม
เราจะเจอคำถามลักษณะเดียวกันอีกรอบ สงสัย certificate คนละตัว
เมื่ออนุญาตให้รันแล้ว ตัว JRE จะตรวจพบโดยอัตโนมัติว่าแอพเพล็ตนี้ต้องการตัวอัพเดตเป็น JavaFX ดังนั้นจะถามว่าเราต้องการอัพเดต JRE ให้มี JavaFX หรือไม่
เมื่อตอบตกลงไป JRE จะหายไปสักพักจนคิดว่าตายไปแล้ว แต่ถ้าดูสถานะใน System Monitor จะพบว่ามันกำลังดาวน์โหลดตัว JavaFX อยู่ ตรงนี้เป็นจุดอ่อนที่ซันควรปรับปรุงให้แสดงแถบสถานะการโหลดด้วย คาดว่าคนเข้าใจผิดแบบผมคงมีเยอะ
เมื่อดาวน์โหลดและติดตั้งเสร็จเรียบร้อย แอพเพล็ต JavaFX ก็จะโผล่มาให้เห็นแล้ว
ผมเลือกแอพเพล็ตตัวแรกคือ Effects Playground ซึ่งสามารถเอารูปภาพในเครื่องของเรามาปรับแต่งเอฟเฟคต์ได้
อีกจุดที่น่าปรับปรุงคือธีมของหน้าต่าง Open File ยังดูโบราณมาก แต่คาดว่าอันนี้เป็นเพราะ JRE บนแมคของผมเป็นตัวเก่า 1.5 ด้วย
แอพเพล็ตตัวอื่นๆ ที่น่าสนใจก็อย่างเช่น MP3 Player
และ VideoCube ซึ่งเอาวิดีโอมาเล่นบนลูกบาศก์ที่หมุนไปมาได้
โดยรวมๆ ก็นับว่าใช้งานได้โอเค ถือเป็นการปรับปรุงให้ Java Applet ทันสมัยให้เท่ากับคู่แข่งครับ
สำหรับตอนหน้า เราจะมาดูเรื่อง JavaFX จากสายตาของนักพัฒนาครับ
ลิงก์อ่านประกอบ
Comments
Windows Vista + FireFox 3
โอยเหนื่อยกว่าจะรันได้ -__- ลำบากจริงๆ
ของ่ายๆกว่าดีได้ไหมครับพี่ซัน
ลองตัวอย่างนึงละ โหลดนานจริงๆ ขณะมาคอมเมนต์ ยังโหลดไม่เสร็จเลย
แค่จะดูเสือกลับด้าน โหลดไปหลายนาทีเลย = =
ดูๆ แล้วน่าจะทำตัว install ให้เล็กกว่านี้ ... แถมเครื่องผมต้องโหลด jdk6updates10 อีกรอบทั้งๆ ที่มีอยู่แล้วอีกตะหาก - -''
โหลดครั้งแรกช้าจริงๆ ด้วยครับ
แต่รันได้แล้วก็ทำงานราบรื่นดี
อยากรู้ว่าจะเอาไปทำอะไรได้อีก
Kohsija
ช้าแฮะ - -"
เครื่องผมเป็น Windows XP SP3 + Firefox 3.0.4 + JRE 1.6u7 ก็รันได้ครับ แต่.. กว่าจะรันได้ ไอ้กลมๆ ถ้วยกาแฟมันหมุนไปชาติเศษได้ เหอๆ
---------- iPAtS
iPAtS
ลองใช้กับ Vista / Chrome ระหว่างโหลดนี่นึกว่า Browser จะ Crash ไปแล้ว แต่รอไม่นานก็รันได้ลื่นไหล น่าประทับใจครับ
Yume Nikki
Leopard รันได้ไม่มีปัญหาค้าฟ
Safari 3 + OS X 10.5.5 กด Trust -> Accept แล้วก็ดูได้เลย :)
บล็อกของผม: http://sikachu.com
บล็อกของผม: http://sikachu.com
รอจนกาแฟเริ่มเย็น
อ่านความเห็นแล้ว ไม่ลองดีกว่า
แค่ได้ยินชื่อ Java ก็รู้ซึ้งถึงความอืดพอแล้ว มันจะไหวไหมเนี่ย
ที่มันดับไปเพราะความช้าและการเขียนมันซับซ้อนเกินไปนี่แหละ
เจอโปรแกรมประเภทลากวางอย่างแฟลชเข้าไป Java เลยดับ
แค่โปรแกรม Lexitron dict กว่าจะเปิดได้ยังอืดเลย
รอลุ้นอยู่ว่ามันจะเปิดได้หรือไม่
และรำคาญเวลามันเช็ค auto update ปิดไปแล้วยังมีแอบเช็ค
ทำไมลินุกซ์ถึงอยู่หลังสุดเสมอ
ไปใช้ Flash x64 กันเถิด
echo -e 'linux\nwindows\nmac' | sort -r
ลองเล่นดูก็ไม่ช้านา หรือว่าเน็ตที่ที่ทำงานมันเร็วหว่า จริงๆ เหมือนมันต้องดาวน์โหลดตัวโปรแกรมให้เสร็จก่อนถึงเริ่มทำงาน (ก็ไม่ต่างจาก Flash นี่)
พอโปรแกรมเริ่มงานแล้ว มันก็ทำงานลื่นดีนะ
We need to learn to forgive but not forget...
We need to learn to forgive but not forget...
ถ้ามีสถานะบอกว่ากำลังโหลด อาจจะลด "ความรู้สึก" ว่าช้าลงไปบ้างครับ
แต่นี่ เงียบฉี่ (ผมใช้เน็ต ๔ เมกนะ)
พอโปรแกรมเริ่มทำงานแล้วก็ไหลลื่น ไม่มีสะดุด
JAVA มีอะไรดีๆ เยอะนะครับ...
...ไปหลงอยู่ใน M$ Silverlight ตั้งนาน.
จะดีขึ้นถ้า Open source ให้คนอื่นทำต่อ อิอิ
ตอนนี้ตัวรันไทม์ของ JavaFX ยังเป็น proprietary ครับ (มีเฉพาะตัวคอมไพเลอร์ javafxc ที่โอเพนซอร์ส) เรื่องสัญญาอนุญาต ผมวางแผนจะเขียนถึงในตอนที่ 3 ครับ
JavaFX ไตรภาคโดย mk
อย่าบอกนะว่าจะมีภาค 4 ภาค 5
JavaBoom (Boom is not Java, but Java was boom)
http://javaboom.wordpress.com
My Blog
(ไตร) ภาคก่อนหน้า อยู่ใน อนาคตของ Flash 10, Flex 4 และ Adobe Thermo
นอกจากนี้ยังมี รู้จักกับ Silverlight ซึ่งเขียนในมุมมองของนักพัฒนา
ตกข่าวแล้วผม หัวข้อที่ mk เขียนมาเป็นเรื่องผมตามไม่ทันเลยครับ
JavaBoom (Boom is not Java, but Java was boom)
http://javaboom.wordpress.com
My Blog
ก็ไม่มีอะไรมากครับ ผมพยายามจะสำรวจแนวโน้มของตลาด RIA ว่ามันจะออกมาหน้าไหน ทำตัวเป็นผู้พยากรณ์ เพื่อเราจะแทงกันได้ถูกข้าง ตอนนี้ผู้เล่นรายใหญ่ออกมากันครบแล้ว ก็ได้เวลาอันสมควร
ก่อนหน้านี้ก็เคยสำรวจตลาด OS ของมือถือไปบ้างแล้ว
ฟังจากคนของซันมาคุยที่บริษัทหลายรอบแล้วเหมือนกันครับ โดยส่วนตัวมันก็น่าใช้ในฐานลูกค้าเดิมของ java โดยเฉพาะ applet หลายคนพยายามเอาไปเปรียบเทียบกับ flash ซึ่งทุกครั้งที่ถามไปแบบนั้นเค้าก็เน้นเลยว่ามันคนละตลาดกัน
ซันเองก็ใช้เวลาพัฒนาตัว JavaFX นานมาก แต่ช่วงหลังก็เร่งออก resource ต่างๆให้นักพัฒนาเยอะขึ้นเรื่อยๆ ส่วนนึงอาจจะเพราะตลาด j2ee กับ j2me เริ่มตันแล้ว การเอา applet กลับมาเกิดใหม่ก็เป็นเรื่องที่น่าสนใจเหมือนกัน
---
Khajochi Blog : It's not a Bug ... It's a Feature
แฟนพันธุ์แท้สตีฟจ็อบส์ | MacThai.com
ที่ลองเล่นตอนเช้านี้มันจะอืดตอนโหลด Applet ขึ้นมาครับ ตอนใช้งานนั้นรู้สึกว่ามันเร็วกว่า Flash เสียอีก
ผมว่าถ้าปัญหาเรื่องที่มันโหลดช้านี่ลดลงไปนี่น่าจะดีกว่านี้นะครับ
Vista+Opera 9.62 และ Opera 10 alpha รันได้ทั้งคู่ แต่รู้สึกว่า Opera 10 alpha จะติดขัดกว่า แต่โหลดเข้า Applet เร็วกว่านิดหน่อยม้ัง