Google Closure Tools
Closure ToolsというものがGoogleからアナウンスされた.JavaScript関連の3つの技術の総称らしい.
- Closure Compiler
- Closure Library
- Closure Templates
Closure Compiler
JavaScript -> JavaScriptのコンパイラ.変数名を短くしたり,実際には使われていないコードを削除したりすることで,JavaScriptのソースコードを圧縮し,ダウンロードや実行を高速化する,とのこと.文法チェック,参照のチェックもしてくれるらしい.実行する前に,わかるのはうれしいかもしれない.
FirefoxプラグインのJavaScriptデバッガFireBugの拡張Closure Inspectorを用いると,圧縮したコードに対して普通のコードと動揺にデバッグできる,とのこと.変数名は失われていそうだが,どうやってやるんだろう?
Closure Library
JavaScriptのライブラリ集.パッケージ関連や,継承の実現など言語レベルの機能から,UIウィジェットまで幅広い.
API ドキュメントを見ると度肝を抜かれる.およそ考えつくようなウィジェットが全部ある感じ.こりゃすごい.
どうもThird Partyライブラリをバックエンド?として使っているらしい.
Closure Templates
Yet another template engine, ではあるが,
- テンプレートをターゲットコードにコンパイルするので高速.
- ターゲットコードとして,JavaとJavaScriptの双方が選択可能.したがって,一つのテンプレートで,Serverで生成する場合とブラウザで生成する場合を吸収できる.
- テンプレートから別のテンプレートを呼び出すことができる.これによって,画面の部品をテンプレートで構成して,それを組み合わせてレンダリングすることが容易になる.
といった特徴がある.
ただし,Javaで使うときには,構造データをいちいちMapとして書かなければいけないようだ.FreeMarkerやVelocityのようにBeanを解釈してはくれないらしい.これは結構きつい.
所感
なんで「Closure」なんだろう?いろいろドキュメントを読んでもわからなかった.
あと,GWTとの関連はどうなってるんだろう?Closure Libraryで使われているWidgetの多くはGWTと共有しているのだろうが.
GWTの技術者は,「JavaScriptは言語としては面白いけど,静的型付けがないため,デバッグしづらく,Software Engineering的に苦しい.だからJavaのコードからJavaScriptを生成するのだ」といっていた.私もこの意見には賛成なのだが,ひょっとすると,Closure Compiler,LibraryをEclipseと組み合わせて,静的チェックを行うようにすれば,Javaと同じように開発できるぞ,ということなのだろうか?