S.F. Page

Programming,Music,etc...

JavaScriptやJScriptにまつわる雑文

JavaScriptは商標である。どこの商標かというとオラクルである。しかしなぜこの名前になったのか。言語仕様的にはほとんど関係なさそうなのだが。この名前はマーケティング戦略により命名されたものらしい。当時ホットな言語としてJavaがあり、それに関連付けることにより利用拡大を期待したようだ。

言語的にはあまり関係がないといっても、JavaアプレットとJavaScriptをつなげるための仕組みというのはあってたしかLiveConnectとかいうAPIだったような気がする。これもほとんど記憶にないが。その後このAPIはNAPIとなったらしい。

NetScapeがJavaScriptを搭載したNN2.0をリリースしたのち、MSはIE3.0をリリースした。このブラウザはJScriptとVBScriptを搭載していた。当時Netscapeと競合関係にあったMSはJavaScriptのライセンス供与を拒否され、やむなく互換スクリプトとししてJScriptを開発した。このJScriptという名前はJavaScriptが商標であったための措置である。当時のIEはNNに較べると非常にお粗末なものであったが、まあとりあえずはブラウザとしては使えなくもないレベルには達していた。このJScriptは一般的には悪しき物として捉えられている独自拡張が施されていた。それはActiveXコントロールを利用可能にするActiveXObject()である。構文としては以下のように書く


    var obj = new ActiveXObject("(サーバー名).(タイプ名)");
    

この命令により、ActiveXコントロールが生成されobjに代入されるのである。このActiveXコントロールはPC内のリソースに自由にアクセス可能であった。この機能はセキュリティ面で非常に問題を抱えたものではあったのだが、ブラウザの能力を補完するプラグインの作成環境としては申し分のないものである。

このActiveXコントロールはそもそもデスクトップアプリケーション用のコンポーネント技術(COM)の名前を変更しただけのものである。Javaアプレットに対抗するためMSがネイティブプラグイン機能を既存の技術の名前を変えブラウザに実装したのであった。もともとこのCOMというオブジェクトはバイナリレベル・インターフェース(ABI)を言語間で共通化するというものであり、言語側でこのABIを実装することでコンポーネントを使いまわせるという利点があった。

当時のPCは非力であり、Javaアプレットを実用的なレベルで動かすには少々厳しかった。しかしネイティブ実装であるActiveXコントロールは実用的なスピードで動作した。このプラグイン・インターフェースはFlashなどの優秀なプラグインも生み出したが、セキュリティに関する脆弱性がたたって無効化・廃止する方向にある。ただIEの隆盛というのはこのActiveXのサポートも一因であると思う。利用できるAPIに制約を持たせたりサンボボックス化等を最初に仕様として施しておけばよかったのだが。廃止するには惜しい技術ではある。

ただChromeのNaClも意外に普及しないところを見ると、もうネイティブプラグインというのはよほどパフォーマンスを要求されるような特殊なケース以外では現在では不要なものなのかもしれないね。