
GoogleからJava開発者へのサプライズ!な贈り物、Google Web Toolkit[1]
JavaをJavaScriptに変換するグーグルのツールを使ってみよう
リトルソフト株式会社 長尾寿宏
2006/6/14
| 米グーグルが発表したGoogle Web Toolkit。Java言語で作成したクライアントアプリケーションを、JavaScript+HTMLアプリケーションに変換するという、まったく異なるアプローチを持つAJAXアプリ開発ツールだ。簡単なサンプルを動かしてみよう(編集部) |
| Google Web Toolkitとは? |
- - PR -
これまでも、BACKBASE Java Edition、ICESOFT ICEFACES、Nexaweb などAJAX+Javaでの開発に対応するフレームワーク製品または開発支援ツール製品は、かなりの数が存在していましたが、Google Web Toolkit(以下GWT)は、かなり趣が異なるモノのようです。
最大の違いはJavaでフロントのアプリを書くこと! SwingのJavaアプリ? いえ、違います。本家Webサイトから以下を引用します。
| GWTは、第2言語として“ブラウザなまり”を話さない開発者が、Google MapsやGmailのようなAJAXアプリケーションを簡単に書くことを可能にするJavaソフトウェア開発フレームワークです。(中略) あなたは、フロントエンドをJavaプログラミング言語で書き、GWTコンパイラがブラウザ対応のJavaScriptとHTMLへあなたのJavaクラスを変換します。 |
Javaクラスをブラウザ対応のJavaScriptとHTMLへと“GWTコンパイラ”によって変換させるという、極めて大胆な発想によるAJAX開発ツールなのです。
これまでのAJAX+Java開発フレームワークは、サーバ側プログラミングにJava言語を使用、あるいはJavaEEコンポーネントを利用するというものでした。
GWTは、クライアントアプリケーションをJava言語で作成し、それをJavaScript+HTMLアプリケーションに変換するという、まったく異なるアプローチを持つAJAXアプリ開発ツールです。
この興味津々なフレームワークを一緒に見ていきましょう。
| GWTの機能、特徴 |
まず、このGWTはどのような機能や特徴があるのか、Webサイトの内容を整理してみましょう。
ダイナミックで、再利用可能なUIコンポーネント
- 単体のGWTウィジェット(UIコンポーネント)を複合して新しいウィジェットを作成できる
- GWTのパネルはウィジェットの自動レイアウト機能
- ウィジェットとJavaクラスなので、ほかの開発者が再利用するのが簡単
実にシンプルなリモート・プロシージャ・コール(RPC)
- フロントアプリとWebサーバのデータ交換は直列化できるJavaオブジェクトを定義するだけ
- リクエスト時の直列化、レスポンス時のオブジェクト化はGWTが自動的に処理
- 多様なクラス階層、例外も取り扱える
- ブラウザ・ヒストリー管理
- ブラウザ・ヒストリー管理機能を提供
- 簡単な状態登録を行うだけで、ブラウザ・バックボタン押下に対応する振る舞いを実装できる
リアルデバッグ
- 開発時、フロントアプリをJavaVM内で実行できる
- Eclipseなど、統合開発環境を利用し、フロントアプリのイベント処理をデバッグできる
ブラウザ互換性
- JavaScript変換後のフロントアプリは、IE、FireFox、Mozilla、Safari、そしてOperaをサポートしている
- GWTが自動的に対応するので、開発者が特別な処理を組み込む必要はない
相互運用性と素晴らしい粒度のコントロール
- JavaScript ネィティブインターフェイス(JSNI)を提供
- これにより、フロントアプリのJavaソース中に手書きJavaScriptを追加できる
ここまで、単なるJava‐JavaScriptの変換ツールではなく、AJAXアプリでは手間が掛かる部分を手厚くサポートしてくれる、かなり充実したスペックを持つ開発フレームワークのようです。
| GWTの製品構成 |
次に、GWT全体の製品構成を見てみましょう。今回リリースされたGWTには、以下、4個の主要コンポーネントが含まれています。
![]() |
GWT Java-to-JavaScript コンパイラ
Javaで書かれたフロントエンドアプリケーションを、“ピュア”JavaScriptアプリケーションへ変換してくれるツールです。
GWT ホステッド Webブラウザ
Javaで書かれたフロントエンドアプリケーションを、JavaScriptへ変換せず、Javaバイトコードのまま実行してくれる特殊なWebブラウザです。これ自体もJavaアプリケーションですが、HTMLのレンダリングは組み込まれたインターネット・エクスプローラ (LinuxではGecko/Mozilla)が行っています。
JRE エミュレーションライブラリ
GWTはJavaの“ソース”コードを基にJavaScriptへの翻訳をしますが、その際、使用されるのは、Java標準クラスのエミュレーション“ソース”です。java.langパッケージとjava.utilパッケージの一部のクラスが対象となっています。
GWT Web UI クラスライブラリ
Webブラウザの“ウィジェット”を作成するクラス群です。ボタン、テキストボックス、チェックボックスといった標準的なものに加え、ダイアログボックス、ポップアップ、ツリー、各種パネルなどが含まれています。
| GWTのライセンス |
前記製品構成の中で、2つのJavaクラスライブラリに対し、Java-to-JavaScriptコンパイラとホステッドWebブラウザが開発ツールとして位置付けられている点に注目してください。
非常に重要な事項ですが、クラスライブラリと開発ツールではライセンスが異なっているのです。
2つのクラスライブラリは、Apache License(バージョン2.0)に基づくオープンソースなので、改変や再配布について非常に緩やかな規定となります。一方、Java-to-JavaScriptコンパイラとホステッドWebブラウザを含む開発ツールはバイナリのみの提供となり、Googleによって利用範囲が限定されています。
もちろん、開発ツールを使用して生成されたアプリケーション(JavaScriptコード)には、開発者のものとして、商用/非商用問わず一切の制限はありませんが、開発ツール自体の取り扱いには注意が必要となります。
詳細はダウンロードページの中央にあるテキストボックスの内容を参照してください。
また、上記ページの抄訳を弊社のWebサイトに掲載してありますので、ライセンスを理解するうえでの参考にしてください。
| 1/5 |
|
INDEX |
||
| Google Web Toolkitとは?(1) | ||
| Page1<GWTの機能、特徴/GWTの製品構成/GWTのライセンス> | ||
| Page2<Google Web Toolkit を使ってみよう/サンプルプログラムHelloを実行する> | ||
| Page3<そのほかのサンプルプログラム(グループウェア、メール、ツリービュー)/Dynamic Table(DynaTableディレクトリ) グループウェア/Desktop App Clone(Mailディレクトリ)メール/JSON RPC(JSONディレクトリ) ツリービュー/Kitchen Sink(KitchenSinkディレクトリ)> | ||
| Page4<マイプロジェクトの作成> | ||
| Page5<GWTの基本的なメカニズム/Webモードへのコンパイル/気になる日本語出力/Google Web Toolkit のインパクト> | ||
Googleからのサプライズ、Google Web Toolkit バックナンバー
- 第1回 JavaをAjaxに変換するグーグルのGWTを使ってみよう
- 第2回 GWTとYahoo!のAPIを使って画像検索アプリ!
- 最終回 JavaScript×HTMLとJavaのシームレスな開発環境
AjaxとPHPでリッチクライアント
Ajaxを扱うためのサーバーサイドのPHPライブラリを紹介する。リリースされたライブラリ、AjaxACを活用して好みの検索窓に改造してみよう
AjaxでつくるインタラクティブWebアプリケーション
AjaxでWebフォトアルバムを、ゼロから開発する。ライブラリを用いて機能を作り上げていくステップを、具体的に解説する
Ajax うきうき Watch
Ajaxという流行技術の定義を明確にしながら、Ajaxの動向からうきうきするような面白いもの、確実に押さえておきたいものを厳選してお届けしていく
- 第1回 Webアプリのユーザビリティを改善しまくるAjax
- 第2回 Ajax、それはWeb 2.0へと続く道
- 第3回 どんなに無茶をやっても「それもありかな」なAjax
- 第4回 自動車業界のAjaxを活用したキャンペーンを目撃せよ
- 第5回 “どのブラウザでも動くAjax”を共有財産として育てよう
- 第6回 プロプライエタリ2.0から考えるAjaxの公開/非公開部
- 第7回 メモリリークが小さくなったGoogle Maps APIの新版
- 第8回 “CGUI” 消費者が作り出すUIの時代突入
- 第9回 巨大化するAjaxライブラリをシンプルにする新たな流れ
- 第10回 地図のように年代を移動できるMITのAjax歴史年表
- 第11回 JSONがRFCになり、どんどんこなれるAjaxサービス
- 第12回 サーバが通信を開始できるComet活用Webチャット
- 第13回 オンラインゲームで検索精度を上げるGoogleの巧みさ
- 第14回 IE7とFirefox 2への利用者の大移動は起こるか?
- 第15回 グーグル検索エンジンを特定ジャンル専用に、Co-op
- 第16回 帯域やデバイス領域をフル活用させる“モバイルAjax”
- 第17回 新しい技術を模索するYahoo!、Google、MS
- 第18回 Ajaxの高度な使用例、Yahoo! pipes
- 第19回 Apollo参戦でウィジェット開発者の争奪戦が激化
- 第20回 Twitter登場で注目されるRTコミュニケーションツール
- 第21回 過熱するTwitterブームとMicrosoftのマッシュアップ
- 第22回 iPhoneのAjax戦略、そして今日もWeb APIは増加する
- 第23回 Ajax開発者がヒーローになるとき、それはいま!
- 第24回 携帯電話への拡張を進めるGoogleとWeb隠しコマンド
- 第25回 Ajaxで加速!? エンタープライズ2.0とWebOSの普及
- 第26回 「言葉」を超えた説得力を持つAjaxの存在感と広がり
- 第27回 ゲームから読み解く、俺スクリプト時代の知的な挑戦
- 第28回 マッシュアップ元年が終わり、2008年はどうなる?
- 第29回 Twitterやクラウドへも分岐するAjax/Web APIの道
- 第30回 Ajaxはじめて物語、そしてサーバでも動くJavaScript
- 第31回 新ブラウザ戦争はon fireだがJavaScriptはoffのナゾ
- 第32回 Google App EngineはAjaxへのハードルを下げるか?
- 最終回 Pure JavaScriptの動画再生やRPGも好きでした
| Ajax解体新書(1) よりAjaxを深く理解するために、ブラウザ上の「見た目」だけに注目するのではなく、実際に目に見えない舞台裏の通信内容をモニタリングしてみよう Ajax技術の目に見えない通信内容をのぞいてみよう 2006/2/11 |
||
| 古くて新しいAjaxの真実を見極める 「Webインターフェイスの新しい手法」「画期的なWebアプリケーションの仕組み」であるとして開発者たちの人気を集めるAjaxとは何なのか、その真実を見極めてみよう 最終更新 2005/8/2 |
||
TechTargetジャパン
- 家電のUIになるブラウザ (2012/2/3)
未来の家電はインターネットに接続でき、ブラウザが内蔵されてくる。家電にブラウザが載ったらどうなるか? 未来のホームネットワークを想像しよう - 「汎用のUI技術」として広がるHTML5 (2012/2/2)
すさまじい勢いで成長しているHTML5を中心としたオープンなWebプラットフォーム。HTML5やAPI、Webブラウザのアップデート情報をお伝えする - ビヨンド・クールジャパン!? (2012/1/27)
コンテンツという文化力と、ものづくりという技術力を掛け合わせる。両方を国内に持ち合わせている国は多くない。チャンスなのだ - Qt5で10億人ユーザーへ、OSSコミュニティ化で健在に (2012/1/20)
ノキアから売却されてQtはどうなったのか? 弱体化してしまうのではとの心配をよそにダウンロード数は飛躍的に伸びている
|
|

