かつてサーバーサイドJavaScriptは実在した

以下の記事を読んで、そういえばと思い出した。

たしかに、JavaScriptはWebブラウザ上つまりクライアントサイドで動くもの、というのが今の一般的な認識だ。 しかし、かつて Server Side JavaScript という技術は実在し、しかもけっこう活躍していた。

むかーしむかし。今は無いに等しきNetscape社が、ダイナミックなWebページを作り出すためのスクリプト言語を開発していた。一方ちょうどその時期にSun Microsystems社内ではJavaというまったく別な言語を開発していた。両社の技術者の間で「その名前、かっこいいね、いただいていい?」「うん、いいよ」という会話があったのかどうかは知らないが、とにかくNetscape社のスクリプト言語はJavaScriptと名づけられた。こうして「JavaとJavaScriptは兄弟」といったふうな誤解が以後(今でも)広まることになる。似ているのは実際には名前とプログラムの書き方だけで、技術的な中身はまったく違うのに。

初期のJavaScriptはブラウザに搭載されクライアントサイドで動いていたが、それは開発元のNetscape社のメインな製品がブラウザだったから当然の流れとしてそうなっただけで、JavaScript自体はクライアントサイドに限定フォーカスされていたわけではなかった(らしい)。Netscape社はブラウザだけでなくWebサーバー製品の自社開発にも着手し、iPlanetというブランドで売り出した。当然、iPlanet WebサーバーはサーバーサイドでJavaScriptが動くようになっていた。

サーバーサイドJavaScript実行エンジンはiPlanetシリーズだけに搭載されていたわけではない。コトの経緯はよく知らないが、ソフトウェアベンダーのいくつかにもライセンス供与されていたようだ。当時は今で言うJAVA/JSPのようなWebサイト向きのアプリケーション技術が少なかったせいもあるのだろう。そのうちのひとつが、BroadVision(社名と製品名同じ)だ。ルールベース型と呼ばれる方式のリコメンデーションエンジンがウリの、今で言うアプリケーションサーバの走りである。BroadVision上ではサーバー側アプリケーションをJavaScriptで書くようになっていた。

「ワン トゥ ワン」とか「レコメンデーション」とか「スティッキーなサイト」とかいう単語が流行ったいわゆるネットバブルの時期に、名だたる企業が競ってBroadVisionを導入した。日本ではJAL(日本航空)やNECの121ware.comなど。ヒューレットパッカード社の直販サイトも最近までBroadVisionを使っていたようだ。 カリフォルニア州公式サイトは今もBroadVisionを使っている。なお、レコメンデーションの現実と幻については過去の記事へどうぞ。

Javaはクライアントサイドの「アプレット」として登場したが「重いんだよ!」の一言で総スカンを食らってしまい、現在のようなサーバーサイド用言語として認められるまでのしばらくの間、苦渋をなめる事になった。一方JavaScriptはクライアント側はもちろんサーバーサイドでもうまくいきそうな気配があったのに、結局クライアントサイドでしか生き残ることができなかった。Netscapeという開発元自体が遭遇してしまったネットバブルの荒波とブラウザ戦争の副作用だったといえばそうなのかもしれない。しかもAjax技術の中核として認められる最近まで「Javascriptは最も誤解された言語」だった。

とにかく、Netscapeの凋落とともにサーバーサイドJavaScript実行環境は表舞台から遠ざかってゆき、代わってJavaが躍進した。iPlanetシリーズはSunに買収されてSun Java System Webサーバーとなり同社のWeb層を担う製品のひとつに過ぎなくなった。Broadvisionも今のバージョンではJavaScriptではなくJavaをベースとしており、内部エンジンとしてWebLogicやJBossに頼るようになっている。

とはいえ、世の中に古くからあるいろいろなサイトでURLが「****.jsp」とあるもののうち、もしかしたら、そのいくつかは「Java Server Pages」ではなくいまだに「Java Script Pages」なのかもしれないのだ。いや、冗談抜きで。

さて、この記事のタイトルは「かつて実在した」と、あえて過去形にしたが、実際のところは今でも実在する。

Kazuho@Cybozu Labs: 今日から始める Server-side JavaScript
IIS以外にも、Sun Java System Web serverという名前のかつてのiPlanetだが、Server Side JavascriptがSun Java Active Server Pagesと技術名称を変えて、、、なんかややこしいが、とにかくまだサーバーサイドJavaScriptが使えるようだ。そのうちオープンソースのサーバーサイドJavascript実行環境なんてのが出現しても不思議ではない。mod_php4みたいな感じでmod_javascriptとかありそうだ

Ajax技術は便利だ。その中核をなすJavaScriptでサーバー側の処理も書けたらもっと便利で手間が省けるだろう。 Web2.0の世界において、サーバーサイドJavaScriptの復活はあるのか? それは市場のみぞ知る。

トラックバックURL

このエントリーのトラックバックURL:
http://www.ywcafe.net/mt/mt-tb.cgi/565

コメント

そのむかし(1997〜8年頃?)Netscape Enterprise ServerのServer Side JavaScriptの実行環境"LiveWire"のユーザでした。データベース接続等のライブラリ群とのセットだったり、Windows等で開発・テストしたコードを(jarのように)アーカイブして、Solarisな環境にコピーしてそのまま動いたりと当時としては随分便利でした。
そういえばLiveWireはサーバサイドのオブジェクトと、ブラウザのJavaAppletとを連携・通信させるLiveConnectというインフラも提供していましたね。

mod_javascriptは昔から話題にはあがりつつもオープンソースで実装する人がなかなか出てこなかったような。単にJavaScriptのエンジンをApacheに組み込んで動的にコンテンツを...といったものはすぐ作れるのですが、データベースのハンドリングだなんだの、今時な便利なWeb系フレームワークと戦うための下ごしらえが結構大変。以前から作ろうかなとはおもいつつも、ヘボイの作ってほったらかして名前空間を浪費するのも公害にしかならないしで悩ましいところです。

今でもサーバーサイドJavaScriptありますよ。
mayaaとかRihno(綴り間違ってるかも)使ってるはず。
サーバーサイドまでJavaScriptで書いたら、Write Once, Run Anywhereですね。
そういうのが当たり前になったら、昔Javaって言語があって、それを拡張したのがJavaScriptだよなんて、また間違った誤解された言語になったりして(笑)

Java 方面だと Rhino が Mustang に入りますから面白くなるかも。

mod_javascript はこんなのを見つけました。
http://d.hatena.ne.jp/brazil/20050904/1125845642
"Rhinolaは、Mozilla Rhino JavaScriptインプリメンテーション、およびApacheのmod_gcjモジュールの上で動く、ウェブアプリケーションを対象としたサーバサイドのスクリプト実行環境です。"
http://users.skynet.be/saw/wxJS/mod_wxjs/index.html
" The main goal of wxJS is to port wxWidgets to JavaScript. But wxJS is a lot more. You can write your own extensions and make your C/C++ libraries available in JavaScript.(略)
wxJS has also an Apache module: mod_wxjs. This means that you can use JavaScript, E4X and wxWidgets to write server applications. "

こんにちは。
私達が今年の1月にリリースしたfirecatもServer-Side Javascriptをメインにやっています。
Firecat">http://betaworks.netbeans.jp/Wiki.jsp?page=Firecat
宜しくです。

JRUN4も確かRhinoを積んでます。
JavaScriptでJavaクラスやFlash Remotingが呼べたハズ。

ECMAScriptつながりで、Flash Media ServerのサーバサイドスクリプトもJavaScriptの兄弟ですね。

ここ7年くらいBroadVisionばっかりやってます。

コメントする

(初めてのコメントの時は、コメントが表示されるためにこのブログのオーナーの承認が必要になることがあります。承認されるまでコメントは表示されませんのでしばらくお待ちください)


画像の中に見える文字を入力してください。