JavaScriptが影響を与えるまでには長い時間がかかりました。JavaScript関連の多くの技術は、主流になるまでにしばらくの間存在していました。このセクションでは、JavaScriptの誕生から今日に至るまでに何が起こったかを説明します。全体を通して、最も人気のあるプロジェクトのみが言及されており、たとえ最初に登場したものであっても、多くは無視されています。たとえば、Dojo Toolkitはリストされていますが、同時期に作成されたあまり知られていないqooxdooもあります。また、Node.jsはリストされていますが、Jaxerがその前に存在していました。
2001年に、ダグラス・クロックフォードはJSON(JavaScript Object Notation)という名前を付け、ドキュメント化しました。その主なアイデアは、JavaScriptの構文を使用してデータをテキスト形式で保存することです。JSONは、オブジェクト、配列、文字列、数値、およびブール値にJavaScriptリテラルを使用し、構造化されたデータを表します。例:
{
"first"
:
"Jane"
,
"last"
:
"Porter"
,
"married"
:
true
,
"born"
:
1890
,
"friends"
:
[
"Tarzan"
,
"Cheeta"
]
}
長年にわたり、JSONは特に構造化されたデータがマークアップではなく表現される場合に、XMLに代わる人気のある軽量な代替手段となっています。当然のことながら、JSONはJavaScriptを介して簡単に利用できます(第22章を参照)。
Ajaxは、デスクトップアプリケーションに匹敵するレベルのインタラクティビティをWebページにもたらすテクノロジーのコレクションです。Ajaxで実現できるものの印象的な例の1つは、2005年2月に導入されたGoogleマップです。このアプリケーションを使用すると、世界地図をパンおよびズームできましたが、現在表示されているコンテンツのみがブラウザにダウンロードされました。Googleマップが登場した後、ジェシー・ジェームズ・ギャレットは、それが他のインタラクティブWebサイトと特定の特性を共有していることに気づきました。彼はこれらの特性をAjaxと呼びました。Asynchronous JavaScript and XMLの略です。[7] Ajaxの2つの基礎は、バックグラウンドで非同期的にコンテンツをロードすること(XMLHttpRequest
経由)と、結果で現在のページを動的に更新すること(Dynamic HTML経由)です。これは、常に完全なページのリロードを実行することからの大幅なユーザビリティの向上でした。
Ajaxは、JavaScriptと動的Webアプリケーションの主流のブレークスルーを示しました。それがどれほど時間がかかったかは興味深いことです。その時点で、Ajaxの要素は何年も利用可能でした。Ajaxの開始以降、他のデータ形式(XMLの代わりにJSON)、他のプロトコル(HTTPに加えてWebソケットなど)が使用されるようになり、双方向通信が可能になりました。しかし、基本的なテクニックはまだ同じです。ただし、Ajaxという用語は最近ではあまり使用されなくなり、ほとんどの場合、より包括的な用語であるHTML5およびWeb Platform(どちらもJavaScriptとブラウザAPIを意味します)に置き換えられています。
Node.jsを使用すると、負荷がかかった状態でもパフォーマンスの高いサーバーを実装できます。そのため、イベント駆動型でノンブロッキングI/OとJavaScript(V8経由)を使用します。Node.jsの作成者であるライアン・ダールは、JavaScriptを選択した理由として次の点を挙げています。
ダールは、イベント駆動型サーバーとサーバーサイドJavaScript(主にCommonJSプロジェクト)に関する以前の作業を基に構築することができました。
JavaScriptプログラマーにとってのNode.jsの魅力は、使い慣れた言語でプログラミングできること以上のものです。クライアントとサーバーの両方で同じ言語を使用できます。つまり、より多くのコード(たとえば、データを検証するため)を共有し、同型JavaScriptなどの手法を使用できます。同型JavaScriptは、クライアントまたはサーバーでWebページを組み立てることに関するものであり、多くの利点があります。ページは、より高速な初期表示、SEO、およびJavaScriptをサポートしていない、または古すぎるバージョンのブラウザーで実行するために、サーバーでレンダリングできます。ただし、クライアントで更新することもでき、応答性の高いユーザーインターフェイスが得られます。
Chrome OSでは、Webプラットフォームはネイティブプラットフォームです。このアプローチにはいくつかの利点があります。
モバイルオペレーティングシステムwebOS(Palmで生まれ、現在はLGエレクトロニクスが所有)の導入はChrome OSの導入よりも前ですが、「ブラウザーをOSとして」という考え方は後者(そのため、マイルストーンとして選択された)の方がより顕著です。webOSはより少なく、より多くあります。少ないのは、携帯電話とタブレットに非常に重点を置いているためです。さらに、JavaScriptでサービスを実装できるように、Node.jsが組み込まれているためです。Webオペレーティングシステムカテゴリのより最近のエントリはMozillaのFirefox OSであり、携帯電話とタブレットをターゲットにしています。Mozillaのwikiは、WebのWebオペレーティングシステムの利点を述べています。
また、取り組みの範囲を絞り、焦点を当てるために、目標にする必要もあります。最近、pdf.jsプロジェクト(プラグインなしでHTML5を介してPDFをレンダリング)で、「HTML5」がPDFのスーパーセットになるために埋める必要のある小さなギャップが明らかになりました。今回は、より大きなステップを踏み出し、Web開発者がiPhone、Android、およびWP7用に構築されたネイティブアプリと同等のアプリをあらゆる面で構築できないようにするギャップを見つけたいと考えています。