RIA Development 之愚見

近來無論係 Facebook, Twitter, RSS, Newsletter 全部都係o個幾種 heading... "HTML5 kills Flash" "Apple is evil" "Goodbye Flash" "I won't buy iPhone anymore"

首先我呢一篇文並唔係想再起爐灶引起另一場罵戰 只係純粹以一個 web developer o既角度去講下自己o既諗法 我唔係想借呢篇文章去教大家點樣揀 technology 只係將我自己所遇到o既一 d 經驗同大家分享

識得我o既人都知道 Vicker o係 Flash / Flex o既死硬派 (其實我只係唔鍾意寫 Java 者... 但係唔代表我唔會寫... 而且 UI 黎講我都好鍾意寫 XHTML 同 CSS. W3C standards 簡直係我覺得最有滿足感o既野) 同時間 Vicker 亦都係 Apple o既 Fans... 屋企用 Mac Pro... 出街用 Macbook... 電話用 iPhone... 講真... 如果你硬係要我o係 Apple 同 Adobe 之間二選一... 只會同兩個女人跌落海o既問題一樣咁困難...

至於 Apple 單方面 reject Flash 同其他 technologies (e.g. Unity3D) 係唔係唔o岩~ 我都唔想講太多 但係如果講到工作上究竟應該點揀 technologies 呢... 下面係我自己呢一排o既見解

點解以前要用 Flash?

Web o既 content 大致上可以分兩種... Web page 同 Web application

Web page 裡面出現得最多o既 Flash 不外乎係 interactive banners, video ads 又或者 widgets
原因簡單不過... Banners 黎講 Flash file size 夠細而且 animation 同 interactivity 都好易寫 Video 用左 Flash 就可以解決 cross platform o既問題 (wmv 要倚靠 Windows Media Player / mov 要倚靠 Quicktime)
呢兩點正正就係 HTML5 足以 replace Flash o既原因~ 下面會再詳細講

至於 web applications (或者 RIA) AJAX 絕對係大哥 基本上好多常用o既 RIA 都係靠 XMLHttpRequest 走天下 (GMail, Google Doc, Facebook, Twitter, etc...)

但係 AJAX 無論點強勁都好... UI 始終係靠 HTML + CSS render 只要用上 CSS 就會出現 cross browser issue 那怕只係簡單一條 border... 一個 padding... 都夠你玩幾個鐘 IE, Firefox, Safari, Chrome, Opera, Camino, etc...
你寫一次就要 test 幾十次...

就係因為要解決 cross browser o既問題先會有 browser plug in 呢一層 layer o既出現 (無論係 Java 定 Flash 定 SilverLight) 講到尾我地做 developers / dezelopers 其實只係想寫 d 好野出黎者... Cross browser 呢 d 野難得有 plug in 幫我地解決... 何樂而不為

其次 AJAX 的確有好多 libraries... 好多 UI components... 但係有幾多個 libraries 可以 combine 得好呢? YUI 有自己一套... jQuery 又有自己一套... MooTools 又有一套... 獨立用又唔夠用... 夾埋用又唔o岩啞..
就好似你食雪糕想食兩隻味... 去 Godiva 買一個球... 去 Papagalo 買另一個球... 放埋同一隻杯度... 係... 你食到兩隻味... 只係佢地中間融埋 d 味好唔夾者...

Flash d components 就算係 third part develop o既都夾得埋~ 仲 mash 得好好 tim~

點解要用 HTML5 + CSS3?

相信有好多人都係因為 iPhone 唔 support Flash 先認識 HTML5 點解要用 HTML5 相信已經有好多 article / blogs 提過 呢度唔詳細講~ 只講幾點重點

  • HTML5 唔係由一間公司操控. 唔需要驚會消失 講真... 如果有一日 Apple 買起 Adobe 然後 cut 左 Flash 條 product line... 的確會好大件事
  • HTML5 唔需要 plug in
  • HTML5 canvas 可以畫野
  • HTML5 有 video control
  • HTML5 有好多新 controls (Datagrid, sliders etc...)
  • HTML5 o係 mobile device 食少 d resources
  • CSS3 可以做 animation
  • iPhone support HTML5

Video + Canvas 的確可以完全蓋過 Flash 部份o既優勢
而首當其衝o既相信係 Ads 至於 suffer o既又會再一次係 end users... 今時今日大家仲可以 disable Flash 黎 remove Ads 將來全部變晒 HTML5... 除非 HTML5 硬性規定要 declare 個 tag 係唔係 Ad o既者 否則將來你只可以硬食...

有 HTML5 + CSS3 仲要 Flash 黎做乜?

HTML5 + CSS3 的確做到部份 Flash 可以做到o既野
如果 H+C 做得到的話~ 其實真係唔需要加多一層 layer 去寫 Flash 咁笨

但係我地都要明白一 d H+C o既問題

  • Cross browser compatibility 始終係 CSS o既死穴 比個例子大家睇... CSS3 o既 animation 的確好型~ 但係寫落仲型~ 要 cross browser 就要 1 為 3 體...

Safari / Chrome
-webkit-transition: opacity 1s linear;

Firefox
-moz-transition: opacity 1s linear;

Opera
-o-transition: opacity 1s linear;

無錯... 你每一個 transition 都要寫 3 次... 攪乜鬼呢... 仲有... 就算 Safari on MacOS 同 Safari on iPhone 都會有 transition alpha o既 compatibility 問題 基本上你寫得 CSS styled content 就要有通頂做 browser check o既心理準備 你用 CSS 愈勁就 OT 得愈勁...

如其擔心 Adobe 會執笠... 不如擔心 Apple 會收你 license fee... 又或者只有 Safari 可以用 canvas 到時你辛苦寫落o既 HTML5 恐怕要 revamp...

  • HTML5 control 有排等... 其實 HTML5 好多 controls 都未 fully implement... e.g. Datagrid. 究竟要等幾耐呢? Who can tell? 到 HTML5 有齊o既一刻... Flex 又已經去到另一個層次...

  • HTML5 無 web camera 呢一點比較少人提到... 如果無左 web cam 就會無晒近黎最 hit o既 AR (Augmented Reality)

  • HTML5 未有 3D 同 filters 當然 3D 同 filters 只係 d 可有可無o既野 但係唔可以忘記呢 d o野正正影響住 user experience 如果無左 motion blur 好多 animation 都會變得好假

咁究竟應該點樣揀用乜呢?

記得 4 年前我寫左我o既 FYP - FLABER 當年我一買左 Nokia N73 之後第一件事就係裝 Flash Lite 然後放 FLABER 入去玩 一放就 work o個一種興奮感覺正正就係 Flash cross device o既好處

但係呢幾日反覆思量... 其實就算 Flash export 得點好都無用... 要比最好o既 user experience 比 users~ 始終都係要 ground up design 過

Desktop 同 mobile 始終係兩個完全唔同o既 environment
如果將 desktop Flash 放入 mobile device 又太 heavy 如果將 mobile HTML 放入 desktop browser 又太 plain

所以我都係得o個句... You have to pick the right tool for the right task.

呢個世界好難話一種 technology 玩晒. 所以唔好再話乜野 kill 乜野喇~ IE6 到今日都未死啦...

如果只係以 desktop 同 mobile 做為分界線 相信要揀邊種 technology 做 development 就非常簡單

考慮到 CSS o既問題~ 同埋要犧牲 user experience~ 再加上 desktop browser 9 乘 9 都有 Flash player 我會繼續用 Flash platform 做 development

至於 mobile... 不得不否認 mobile device 已經係 iPhone o既天下 就算 Android support Flash 都好... Flash 暫時都仲係太 heavy... 所以 mobile development 就一定會揀 HTML + CSS 當然啦如果再 specific d 只係 target iPhone 就一定係寫 Objective C.

黎緊o既 trend 會係點?

正如我 Dad 成日同我講 "都唔知比你學電腦係唔係害左你... IT 始終係變化得好快o既世界" 其實我地做得 developers 就預左日日咁學 日日咁變

Trend 呢 d 野真係無得估...
今日 Apple 唔比你 deploy Flash 幾個鐘之後 Google Chrome preinstall Flash 食完飯之後 Adobe 有 Flash to HTML5 exporter 聽日 Opera on iPhone embed 左 Flash player 聽晚 Google 出部手機有粒 i7 後日又點... 大後日係點... 如其去估... 不如寫好 d applications

"條條大路通羅馬" 最緊要你有個心去寫 d 好野 只要你有心~ 就算只係得 HTML 都會寫到 amazing apps~!!

至於要用乜野 technology 寫野 其實冥冥中你老細或者你上司又或者你 client 自會主宰~ 哈哈 我地努力執行就可以~ XDD

Apple 輸? Adobe 輸?

其實最後咪又係 end user 輸... iPhone 無得玩 restaurant city
Flash developer 要比錢 join iPhone development program

點解就係唔可以 mash 埋一齊呢? Mashup... 明明就係 Web 2.0 o既根本
CHJAF2AHI... What a great web misture