บทเรียน JavaFX คืออะไร

posted on 08 Oct 2008 10:21 by techinnoreview

เห็นว่าน่าจะเป็นความรู้ต่อหลายๆท่านเลยนำมาแปะให้อ่านครับ

Credit mk's blog แห่ง Blognone ครับ

คำอธิบายแบบเข้าใจง่าย

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

อย่างที่ผมบอกไปแล้วว่า JavaFX คือ Java Applet กลับชาติมาเกิด แต่ว่ามาเกิดทั้งทีจะให้มีความสามารถเท่าเดิมก็คงจะสู้เขาได้ยาก ดังนั้นฟีเจอร์ใหม่ (สำหรับผู้ใช้) มีดังนี้

  • ระบบ GUI toolkit แบบใหม่ มาใช้แทน Swing (แต่ก็ยังใช้ Swing ได้ถ้าต้องการ)
  • สนับสนุนกราฟฟิกแบบเวกเตอร์ (SVG) และแอนิเมชัน (ยังไม่มี 3D ในเวอร์ชัน 1.0 แต่มีเอฟเฟคต์แบบเหมือน 3D ให้เรียกใช้) เร่งความเร็วด้วย GPU ได้
  • เล่นวิดีโอด้วย codec VP6 จากบริษัท On2 (เทียบเท่ากับ Flash แต่ใช้ฟอร์แมต FLM ซึ่งเป็นซับเซ็ตของ FLV) และ H.264 บนบางแพลตฟอร์ม
  • สนับสนุน XML, JSON
  • ของเด็ดน่าจะเป็นการลากแอพเพล็ต JavaFX ออกมาจากเว็บเบราว์เซอร์ แล้วรันต่อบนเดสก์ท็อปได้ทันที (ในอนาคตเราคงเห็นอะไรคล้ายๆ กันนี้จากฝั่ง Flash/AIR)

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

JavaFX ทำงานอย่างไร

คนที่เคยใช้ 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 ไปแล้ว ตอนนี้ได้เวลาทดสอบครับ

ณ ขณะที่ผมเขียนนี้ JavaFX 1.0 มีเฉพาะเวอร์ชันวินโดวส์และแมคเท่านั้น ยังไม่มีเวอร์ชันสำหรับลินุกซ์และโซลาริส ในคำประกาศของซัน (A Word on Linux and Solaris Support) บอกว่ามีเวอร์ชันทดสอบเป็นการภายในแล้ว แต่ว่ายังไม่สมบูรณ์ดี และน่าจะตามมาในเวอร์ชัน 1.x ซึ่งซันยังไม่ระบุว่าเมื่อไร

สำหรับวินโดวส์และแมค มีความต้องการขั้นต่ำดังนี้

  • วินโดวส์ XP ขึ้นไป มี JRE 1.6u10 ขึ้นไป ติดตั้งอยู่
  • แมคต้องเป็น 10.4 ขึ้นไป ใช้ JRE 1.5 ที่มาพร้อมกับ Mac OS 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 จากสายตาของนักพัฒนาครับ

ลิงก์อ่านประกอบ

Tags