2013年12月15日 星期日

2013 年 GWT 調查報告中文摘要

原始報告請到 http://vaadin.com/gwt/report-2013 下載(要輸入 EMail 帳號)。 除了序言之外,其餘都只翻譯數據跟(個人認定的)重點,非逐句翻譯。


序言

在 2012 年第一次作 GWT 狀況調查 時,收到的回覆數量淹沒了我們。 我們把調查報告取名為《The Furture of GWT》(譯名:GWT 調查報告), 因為我們想知道「GWT 衰老中」這個謠言到底有多少可信度。 在超過 1300 個回應裡,我們、以及全世界都看到了 GWT 活蹦亂跳的樣子。 許多大型企業用 GWT 來建構大型的 application, 對 GWT 投注的資源也在增加。

在《GWT 調查報告 2013 版》中, 我們想要知道 GWT 未來該如何發展?(第六節) 開發團隊在用什麼 Java 跟 GWT 的版本?以瞭解 哪些地方需要支援?(第四節) 你們需要哪些 extension、在找哪些 framework?(第五節) 為了取得背景以及人口統計學的資料, 我們也問了關於你的團隊(第一節)、 你在寫的 application(第二節)、 以及你如何開發 application(第三節)。 有了這些資訊整合成這份報告, 我們覺得這是最綜合性的調查,可以引領 GWT 很長一段路。

在 2013 年,有 12 月的研討會(gwtcreate.com), 有令人興奮的 GWT 3.0 的計畫、 還有許多大公司投入 GWt 作為他們未來的技術; 我們知道 GWT 跨出了不只一大步。 2013 年 GWT 委員會也決定了未來的 release 步調: 每年一個大改版以及一個小改版。

這份調查是由 Vaadin、 Ray Cromwell(Google 代表、現任委員會主席)、 Daniel Kurka(mGWT 與 GWT-phonegap 的 Google 開發者)、 Artur Signell(Vaadin 代表)、 Bhaskar Janakiraman(Google)、 Colin Alworth(Sencha)、 Christian Goudreau(Arcbees)、 Konstantin Solomatov(Jetbrains)、 Mike Brock(RedHat)、 Stephen Haberman(Bizo)、 Joonas Lehtinen(Vaadin)以及 Thomas Broyer。 你可以在這份報告中看到他們的意見與反應。

這份調查報告在 GWT.create 2013 發表, 友超過 600 個熱心的 GWT 開發者出席這個年度最大的 GWT 活動。 我們同樣感謝超過 1400 位受訪者所花的時間與坦白, 期待看到你們的意見!

1. 關於開發團隊

團隊大小

GWT 開發團隊的平均人數是 12.5 人,而中位數則是 8 人。這跟去年的調查相同。 我們也問了過去 12 個月團隊大小的變化。

  • 47%:一樣
  • 41%:擴編
  • 10%:縮編
  • 3%:我只是小員工,不確定…

(兩張團隊大小的統計分佈圖)

團員組成

以八人團隊為例,任務分配為:

  • 2.7 人:後端開發者
  • 2.0 人:前端開發者
  • 1.3 人:測試人員
  • 0.9 人:PM(project / product)
  • 0.6 人:設計師
  • 0.6 人:死星上的人?

地理分佈

  • 58%:歐洲(上升 8%)
  • 25%:北美洲
  • 8%:亞洲(譯註:可惡,我應該去參加調查的 [毆飛])
  • 4%:南美洲
  • 2%:澳洲
  • 2%:非洲

2. GWT 用在哪裡

畫面數量

  • 48%:超過 20
  • 22%:11~20
  • 21%:5~10
  • 10%:1~4

20 是一個魔術數字。調查大型 app 的畫面數量應該很有趣。

Christian:少於 5~7 個畫面的 app 實在太小了,為什麼會用 GWT 呢? 這是個有趣的問題。

compile 時間

  • 1~3 分鐘:27%(去年 31%)
  • 3~10 分鐘:46%(去年 48%)
  • 10~30 分鐘:20%
  • 超過半小時:7%

對照去年的數據,可以代表 project 的規模越來越大。

Ray 與 Bhaskar:要改善 compile 時間有點難、需要一點時間來克服。 不過我們已經開始嘗試 incremental / modular compilation system。

寫給誰用

  • 35%:內部使用
  • 17%:公開且免費
  • 43%:公開但收費
  • 5%:其他

用來寫什麼

  • 46%:商業內部 application
  • 33%:商業外部 application
  • 13%:content-rich 網站
  • 2%:Portlet
  • 1%:遊戲
  • 5%:其他

Ray:看到有人用 GWT 寫遊戲實在很棒。 GWT 可以讓你在 Web 與 Android 之間共用程式碼, 藉由 PlayN 這種 library 也可以拓展到 iOS 上。

browser 支援度

(註:下列數據分別為 希望 2013 年有支援 / 希望 2014 年有支援

  • IE 6 跟 7:14% / 9%
  • IE 8:54% / 44%
  • IE 9:79% / 66%
  • IE 10:80% / 76%
  • IE 11:NaN / 70%
  • Safari:18% / 62%
  • Chrome:94% / 93%
  • Firefox:94% / 92%
  • iOS:NaN / 49%
  • Android:NaN / 50%

Joonas:IE6/7 終於快死光了,所以 GWT 3.0 可以不用鳥它們了。 不過看起來 2014 年還是要很痛苦地去支援 IE8/9, 因為需求量看起來還是蠻大的。

Ray:對於改進 GWT 核心而言,IE6/7/8 是可悲的毒藥, 有很多 API 沒辦法增強就是因為老一輩的 browser 沒辦法處理。 網頁正轉型為 mobile 跟 HTML5, 要整合過時的 browser 會讓這個轉型過程變得很困難。

Thomas:看到 IE6/7/8 加起來還不少,讓我很沮喪。

裝置支援度

(註:下列數據分別為 2012 年 / 2013 年

  • Desktop:98% / 99%
  • Tablet:36% / 45%
  • Phone:26% / 30%
  • 其他:2% / 2%

3. 如何用 GWT 建置 App?

怎麼作 UI?

  • 48%:用 Java 刻
  • 46%:UiBinder
  • 6%:GWT designer

Christian:我不懂為什麼這年頭還會有人想要 Java 刻 UI? 每個語言都有對應的 UI 描述方式。 ActionScript 有 MXML、 JavaScript 有 HTML、 .NET 有 XAML。

Daniel:看到這麼多人用 Java 刻 UI? 明明 UiBinder 就是比較好的方式。我們需要大力推廣 UiBinder。

Mobile App 開發環境

  • 27%:mGWT
  • 16%:gwt-phonegap
  • 16%:JS library
  • 15%:PhoneGap
  • 10%:Vaadin Touchkit
  • 17%:其他

後端通訊方式

  • 53%:GWT-RPC
  • 11%:Request builder
  • 7%:Request factory:
  • 7%:自製
  • 6%:Vaadin
  • 4%:RESTY
  • 3%:gwt-dispatch
  • 3%:gwt-platform

Ray:GWT-RPC 在小型 app、快速開發方面實在超有力的, 但是在 compile 時間以及 interoperability 上會花很多時間。 JAXRS 是 GWT 3.0 考慮的方法之一,可能會提供更好的中間層。

Daniel:在決定 GWT 3.0 以後的 RPC 系統時, 我們應該要記得「很多人喜歡 GWT RPC 的簡單好用」這件事。

IDE

  • 76%:Eclispe
  • 18%:IDEA:
  • 5%:Netbeans
  • 1%:其他

Christian:我個人最愛 IDEA 的 GWT plugin,是目前最成熟的。

Ray:我是 IDEA 的愛好者,它把寫 JSNI/JavaScript 程式碼這檔事做的很好。

如何作測試?

  • 49%:手動
  • 18%:Selenium
  • 13%:JUnit(GWTTest)
  • 13%:沒有測試 UI 這種事啦…

DevMode 還是 Super DevMode?

  • 74%:DevMode
  • 14%:兩個都用
  • 5%:Super DevMode
  • 5%:孟獲孟獲孟獲…

Thomas:看到 Super DevMode 成長真好。 未來要讓所有 browser 支援 DevMode 不太可能。 Super DevMode 的比例成長應該有部份會歸應於 mobile 平台。

Joonas:我們真的應該讓 Super DevMode 變成預設值。 用它來執行程式會比較接近實際的運算效能。 我覺得 DevMode 的優勢在於設定比較方便。

4. 用什麼版本?

GWT 版本

  • 79%:2.5
  • 11%:2.4
  • 3%:2.3
  • 3%:trunk 版
  • 2%:孟獲孟獲孟獲…
  • 1%:2.1
  • 1%:2.0

Thomas:看到有 3% 的人用 thunk 版真的超驚訝的。 我們計畫推出 nightly build,明年這個比率可能會增加。

JDK 版本

  • 37%:Java 6
  • 56%:Java 7
  • 8%:Java 8

Ray:我可以發布一個解法,只讓 client 的碼用 Java8。 但是 Java6 無所不在,希望多一點人可以願意去試試看。 Java8 的 lambdas 超好的, 讓 async callback 還有 collection 操作變得很愉快。

Joonas:Vaadin 7 已經支援 Java 8 了, 我希望我們可以在 GWT 3 當中用到 Lambdas 的優點。

會在 client 端的程式碼用 Java 8 的功能嗎?

  • 52%:不會讓 project 設定變複雜的前提下才會考慮
  • 27%:希望 client 跟 server 端用不同版本的 Java
  • 12%:沒興趣
  • 6%:其他
  • 2%:孟獲孟獲孟獲

Daniel:80% 的人會想要在 GWT 中用 Java8,這相當好。 我們必須找出一個好方法讓 server side 必須用 Java6 的人也能運作。

5. 外掛、framework…

GWT 用起來的產能如何?

  • 不想再用:2%
  • 不是很好:7%
  • 中規中矩:32%
  • 相當優秀:44%
  • 無可匹敵:15%

下一個 project 會用 GWT 嗎?

  • 84%:會
  • 16%:不會

不用 GWT 會用什麼 framework?

  • 5%:Play
  • 5%:JSF
  • 5%:Errai
  • 6%:SmartGWT
  • 8%:Dart
  • 11%:SpringMVC
  • 12%:Vaadin
  • 14%:JavaScript
  • 14%:Angular

Ray:GWT 3.0 會有一個新的 JS interop system, 銜接向 Polymar 或是 Angular 就不用寫 JSNI 的程式碼而變得更容易。 如此一來,想要用什麼 framework 就去用吧。

用哪方面的外掛?

回收的問卷中有 87% 的人使用了外掛,其中:

  • 23%:UI 功能(例如 GWT-dnd、GWT-fx)
  • 20%:application 架構(例如 GWT-presenter)
  • 15%:資料存取(例如 GWT-rpc、GWT-dispatch)
  • 12%:server 存取(例如 Google API、GWT-bootstrap)
  • 9%:application 功能(例如 GWT-platform)
  • 4%:data handling(例如 gilead)
  • 5%:其他
  • 13%:沒有用外掛

外掛去哪找?

  • 55%:就 google 嘛
  • 19%:自幹一個
  • 13%:GitHub
  • 11%:gwtproject.org
  • 2%:其他

你會整合既有 JS 到 project 中嗎?

  • 62%:會
  • 32%:不會
  • 3%:其他
  • 2%:孟獲孟獲孟獲…

6. GWT 的未來

GWT 的 bug

  • 73%:從來沒有回報過 bug
  • 13%:有
  • 14%:有,但是沒有修正

Thomas:GWT 真的夠好嗎?我不確定…… 到底是大家沒有被 bug 炸到,還是他們懶得回報 bug?

GWT 的光明面

每人兩票:

  • 60%:產能(cross-browser、不用弄一堆 JS)
  • 32%:執行速度(不是 compile 速度)
  • 24%:可模組化(可以團隊方式寫 GWT,不會互相影響) (掌控大型、很多功能的程式)
  • 19%:發現 bug 並解決的速度很快
  • 18%:ecosystem 中的開發工具
  • 17%:可靠度
  • 13%:可用度
  • 13%:產能(開始用 GWT 很容易)
  • 9%:DevMode 的重新整理速度
  • 7%:程式碼大小
  • 6%:有很多 widget 可以用
  • 5%:widget 品質很好
  • 5%:設計 application 風格 / application 外觀
  • 3%:有很多外掛
  • 2%:外掛品質很好
  • 2%:compile 時間
  • 3%:其他

GWT 的黑暗面

每人兩票:

  • 55%:compile 時間
  • 29%:DevMode 的重新整理速度
  • 19%:設計 application 風格 / application 外觀
  • 13%:有很多 widget 可以用
  • 13%:程式碼大小 (譯註:圖表的文字是 3%,但是長度是 13% 的大小。用後者。)
  • 11%:發現 bug 並解決的速度很快
  • 10%:產能(開始用 GWT 很容易)
  • 9%:widget 品質很好
  • 7%:ecosystem 中的開發工具
  • 6%:執行速度(不是 compile 速度)
  • 5%:可模組化(可以團隊方式寫 GWT,不會互相影響) (掌控大型、很多功能的程式)
  • 3%:可用度
  • 3%:有很多外掛
  • 2%:外掛品質很好
  • 2%:產能(cross-browser、不用弄一堆 JS)
  • 1%:可靠度
  • 6%:其他

Daniel:GWT 2.6 就已經有一些關於 compile 時間的改善。

Thomas:GWT 3.0 的重點會在改善 compile 時間以及 DevMode 的 refresh 時間上。

對委員會有什麼感覺?

  • 17%:GWT 感覺比以前有活力
  • 22%:對 GWT 的未來比以前有信心
  • 17%:roadmap 更清楚了
  • 28%:沒啥變化耶其實
  • 10%:現在對 GWT 比較沒信心
  • 6%:其他

沒有留言:

張貼留言