水曜日, 12月 20, 2006

Tamarinへ・・・Javascript2.0


現在Mozilla財団は「Firefox」ブラウザの開発に尽力している。毎回FirefoxブラウザとThunderbirdメールクライアントは同時にリリースされるのに、今回「Thunderbird2.0」はリリースされなかった。それだけIEとの戦いが熾烈になってきているということでもあろうか。そんなFirefoxの利点は、非常に優秀なJavascriptパーサだ。JavascriptはWebページに動的な変化を加えられるスクリプト言語で、最近のPC向けWebブラウザのほとんどは、Javascriptを実行する機能がついている。

MozillaのFirefoxは「Gecko」というHTMLレンダリングエンジンを搭載している。そのため、Gecko採用のブラウザとその他のブラウザとではJavascriptの仕様が若干異なるということになる。例えば、IEは「JScript」と銘打ったものを搭載している。現在の最新バージョンは5.6で、IEにはActiveXコントロールとしてJScriptが実装されている。Firefoxを始めとするGeckoのJavascriptの最新バージョンは「1.7」である。Geckoの前身がNetscapeであり、Javascriptを最初に開発したのが旧Netscape社であることを考えるとGeckoのJavascriptが正統派と考えるのが自然だろう。MSの.NETやIEが敢えて「JScript」としているのもそこらへんへの配慮もあってのことと思う(思いたい)。
さて、そんなMozilla財団にAdobe社が同社の「Flash」技術におけるスクリプト言語「ActionScript」のパーサである「AVM(ActionscriptVirtualMachine)」を寄贈した。これは何を意味するのだろうか?

実は、そもそも旧Netscape社がJavascriptを開発した際、ECMA(欧州電子計算機工業会)が「ECMA-262」という形でこれを体系化し、Javascriptの派生版(例えばソフトを開発する際、その上で動くマクロにおいてJavascriptを採用したい時など)を作る際の参考にせよ、とした。
それは今では「ECMAScript」と俗称で呼ばれているのだが、このECMAScriptは現在「Edition-4」まで存在しているが、現行のJavascript1.7(Javascript1.x:SpiderMonkey)/JScript5.6はEdition-3を元にしている。しかし、AVMはEdition-4を元にしているため、AVMを元にMozillaはEdition-4ベースのJavascriptランタイム(Javascript2.x:Tamarin)を構築できるようになるのだ。

それでは、具体的にEdition-4ベースになると何がどう変わるのかというと、
・シンタックスが静的、動的にクラス定義を行えるようになる
・「パッケージ」という概念を用いることになり、「パッケージ」は名前空間やバージョン管理を行うこととなる
・ConstやFinalなどの定数を定義てきる
・変数や関数へのアクセス制御に「Private」「Public」「Internal」を用いる
・他のプログラミング言語と正しく互換性のあるIntタイプを持つ

この結果、クラスやパッケージといった概念が本格的にJavascriptの世界に進出し、C++やJAVあ。C#さながらの構文となってしまったが、一応は「特定のプログラミング言語に似せるわけではない」と断られており、C++などに故意に似せるつもりは無いようだ.

0 件のコメント: