2012-01-12

GWT 的未來,會一直來

自從 Dart 開始 release 之後,似乎很多人開始看衰 GWT 的未來,再加上 GWT 自從 2011.09 推出主體沒改太多、反而是 GPE 改變不少的 2.4 版之後就沒啥動靜。即使官方 Blog 貼了〈GWT 與 Dart〉這篇文章,好像也沒有讓民調上升謠言破解?

本著自許是一個無怨無悔無可奈何的 GWT programmer,反正唬爛不要錢(也應該不犯法),就來無病呻吟一下 GWT 的未來。

先來講講「GWT 是不是沒有繼續維護開發,逐漸凋零邁向死亡?」,我想只要看一下 GWT 的 Google Code,答案就很明顯了。寫這篇文章時,Activity 是 High、這兩天的 Updates 有 3x 筆紀錄(雖然都是 issue)。最近的一次 source code 修改是 2012.01.05 的 r10825,理論上就是 Ray Cromwell 在 Google+ 的這篇文章——一個打算「後伊去」的 project 幹麼在乎這種又不是 bug 的 performance 問題?

GWT 與 Dart〉文末提到的「Google 裡重要的 project 每天都依賴著 GWT 來開發」,Ray Cromwell 也在 Google+ 做了列表(然後那個憤怒鳥也算進 Google 產品是怎樣... [炸]),其中 AdSense、AdWords 在 Google 的地位就不用說了,Blogger、Google Groups、以及已經卡進 Chrome 的 Chrome Webstore 雖然(還)不是金母雞,但(即使在台灣)也是有名有號有知名度的 project。

當然,以 Google 的財力(雖然 App Engine 開始瘋狂搶錢)、技術能力、跟不務正業的程度,要改用其他的技術來重新開發,也完全不令人驚訝 XD,但是...... 為甚麼要呢?

如果撇開「庸才跟笨蛋才喜歡用 Java」之類的論點,完全跳過 Java,純看 GWT 提供的功能,基礎的 DOM 操作、AJAX、cross-browser 自然不是問題,進階一點的 CSS image sprites、CSS 與 JS 的最佳化、code split / dynamic load 也都有。已經有支援部份 HTML5(client storage、canvas、AV)、對付大量資料呈現也有 Cell Widget 解決效能問題、可以用 xml 描述 UI layout、有接近 WYSIWYG 的 UI editor、還有某些 SASS/LESS 才能享用的 CSS 撰寫方式...... (想看有圖有真相的介紹,可以參考〈GWT is Smarter Than You〉這份投影片)

說真的,要問我期不期待 GWT 2.5 還是 GWT 3.0,當然期待。但原因並不是希望下一個版本解決了什麼(已知)問題,而是靠它來知道「原來網頁開發還有這些問題可以解決」(謎之聲:果然是技術程度落後的傢伙)。所以 2.5 好像沒啥動靜,也沒那麼奇怪——一般人(請容許我這個庸才自稱一般人)想得到的大概都有了,並不需要急著推出新功能來搶新聞版面

來說說 Dart 吧!

我可以理解為甚麼 Google 推出 or 主導 Dart 之後,很多人看淡 GWT 的前途。Dart 的確可能會拉走不少 GWT 的支持者——尤其是本來就不喜歡 Java 的人。問題是,等到 Dart 的 spec 發展成熟、對應的 compiler(browser 以及 JS)也最佳化完畢、語言的 utility 也備齊,或許才需要開始考慮 GWT 是不是會受 Dart 擠壓、以至於死亡吧?

但更根本的問題是「設計 Dart / GWT 的出發點為何?」Dart 的出發點是取代 browser 上的 JS; GWT 的出發點是讓 Java programmer 不用切換語言跟思維就可以通包網頁開發所需技術。以這個論點為基礎,那 GWT 跟 Dart 根本不是「你死我活」的互斥關係,比較像周潤發跟周星馳的關係。就算哪天 Dart 一統江湖,只要 GWT compiler 改吐 Dart、配合 Dart 的優點加強 GWT 的體質(說不定只是 compile 變快 XD),GWT programmer 依然可以繼續享受 Java 的優點(好啦,也要繼續忍受缺點),既有 project 繼續維護不用砍掉重練,歌照唱舞照跳,無須因此跳槽到 Dart。

GWT 與其擔心 Dart 亂飛,還不如擔心 Oracle 神經病發。同理,Dart 在長大的同時,JS(ECMAScript)難道就呆呆的等著被取代?你想要 JS 去跟 IE6 作伴,M$、Firefox...... 可不一定會同意。

總結就是:我認為 GWT 的未來會一直來,反正就算 Google 不愛 GWT 了,大不了自己去維護 GWT 的 source code...... [核爆]

報告完畢!