Google Web Toolkit ?
• Google Web Toolkit (GWT)
Ajax ン Java コ ン
開発
• 間 非互換性 埋 JavaScript
び XMLHttpRequest 専門家 い 開発
難 い高性能 ン
生産的 開発 可能 こ 目標 開発
Google Web Toolkit ?
• GWT ンソ 完全 無料
利用 こ 世界中 何千
開発者 利用 い
GWT こ 使わ い ?
• 新 い ン AdWords や Google Wave
い 数多 Google 製品 GWT 開
発 い
GWT 仕組
• GWT Java 書い JavaScript
コン
• コン JavaScript コ
最適 動作 う 出力
Android や iPhone 最適
動作
Google Developer Day 2008 資料
最適 意味
• 作業 実現 方法 複数あ 場合 各
最速 動作 API Google 調
査
• 最速
動作 う API 選択
GWT 開発
GWT 開発
実行 最適化
コ ン
GWT 開発
• GWT SDK Java API Widget
供
– こ Widget 組 合わ 画面 構築
GWT 開発
• DOM 操作や XMLHttpRequest コ
ン 直接コ ン 高い
抽象化 い 生産性 非常
高い
GWT 開発
• Widget 組 込 以外 使うこ
現 多数 Widget
立 い
GWT
• GWT developer plugin 使うこ 好 IDE
Ajax ン
• GWT developer plugin JavaScript Java
コ 間 い い Java
事前 コン 必要 あ
• こ 従来 う JavaScript 直接 編
集 う 扱え
GWT 最適化
• GWT 最適化 0 ワ
含 い
• GWTコン
– 要 コ 除去
– コ 分割
• / ソ コ 複数 JavaScript 分割 表示 高 速化
• Speed Tracer
– Chrome Extension
– ネ JavaScript 限 処
理やCSS ば ば奇妙 動 Speed Tracer
ネ い 処理 見 役立
実行
• GWT Java ソ コ コン
最適 動作 う
JavaScript 生成
• Android や iPhone 最適化
SDK 入手
• SDK 以 入手可能
– http://goo.gl/e2j0
What’s Ne i GWT 2.0?
• Development Mode
• Speed Tracer Performance Analysis
• Developer Guided Code Splitting
• Compiler Optimizations
• Draft Compile
• Declarative User Interfaces
• Layout Panels
• Bundled Resources via ClientBundle
• HtmlUnit for Testing
• Bug Fixes…
What’s Ne i GWT 2.0?
• Development Mode
• Speed Tracer Performance Analysis
• Developer Guided Code Splitting
• Compiler Optimizations
• Draft Compile
• Declarative User Interfaces
• Layout Panels
• Bundled Resources via ClientBundle
• HtmlUnit for Testing
• Bug Fixes…
Development Mode
• GWT 最 大 変更 / Development Mode 追加
– こ Hosted Mode 呼ば い 拡張
• 2.0以前 GWT ン
Hosted Mode ”hosted bro ser” 呼ば
専用 供 い
• GWT2.0 ”Google Web Toolkit De eloper Plugin”
い 一般的 利用 事
– こ Safari, Firefox, Internet Explorer,
Chrome 好 利用 事
Development Mode
• こ 意味 所 ン
ソ コ 存 必要 い!
いう事
– Linux 開発 い 開発者
ン Internet Explorer 時 Linux
開発 続 別 Windows ン
事
– http://goo.gl/QV26
Development Mode
• こ 意味 所 Firebugs(Firefox) や
Inspector(Safari) い 各 実装
い 素晴 い 利用 事
いう事
Development Mode
• ! Development Mode
ン い
– / ン 複数
接続 事
Development Mode
• 新 い Google Plugin for Eclipse
ン
– Development Mode 起動 制御
– 表示
• 手動 Development Mode 起動
こ 可能
– Eclipse以外 IDE 利用 場合 こ
Swing 使い
What’s Ne i GWT 2.0?
• Development Mode
• Speed Tracer Performance Analysis
• Developer Guided Code Splitting
• Compiler Optimizations
• Draft Compile
• Declarative User Interfaces
• Layout Panels
• Bundled Resources via ClientBundle
• HtmlUnit for Testing
• Bug Fixes…
Speed Tracer Performance Analysis
• Speed Tracer ン
ン 問題 特定 修正 助
新 い
• ン 走 情報
取得用 接続 ン 情報 取得 視覚
的 統計情報 表示
• Speed Tracer 使用 あ
ン 部分 時間 い 視
覚的 確認 事
Speed Tracer Performance Analysis
• Speed Tracer 以 う 項目 い 分析
– JavaScript構文解析 実行
– 画
– CSS 再計算 ン
– DOM ン ン ン
– ネ ワ ソ 読 込
– Timer
– XMLHttpRequestコ – a d ore…
• Speed Tracer い http://goo.gl/F8MZ
What’s Ne i GWT 2.0?
• Development Mode
• Speed Tracer Performance Analysis
• Developer Guided Code Splitting
• Compiler Optimizations
• Draft Compile
• Declarative User Interfaces
• Layout Panels
• Bundled Resources via ClientBundle
• HtmlUnit for Testing
• Bug Fixes…
Developer Guided Code Splitting
• GWT2.0 高速化 分割 ン 指
定 う
• あ 動画 見 最後 ン
待 事 想像 い 耐え
い 最近 Ajax
言え い う ?
• コ 分割 最初 実行 必要 最 コ
片 ン 残 必要 応
ン
Developer Guided Code Splitting
• えば ン 作成 い
想像 い
• あ ン 読 書
機能以外 情報 設定やコ
ン 管理 機能 あ
う
• コ 分割 使う ン コ 機能
ン う ン
こ 速 書 始
こ
Developer Guided Code Splitting
• 必要 追加機能部
分 コ ン
• こ 実装 非常 複雑
GWT コ 分割 使う 簡単 実装
Developer Guided Code Splitting
• コ 分割 実装 分割 ン 作成 魔法
ソ GWT.runAsync() 利用 !
• こ 簡単 安全 コ 分割
• GWTコン 自動的 残 コ 必要 応
ン う コ 出
• GWTコン 手動 難 い 依存関係 自動
的 解消 う 必要 コ 片 ン
コ 出
• 開発 :http://goo.gl/T6yh
What’s Ne i GWT 2.0?
• Development Mode
• Speed Tracer Performance Analysis
• Developer Guided Code Splitting
• Compiler Optimizations
• Draft Compile
• Declarative User Interfaces
• Layout Panels
• Bundled Resources via ClientBundle
• HtmlUnit for Testing
• Bug Fixes…
Compiler Optimizations
• コ 分割 加え こ JavaScript 生成
能力 根本的 改良 加え
• 最新 GWTコン コン 後
JavaScript 速 う 従来
強力 最適化 ン ン 搭載
• 古いGWT 簡単 GWT2.0
へ移行 既存 GWT
再コン 実行速度
Compiler Optimizations
• GWT2.0 い ン あ 最適
化 含 い
• コン JavaScript コ
3% 20% 縮 事 報告 い
What’s Ne i GWT 2.0?
• Development Mode
• Speed Tracer Performance Analysis
• Developer Guided Code Splitting
• Compiler Optimizations
• Draft Compile
• Declarative User Interfaces
• Layout Panels
• Bundled Resources via ClientBundle
• HtmlUnit for Testing
• Bug Fixes…
Draft Compile
• 開発時 う JavaScript コン
必要 あ -draftCompile
ン 利用 う
• い 最適化 こ 高速
コン
– Development Mode 入
必要性 い 思い
What’s Ne i GWT 2.0?
• Development Mode
• Speed Tracer Performance Analysis
• Developer Guided Code Splitting
• Compiler Optimizations
• Draft Compile
• Declarative User Interfaces
• Layout Panels
• Bundled Resources via ClientBundle
• HtmlUnit for Testing
• Bug Fixes…
Declarative User Interfaces
• GWT UiBinder 使用 こ ン
現 構築 代
わ XML 構築 う
• XML 以 う 機能
UIコ 作 読 や ン 簡
単 何 高速 開発
– CSS 衝突 心配 必要 あ
– 速 効率的 ン
HTML GWT 混 い
– 好都合 こ ソ 国際化 一元管理
う
Declarative User Interfaces
• UiBinder UI 共
作業 ば い方法 え
• XML,HTML,CSS 使え こ UI
Java 悩 必要 あ
• 例えば 作
成 HTML コ &
Declarative User Interfaces
• GWT 開発者 何人
UI ン 実験 直接
UiBinder XML ン 編集
Development Mode 速い 編集 /
繰 返 行 い 見
• HTML ン ン
使用 方 楽 い
Declarative User Interfaces
• UiBinder コン 時 .ui.xml .java間
全参照 ID typo う
微妙 防 助
• 最新 Google Plugin for Eclipse UiBinder 便
利 利用 う コ 補完
赤い 線 問題 指摘
ン 機能 供
• UiBinder 利用 :http://goo.gl/I2dn
• 開発者 : http://goo.gl/aVBY
What’s Ne i GWT 2.0?
• Development Mode
• Speed Tracer Performance Analysis
• Developer Guided Code Splitting
• Compiler Optimizations
• Draft Compile
• Declarative User Interfaces
• Layout Panels
• Bundled Resources via ClientBundle
• HtmlUnit for Testing
• Bug Fixes…
Layout Panels
• UI い 正確 見 目 HTML CSS 定
義 非常 難 い
• GWT2.0 以前 GWT 標準
え 問題 頭痛 種
• GWT2.0 実際 あ
欲 い 確実 作成 可
能
Layout Panels
• ネ 標準 CSS 予測
constraint 作成
• CSS ン ン
ン ン 中 い ネ 扱わ
JavaScript 実行 必要 あ
• 結果 速 流動的
ン 速 気
Layout Panels
• ネ UiBinder う 連動
• 数行 XML 本当 洗練
作成
What’s Ne i GWT 2.0?
• Development Mode
• Speed Tracer Performance Analysis
• Developer Guided Code Splitting
• Compiler Optimizations
• Draft Compile
• Declarative User Interfaces
• Layout Panels
• Bundled Resources via ClientBundle
• HtmlUnit for Testing
• Bug Fixes…
Bundled Resources via ClientBundle
• GWT 複数 画像 ン
分割表示 ImageBundle いう仕組
1.4 搭載
• こ / い沢山 画像
あ 場合 通信 ン
回避
用意
Bundled Resources via ClientBundle
• 2.0 搭載 ClientBundle こ
CSS XML 拡張
• 開発 - ClientBundle http://goo.gl/HJpf
What’s Ne i GWT 2.0?
• Development Mode
• Speed Tracer Performance Analysis
• Developer Guided Code Splitting
• Compiler Optimizations
• Draft Compile
• Declarative User Interfaces
• Layout Panels
• Bundled Resources via ClientBundle
• HtmlUnit for Testing
• Bug Fixes…
HtmlUnit for Testing
• 2.0 GWTTestCase 使用
代わ HtmlUnit 使用
• HtmlUnit Java 実装 い
関わ ネ コ あ
完全 Java 駆動開発
行う事
• 開発 - HtmlUnit http://goo.gl/SuaF
• 開発 – Testing with Junit http://goo.gl/6HNf
What’s Ne i GWT 2.0?
• Development Mode
• Speed Tracer Performance Analysis
• Developer Guided Code Splitting
• Compiler Optimizations
• Draft Compile
• Declarative User Interfaces
• Layout Panels
• Bundled Resources via ClientBundle
• HtmlUnit for Testing
• Bug Fixes…
Bug Fixes
• GWT 2.0 includes lots of bugfixes (as well as little enhancements that didn't make it into the "New Features" section), including
– Issue 427: TextArea#getSelectedText() returns the wrong value in Internet Explorer – Issue 633: Added File#setEnabled to enable or disable FileUpload widgets
– Issue 1574: Added Cookies#remoteCookie to programmatically remove cookies – Issue 1585: Clicking on a Button in a Form no longer submits the forms automatically – Issue 1633: Loading malformed cookies no longer result an an exception
– Issue 1771: Added RpcRequestBuilder to encapsulate logic needed to build and an RPC request – Issue 3102: HandlerManager#removeHandelr has be de-deprecated by popular request
– Issue 3404: Added support for Class#getSimpleName()
– Issue 3892: Multiple GWT applications on the same page can now preview events
– Issue 3903: Host HTML pages no contain a noscript tag to warn users if JavaScript is disabled – Issue 3936: Empty switch statement no longer causes compilation error
• RichTextArea has also been enhanced:
– Issue 1211: Support for undo/redo in RichTextArea
– Issue 1433: Support for inserting arbitrary HTML into a RichTextArea – Issue 1441: No cursor in RichTextArea until users start typing (Firefox) – Issue 2185: Support for JustifyFull in RichTextArea
– Issue 3176: Ensure that design mode is properly set in Firefox – Issue 3503: Consistent focus behavior across browsers
• These are but a few. For more details, see the full list of issues addressed in 2.0 in the GWT issue tracker.