Tags:

เมื่อสัปดาห์ที่แล้ว ซันได้ออก JavaFX 1.0 สำหรับวินโดวส์และแมค ซึ่งถือเป็นก้าวที่สำคัญอีกก้าวของซันในการไล่กวดอโดบีกับไมโครซอฟท์ในตลาด Rich Internet Application

Blognone จะพาไปดูว่า JavaFX ทำงานอย่างไร สำหรับตอนแรกจะมองดูจากสายตาของผู้ใช้ทั่วไปครับ

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

อย่างที่ผมบอกไปแล้วว่า 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 จากสายตาของนักพัฒนาครับ

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

Comments

By: 9AuM
9AuM's blog
on 08/12/08 21:57 #74886 toggle
9AuM's picture

Windows Vista + FireFox 3 โอยเหนื่อยกว่าจะรันได้ -__- ลำบากจริงๆ

ของ่ายๆกว่าดีได้ไหมครับพี่ซัน


บทความบ้าบ่นของคนทำเวบ | HTML PHP CSS Web 2.0

By: chaow
Android
chaow's blog
on 08/12/08 22:00 #74888 toggle
chaow's picture

ลองตัวอย่างนึงละ โหลดนานจริงๆ ขณะมาคอมเมนต์ ยังโหลดไม่เสร็จเลย


Chaow

By: secure
secure's blog
on 08/12/08 22:31 #74893 toggle
secure's picture

แค่จะดูเสือกลับด้าน โหลดไปหลายนาทีเลย = =

By: dafty
AndroidWindows
dafty's blog
on 08/12/08 23:01 #74895 toggle
dafty's picture

ดูๆ แล้วน่าจะทำตัว install ให้เล็กกว่านี้ ... แถมเครื่องผมต้องโหลด jdk6updates10 อีกรอบทั้งๆ ที่มีอยู่แล้วอีกตะหาก - -''

By: kohsija
AndroidUbuntu
kohsija's blog
on 08/12/08 23:14 #74897 toggle
kohsija's picture

โหลดครั้งแรกช้าจริงๆ ด้วยครับ แต่รันได้แล้วก็ทำงานราบรื่นดี อยากรู้ว่าจะเอาไปทำอะไรได้อีก

Kohsija


@kohsija

By: MrWhisper
ContributorWindows PhoneSymbianWindows
MrWhisper's blog
on 08/12/08 23:54 #74902 toggle
MrWhisper's picture

ช้าแฮะ - -"

MyBlog !!!


[ JIRAYU.IN.TH ]

By: ipats
ContributorWindows PhoneAndroidExteen Official
ipats's blog
on 09/12/08 0:05 #74903 toggle
ipats's picture

เครื่องผมเป็น Windows XP SP3 + Firefox 3.0.4 + JRE 1.6u7 ก็รันได้ครับ แต่.. กว่าจะรันได้ ไอ้กลมๆ ถ้วยกาแฟมันหมุนไปชาติเศษได้ เหอๆ

---------- iPAtS


iPAtS

By: KnightBaron
ContributoriPhoneRed HatWindows
KnightBaron's blog
on 09/12/08 0:05 #74904 toggle
KnightBaron's picture

ลองใช้กับ Vista / Chrome ระหว่างโหลดนี่นึกว่า Browser จะ Crash ไปแล้ว แต่รอไม่นานก็รันได้ลื่นไหล น่าประทับใจครับ

Yume Nikki


Aosekai

By: Sikachu
ContributoriPhone
Sikachu's blog
on 09/12/08 3:20 #74916 toggle
Sikachu's picture

Leopard รันได้ไม่มีปัญหาค้าฟ Safari 3 + OS X 10.5.5 กด Trust -> Accept แล้วก็ดูได้เลย :)

บล็อกของผม: http://sikachu.com


บล็อกของผม: http://sikachu.com

By: tr
Writer
tr's blog
on 09/12/08 6:44 #74923 toggle
tr's picture

รอจนกาแฟเริ่มเย็น

By: audy
AndroidUbuntu
audy's blog
on 09/12/08 8:20 #74932 toggle
audy's picture

อ่านความเห็นแล้ว ไม่ลองดีกว่า

By: demon69gt
demon69gt's blog
on 09/12/08 8:25 #74933 toggle
demon69gt's picture

แค่ได้ยินชื่อ Java ก็รู้ซึ้งถึงความอืดพอแล้ว มันจะไหวไหมเนี่ย ที่มันดับไปเพราะความช้าและการเขียนมันซับซ้อนเกินไปนี่แหละ เจอโปรแกรมประเภทลากวางอย่างแฟลชเข้าไป Java เลยดับ

แค่โปรแกรม Lexitron dict กว่าจะเปิดได้ยังอืดเลย รอลุ้นอยู่ว่ามันจะเปิดได้หรือไม่ และรำคาญเวลามันเช็ค auto update ปิดไปแล้วยังมีแอบเช็ค

By: sugree
FounderWriterAndroidBlackberry
sugree's blog
on 09/12/08 8:30 #74935 toggle
sugree's picture

ทำไมลินุกซ์ถึงอยู่หลังสุดเสมอ

By: mk
FounderAndroidRed HatWindows
mk's blog
on 09/12/08 8:35 #74937 Reply to:74935 toggle
mk's picture

ไปใช้ Flash x64 กันเถิด

By: cblue
cblue's blog
on 09/12/08 8:44 #74940 Reply to:74935 toggle
cblue's picture

echo -e 'linux\nwindows\nmac' | sort -r

By: DrRider
WriterWindows Phone
DrRider's blog
on 09/12/08 8:31 #74936 toggle
DrRider's picture

ลองเล่นดูก็ไม่ช้านา หรือว่าเน็ตที่ที่ทำงานมันเร็วหว่า จริงๆ เหมือนมันต้องดาวน์โหลดตัวโปรแกรมให้เสร็จก่อนถึงเริ่มทำงาน (ก็ไม่ต่างจาก Flash นี่)

พอโปรแกรมเริ่มงานแล้ว มันก็ทำงานลื่นดีนะ

We need to learn to forgive but not forget...


We need to learn to forgive but not forget...

By: audy
AndroidUbuntu
audy's blog
on 09/12/08 8:52 #74943 Reply to:74936 toggle
audy's picture

ถ้ามีสถานะบอกว่ากำลังโหลด อาจจะลด "ความรู้สึก" ว่าช้าลงไปบ้างครับ แต่นี่ เงียบฉี่ (ผมใช้เน็ต ๔ เมกนะ)

By: moniguna
moniguna's blog
on 09/12/08 8:56 #74944 toggle
moniguna's picture

พอโปรแกรมเริ่มทำงานแล้วก็ไหลลื่น ไม่มีสะดุด

By: mnk2551
AndroidSymbianUbuntu
mnk2551's blog
on 09/12/08 10:10 #74958 toggle
mnk2551's picture

JAVA มีอะไรดีๆ เยอะนะครับ... ...ไปหลงอยู่ใน M$ Silverlight ตั้งนาน.


tue2551

By: dafty
AndroidWindows
dafty's blog
on 09/12/08 10:59 #74964 toggle
dafty's picture

จะดีขึ้นถ้า Open source ให้คนอื่นทำต่อ อิอิ

By: mk
FounderAndroidRed HatWindows
mk's blog
on 09/12/08 11:13 #74966 Reply to:74964 toggle
mk's picture

ตอนนี้ตัวรันไทม์ของ JavaFX ยังเป็น proprietary ครับ (มีเฉพาะตัวคอมไพเลอร์ javafxc ที่โอเพนซอร์ส) เรื่องสัญญาอนุญาต ผมวางแผนจะเขียนถึงในตอนที่ 3 ครับ

By: javaboom
WriteriPhoneUbuntu
javaboom's blog
on 09/12/08 12:27 #74975 Reply to:74966 toggle
javaboom's picture

JavaFX ไตรภาคโดย mk

อย่าบอกนะว่าจะมีภาค 4 ภาค 5

JavaBoom (Boom is not Java, but Java was boom) http://javaboom.wordpress.com


My Blog / Follow me

By: mk
FounderAndroidRed HatWindows
mk's blog
on 09/12/08 12:33 #74978 Reply to:74975 toggle
mk's picture

(ไตร) ภาคก่อนหน้า อยู่ใน อนาคตของ Flash 10, Flex 4 และ Adobe Thermo

นอกจากนี้ยังมี รู้จักกับ Silverlight ซึ่งเขียนในมุมมองของนักพัฒนา

By: javaboom
WriteriPhoneUbuntu
javaboom's blog
on 09/12/08 18:20 #75022 Reply to:74978 toggle
javaboom's picture

ตกข่าวแล้วผม หัวข้อที่ mk เขียนมาเป็นเรื่องผมตามไม่ทันเลยครับ

JavaBoom (Boom is not Java, but Java was boom) http://javaboom.wordpress.com


My Blog / Follow me

By: mk
FounderAndroidRed HatWindows
mk's blog
on 09/12/08 18:49 #75024 Reply to:75022 toggle
mk's picture

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

ก่อนหน้านี้ก็เคยสำรวจตลาด OS ของมือถือไปบ้างแล้ว

By: khajochi
WriteriPhone
khajochi's blog
on 09/12/08 17:28 #75018 toggle
khajochi's picture

ฟังจากคนของซันมาคุยที่บริษัทหลายรอบแล้วเหมือนกันครับ โดยส่วนตัวมันก็น่าใช้ในฐานลูกค้าเดิมของ java โดยเฉพาะ applet หลายคนพยายามเอาไปเปรียบเทียบกับ flash ซึ่งทุกครั้งที่ถามไปแบบนั้นเค้าก็เน้นเลยว่ามันคนละตลาดกัน

ซันเองก็ใช้เวลาพัฒนาตัว JavaFX นานมาก แต่ช่วงหลังก็เร่งออก resource ต่างๆให้นักพัฒนาเยอะขึ้นเรื่อยๆ ส่วนนึงอาจจะเพราะตลาด j2ee กับ j2me เริ่มตันแล้ว การเอา applet กลับมาเกิดใหม่ก็เป็นเรื่องที่น่าสนใจเหมือนกัน

--- Khajochi Blog : It's not a Bug ... It's a Feature


Khajochi Blog : It's not a Bug ... It's a Feature

By: MrWhisper
ContributorWindows PhoneSymbianWindows
MrWhisper's blog
on 09/12/08 21:37 #75041 toggle
MrWhisper's picture

ที่ลองเล่นตอนเช้านี้มันจะอืดตอนโหลด Applet ขึ้นมาครับ ตอนใช้งานนั้นรู้สึกว่ามันเร็วกว่า Flash เสียอีก

ผมว่าถ้าปัญหาเรื่องที่มันโหลดช้านี่ลดลงไปนี่น่าจะดีกว่านี้นะครับ

MyBlog !!!


[ JIRAYU.IN.TH ]

By: polaromonas
ContributorWindows PhoneUbuntuWindows
polaromonas's blog
on 09/12/08 23:44 #75070 toggle
polaromonas's picture

Vista+Opera 9.62 และ Opera 10 alpha รันได้ทั้งคู่ แต่รู้สึกว่า Opera 10 alpha จะติดขัดกว่า แต่โหลดเข้า Applet เร็วกว่านิดหน่อยม้ัง


My blog