JavaScript 言語の歴史
誕生
JavaScript はインターネットによって誕生し、ブラウザの出現とともに登場しました。その歴史を振り返るには、ブラウザの歴史から始めなければなりません。
1990 年末に、欧州原子核研究機構 (CERN) の科学者ティム バーナーズ リーは、世界最大のコンピュータ ネットワークであるインターネットをベースとしたワールド ワイド ウェブを発明しました。それ以来、ウェブ ファイルをオンラインで閲覧できるようになりました。 。初期の Web ページは、オペレーティング システムのターミナルでのみ閲覧でき、コマンド ラインを使用して Web ページを操作することしかできず、当然ながら非常に不便でした。
1992 年末、国立スーパーコンピューティング アプリケーション センター (NCSA) は、Mosaic と呼ばれる独立したブラウザの開発を開始しました。これは人類史上初のブラウザであり、それ以来、グラフィカル インターフェイス ウィンドウで Web ページを閲覧できるようになりました。
1994 年 10 月、NCSA の主要プログラマーであるマーク・アンドリーセンとベンチャーキャピタリストのジム・クラークは Mosaic Communications を設立し、同社はすぐに Netscape に改名されました。この会社の方向性は、Mosaic をベースにした一般ユーザー向けの新世代ブラウザである Netscape Navigator を開発することです。
1994 年 12 月に Navigator のバージョン 1.0 がリリースされ、市場シェアは一気に 90% を超えました。
Netscape は、Navigator ブラウザには、ブラウザの動作を制御するために Web ページに埋め込むことができるスクリプト言語が必要であることをすぐに発見しました。当時、インターネットの速度は非常に遅く、インターネット料金は非常に高価で、一部の操作はサーバー側で完了するのに適していませんでした。たとえば、ユーザーが「ユーザー名」を入力するのを忘れて「送信」ボタンをクリックした場合、サーバーがそれを発見するのが遅すぎます。ユーザーに「ユーザー名を入力してください」と伝えるのが最善です。ユーザーがデータを送信する前に。これには、ブラウザに各列が入力されているかどうかをチェックさせるための小さなプログラムを Web ページに埋め込む必要があります。
このブラウザ スクリプト言語に対する管理者のビジョンは、機能が強力すぎる必要がなく、構文が比較的単純で、学習と導入が簡単であることです。その年は Sun の Java 言語の登場と一致し、マーケティング キャンペーンは大成功を収めました。 Netscape は、Sun Microsystems と協力して、ブラウザでの組み込み Java アプレット (後に Java アプレットと呼ばれる) をサポートすることを決定しました。ただし、Java がブラウザー スクリプト言語として選択されるかどうかについては議論があります。その後、Web アプレットには Java のような「重い」構文が必要ないため、Java は使用しないことにしました。ただし、スクリプト言語の構文は Java に近く、Java プログラムをサポートできる必要があるということも決定されました。これらの前提により、Perl、Python、TCL などの既存の言語の使用が直接妨げられます。
1995 年、Netscape はこの Web スクリプト言語を開発するためにプログラマーの Brendan Aich を雇いました。 Brendan Eich は関数型プログラミングの優れた背景を持っており、Scheme 言語 (関数型言語の創始者である LISP 言語の方言) に基づいてこの新しい言語を実装したいと考えています。
1995 年 5 月、ブレンダン アイヒはこの言語の最初のバージョンをわずか 10 日で設計しました。これは、複数のソースからの構文が含まれたごちゃ混ぜです。
- 基本構文: C 言語および Java 言語から借用。
- データ構造: Java 言語から借用し、値をプリミティブ値とオブジェクトの 2 つのカテゴリに分割することを含みます。
- 関数の使用法: Scheme 言語と Awk 言語から学び、関数を第一級市民として扱い、クロージャを導入します。
- プロトタイプの継承モデル: Self 言語 (Smalltalk の亜種) から借用しました。
- 正規表現: Perl 言語から借用したもの。
- 文字列と配列の処理: Python 言語から借用しました。
物事をシンプルにするために、このスクリプト言語にはブロックレベルのスコープ、モジュール、サブタイプなどのいくつかの重要な機能が欠けていますが、既存の機能を使用して回避策を見つけることができます。この機能の欠如は、後の JavaScript の特徴的な機能に直接つながりました。他の言語の場合、その言語のさまざまな機能を学習する必要がありますが、JavaScript の場合、多くの場合、さまざまな問題解決パターンを学習する必要があります。そして、その起源が多様であるため、JavaScript のプログラミング スタイルは最初から関数型プログラミングとオブジェクト指向プログラミングのハイブリッドになるように運命づけられていました。
Netscape のブラウザ スクリプト言語は当初 Mocha という名前でしたが、1995 年 9 月に LiveScript に変更されました。 12 月、Netscape は Java 言語の発明者および所有者である Sun Microsystems と合意に達し、この言語を JavaScript と呼ぶことが許可されました。このようにして、Netscape は Java 言語の勢いに乗ることができ、一方、Sun はその影響力をブラウザにまで広げました。
この名前の理由は、JavaScript 自体が Java 言語と深い関係にあるためではなく (実際、この 2 つの関係は深いわけではありません。詳細については次のセクションを参照してください)、Netscape が Java 言語を使用することを決定したためです。ネットワーク アプリケーションを開発する場合、JavaScript はさまざまな部分を接続する接着剤のようなものです。もちろん、その後の歴史は、Java 言語ブラウザのプラグインが失敗し、JavaScript が隆盛したということです。
1995 年 12 月 4 日、Netscape と Sun は共同で JavaScript 言語をリリースし、JavaScript を Java の補足として、また特に Web ページの操作に使用される軽量 Java として推進しました。
1996 年 3 月、Navigator 2.0 ブラウザには正式に JavaScript スクリプト言語が組み込まれました。
JavaScript と Java の関係
ここでは、JavaScript と Java の関係について具体的に説明します。これらは 2 つの異なる言語ですが、互いに関連しています。
JavaScript の基本的な構文とオブジェクト システムは、Java を模倣するように設計されています。ただし、JavaScript は Java の静的型付けを採用しません。 JavaScript が Java に非常に似ているため、言語の名前が LiveScript から JavaScript に変更されました。基本的に、JavaScript という名前の本来の意味は「Java によく似たスクリプト言語」です。
JavaScript 言語の機能は独立したデータ型であり、プロトタイプ オブジェクトに基づく継承チェーンを使用します。 Java 構文との大きな違いは次の 2 つです。 JavaScript の構文は Java よりもはるかに自由です。
さらに、Java 言語はコンパイルする必要がありますが、JavaScript 言語は実行時にインタープリターによって直接実行されます。
つまり、JavaScript の本来の設計目標は、ユーザー (特に Java プログラマー) がすぐに使い始めることができる、Java に十分似た小さくてシンプルな動的言語であるということです。
JavaScript と ECMAScript の関係
1996 年 8 月、Microsoft は JavaScript を模倣し、JScript という名前の同様の言語を開発しました (JavaScript は Netscape の登録商標であり、Microsoft は使用できません)。これは最初に IE 3.0 に組み込まれました。 Netscape はブラウザ スクリプト言語の優位性を失いつつあります。
1996 年 11 月、Netscape は JavaScript が国際標準となりマイクロソフトに対抗できることを期待して、JavaScript を国際標準化団体 ECMA (欧州コンピュータ製造者協会) に提出することを決定しました。 ECMA の技術委員会 39 (Technical Committee 39) は、この規格の策定と検討を担当しており、そのメンバーは現在、業界の大手企業から派遣されている技術者で構成されています。委員会は定期的に開催され、すべての電子メールでの議論と議事録は公開されます。
1997 年 7 月、ECMA 組織は、ブラウザ スクリプト言語の標準を規定し、この言語を ECMAScript と呼ぶ標準文書番号 262 (ECMA-262) の最初のバージョンをリリースしました。このバージョンは ECMAScript バージョン 1.0 です。 JavaScript と呼ばれない理由の 1 つは、Java は Sun の商標であるため、ライセンス契約に従って JavaScript という名前を合法的に使用できるのは Netscape だけであり、JavaScript は Netscape On によって商標として登録されています。一方で、この言語の開発者が Netscape ではなく ECMA であることも反映したいと考えています。これは、この言語のオープン性と中立性を確保するのに役立ちます。したがって、ECMAScript と JavaScript の関係は、前者は後者の仕様であり、後者は前者の実装です。日常的な状況では、これら 2 つの単語は置き換え可能です。
ECMAScript は、JavaScript 言語の基本的な構文構造を標準化するためにのみ使用されます。たとえば、DOM 標準は、W3C 組織 (World Wide Web Consortium) によって開発されています。
ECMA-262 規格は、後に別の国際標準化団体である ISO (国際標準化機構) によって承認され、規格番号は ISO-16262 です。
JavaScript のバージョン
1997 年 7 月に、ECMAScript 1.0 がリリースされました。
1998 年 6 月に、ECMAScript バージョン 2.0 がリリースされました。
1999 年 12 月に ECMAScript バージョン 3.0 がリリースされ、JavaScript の共通標準となり、広くサポートされました。
2007 年 10 月に ECMAScript バージョン 4.0 のドラフトがリリースされ、バージョン 3.0 が大幅にアップグレードされました。正式バージョンは翌年 8 月にリリースされる予定です。草案が公開された後、バージョン 4.0 の目標が急進的すぎたため、この標準を採用するかどうかについて当事者間で深刻な意見の相違が生じました。 Yahoo、Microsoft、Google を筆頭とする大企業は JavaScript の大幅なアップグレードに反対し、小規模な変更を主張していますが、JavaScript の作成者である Brendan Aich 氏が率いる Mozilla は現在の草案を主張しています。
2008 年 7 月、関係者間で意見の相違が多すぎ、次のバージョンにどのような機能を盛り込むかについての議論が過激になったため、ECMA は ECMAScript 4.0 の開発中止 (つまり、このバージョンの廃止) を決定しました。既存の機能の改良が含まれるため、一部は ECMAScript 3.1 としてリリースされましたが、カンファレンスの雰囲気により、このバージョンのプロジェクト コード名は Harmony となりました。会議の直後、ECMAScript 3.1 は ECMAScript 5 に名前変更されました。
2009 年 12 月に、ECMAScript バージョン 5.0 が正式にリリースされました。 Harmony プロジェクトは 2 つに分割され、より実現可能なアイデアは JavaScript.next と名付けられ、開発が続けられました。その後、成熟度の低いアイデアは JavaScript.next.next として扱われ、今後開発される予定です。再度起動することを検討してください。 TC39 の全体的な考慮事項は、ECMAScript 5 は基本的に ECMAScript 3 との互換性を維持し、主要な文法修正と新機能の追加は JavaScript.next までに完了するということです。当時、JavaScript.next は ECMAScript 6 を参照していました。第 6 版がリリースされた後は、ECMAScript 7 を参照することになります。 TC39 は、ECMAScript 5 が 2013 年半ばに JavaScript 開発の主流の標準となり、今後 5 年間はこの地位に留まると予測しています。
2011 年 6 月に、ECMAScript バージョン 5.1 がリリースされ、ISO 国際標準 (ISO/IEC 16262:2011) になりました。 2012 年末までに、すべての主要なブラウザが ECMAScript バージョン 5.1 の全機能をサポートしました。
2013 年 3 月に、ECMAScript 6 ドラフトは凍結され、新しい機能は追加されませんでした。新しい機能は ECMAScript 7 に組み込まれることが想定されています。
2013 年 12 月に、ECMAScript 6 ドラフトがリリースされました。その後、すべての関係者からのフィードバックを聞くための 12 か月の議論期間が続きます。
2015 年 6 月に ECMAScript 6 が正式にリリースされ、「ECMAScript 2015」に名前が変更されました。これは、TC39 委員会が ECMAScript の次のバージョンを 2016 年に、「ECMAScript 2016」、2017 年に「ECMAScript 2017」というように毎年リリースする予定であるためです。
周辺イベント
JavaScript はインターネットの成長とともに進化してきました。インターネット周辺技術の急速な発展により、JavaScript 言語の開発が刺激され、促進されました。次に、JavaScriptの周辺アプリケーションの開発について見ていきましょう。
1996 年に、スタイルシート標準 CSS の最初のバージョンがリリースされました。
1997 年に、Web コンテンツを動的に変更できる DHTML (ダイナミック HTML) がリリースされました。これは、DOM パターン (Document Object Model) の正式な適用を示します。
1998 年、Netscape はブラウザをオープンソース化し、これが Mozilla プロジェクトの誕生につながりました。数か月後、AOL は Netscape の買収を発表しました。
1999 年に、IE 5 は XMLHttpRequest インターフェイスを展開し、JavaScript が HTTP リクエストを行えるようにし、後に普及する Ajax アプリケーションの条件を作りました。
2000 年に、KDE プロジェクトはブラウザ エンジン KHTML を書き直し、その後の WebKit エンジンと Blink エンジンの基礎を築きました。今年の 10 月 23 日、初めて KHTML ブラウザを含む KDE 2.0 がリリースされました。
5 年後の 2001 年、Microsoft は IE ブラウザの次のバージョンである Internet Explorer 6 をリリースしました。これは当時最も先進的なブラウザであり、その後長年にわたってブラウザ市場を支配しました。
2001 年、Douglas Crockford は、サーバーと Web ページ間のデータ交換用に XML 形式に代わる JSON 形式を提案しました。 JavaScript は、追加の展開コードを必要とせずに、この形式をネイティブにサポートできます。
2002 年、Mozilla プロジェクトはブラウザの最初のバージョンをリリースし、後に Firefox と名付けられました。
2003 年に、Apple は Safari ブラウザの最初のバージョンをリリースしました。
2004 年に Google が Gmail をリリースし、これによりインターネット アプリケーション (Web アプリケーション) の概念が誕生しました。 Gmail が 4 月 1 日にリリースされて以来、多くの人は最初は単なる冗談だと思っていました。
2004 年に Dojo フレームワークが誕生し、さまざまなブラウザーに同じインターフェイスと、主要な機能の便利な呼び出しメソッドを提供しました。これは、JavaScript プログラミング フレームワークの時代の始まりを示します。
2004 年に、HTML 言語の標準化プロセスを加速するために WHATWG 組織が設立されました。
2005 年に、Apple は KHTML エンジンに基づいて WebKit エンジンを構築しました。
2005 年に、Ajax メソッド (非同期 JavaScript および XML) が正式に誕生し、Jesse James Garrett がこの用語を発明しました。その人気の表れとして、2 月にリリースされた Google マップ プロジェクトではこの方法が多用されました。これは新世代の Web サイトの標準的な慣行となり、Web 2.0 時代の到来に貢献しました。
2005 年に、Apache Foundation は CouchDB データベースをリリースしました。 JSON形式に基づいたデータベースであり、JavaScript関数を使用してビューやインデックスを定義できます。これは従来のリレーショナル データベースとは本質的に異なり、NoSQL データベースの誕生を示します。
2006 年に、John Resig によって作成された jQuery 関数ライブラリが誕生しました。 jQuery は、Web ページの DOM 構造を操作するための非常に強力で使いやすいインターフェイスを提供し、最も広く使用されている関数ライブラリとなり、JavaScript 言語の適用の難しさを大幅に軽減して、この言語の人気を促進しました。
2006 年に Microsoft は IE 7 をリリースし、ブラウザ開発を再開しました。
2006 年、Google は Java を JavaScript にコンパイルする機能を提供する Google Web Toolkit プロジェクト (略称 GWT) を立ち上げ、他の言語の JavaScript への変換の先駆けとなりました。
2007 年に、Webkit エンジンが iPhone に導入されました。これはもともと KDE プロジェクトに基づいており、2003 年に Apple によって初めて採用され、2005 年にオープンソース化されました。これは、JavaScript 言語が携帯電話で使用できるようになることの始まりであり、デスクトップ コンピューターと携帯電話の両方で使用できるプログラムを作成できることを意味します。
2007 年に、Douglas Crockford が「JavaScript: The Good Parts」と題した講演を行い、翌年オライリーから出版されました。これは、ソフトウェア業界が JavaScript 言語を真剣に受け止め、その構文を再理解する始まりを示しています。
2008 年に V8 コンパイラーが誕生しました。 GoogleがChromeブラウザ用に開発したもので、JavaScriptの実行速度が非常に速いのが特徴です。 JavaScript のパフォーマンスを向上させ、構文の改善と標準化を促進し、JavaScript に対する外部の悪い印象を変えます。同時に、V8 はオープン ソースであり、高速な組み込みスクリプト言語を必要とする人は誰でも V8 を使用でき、JavaScript の応用分野が拡張されます。
2009 年に、Ryan Dahl によって設立された Node.js プロジェクトが誕生し、JavaScript がサーバーサイド プログラミングに使用できることが示され、それ以来、Web サイトのフロントエンドとバックエンドが同じものを使用して開発できるようになりました。言語。さらに、Node.js は大規模な同時トラフィックに耐えられるため、インターネット上で大規模なリアルタイム アプリケーションを簡単に開発できます。
2009 年に、Jeremy Ashkenas は CoffeeScript の初期バージョンをリリースしました。 CoffeeScript は JavaScript に変換して実行できますが、構文は JavaScript よりも単純です。これにより、他の言語が JavaScript に変換される傾向が始まりました。
2009 年に PhoneGap プロジェクトが誕生しました。このプロジェクトでは、主に iOS および Android プラットフォーム向けのモバイル デバイス アプリケーション開発に HTML5 と JavaScript を導入し、JavaScript をクロスプラットフォーム アプリケーション開発に使用できるようにしました。
2009 年に Google は Chrome OS をリリースしました。これは、ブラウザをベースに開発されたオペレーティング システムであり、JavaScript を使用してアプリケーションを直接作成できると主張されています。同様のプロジェクトに Mozilla の Firefox OS があります。
2010 年に、NPM、BackboneJS、および RequireJS という 3 つの重要なプロジェクトが誕生し、JavaScript がモジュール開発の時代に突入したことを示しました。
2011 年に Microsoft は Windows 8 オペレーティング システムをリリースし、システム サポートを直接提供するアプリケーション開発言語の 1 つとして JavaScript を使用しました。
2011 年、Google はブラウザにおける JavaScript 言語の独占を終わらせ、より合理的で強力な構文と機能を提供することを目的として Dart 言語をリリースしました。 Chromium ブラウザには、Dart プログラムを実行できる Dart 仮想マシンが組み込まれていますが、Dart プログラムを JavaScript プログラムにコンパイルして実行することもできます。
2011 年、Microsoft エンジニア Scott Hanselman は、JavaScript がインターネットのアセンブリ言語になることを提案しました。それはどこにでもあり、さらに速くなっているからです。他の言語のプログラムを JavaScript に変換して、ブラウザーで実行できます。
2012 年にシングルページ アプリ フレームワークが台頭し始め、AngularJS プロジェクトと Ember プロジェクトの両方がバージョン 1.0 をリリースしました。
2012 年、Microsoft は TypeScript 言語をリリースしました。この言語は JavaScript のスーパーセットになるように設計されており、すべての JavaScript プログラムを変更せずに TypeScript で実行できます。同時に、TypeScript には、主に大規模なプログラムの開発向けに、JavaScript にコンパイルして実行できる多くの新しい構文機能が追加されました。
2012 年に、Mozilla Foundation は asm.js 仕様を提案しました。 asm.js は JavaScript のサブセットです。asm.js に準拠するすべてのプログラムはブラウザーで実行でき、構文が厳密に制限されており、優れたパフォーマンスですぐにマシンコードにコンパイルできる点が特徴です。この目的は、他の言語のコンパイル仕様を提供して、他の言語を効率的な JavaScript コードにコンパイルできるようにすることです。同時に、Mozilla Foundation も Emscripten プロジェクトを立ち上げました。その目標は、LLVM ビットコードを JavaScript コードに変換できるクロス言語コンパイラーを提供することです。ブラウザで実行されます。 LLVM ビットコードの大部分は C/C++ 言語から生成されるため、これは C/C++ がブラウザーで実行されることを意味します。さらに、Mozilla は LLJS (JavaScript を C コードに変換する) プロジェクトと River Trail も所有しています。 wiki) (マルチコア プロセッサ用の ECMAScript 拡張機能) プロジェクト。現在、JavaScript にコンパイルできる言語は 40 近くあります。
2013 年、Mozilla Foundation は、ユーザー インターフェイス全体に JavaScript を使用するモバイル オペレーティング システムである Firefox OS をリリースしました。
2013 年、ECMA は JSON の [国際標準] (http://www.ecma-international.org/publications/standards/Ecma-404.htm) を正式に開始しました。これは、JSON 形式が XML と同じくらい重要になったことを意味します。公式です。
2013 年 5 月、Facebook は UI フレームワーク ライブラリ React をリリースしました。これにより、新しい JSX 構文が導入され、コンポーネントを使用して UI 層を開発できるようになり、Web アプリケーションがステート マシンであるという概念も導入されました。
2014 年、Microsoft は JavaScript Windows ライブラリ WinJS をリリースし、JavaScript と Windows オペレーティング システムの統合に対する Microsoft の完全なサポートを示しました。
2014 年 11 月、Joyent による Node プロジェクトの独占とプロジェクトの進捗の遅さに不満を抱いた一部のコア開発者が Node.js を離れ、よりオープンで頻繁に更新される Node.js バージョンである io.js プロジェクトを作成しました。短期間でバージョン 2.0 にリリースされました。 3 か月後、Joyent は Node プロジェクトの管理を放棄し、新しく設立されたオープン Node Foundation に引き渡すと発表しました。その後、io.js プロジェクトは Node に戻り、2 つのバージョンがマージされることを発表しました。
2015 年 3 月、Facebook は、React フレームワークを携帯電話に移植し、モバイル アプリの開発に使用できる React Native プロジェクトをリリースしました。これにより、JavaScript コードが iOS プラットフォームでは Objective-C コードに、Android プラットフォームでは Java コードに変換され、JavaScript 言語で高パフォーマンスのネイティブ アプリを開発する道が開かれます。
2015 年 4 月、Angular フレームワークはバージョン 2.0 が Microsoft の TypeScript 言語に基づいて開発されると発表しました。これは、JavaScript 言語への強力な型付けの導入に相当します。
2015 年 5 月、ノード モジュール マネージャー NPM が CPAN を上回り、JavaScript が世界で最も多くのソフトウェア モジュールを備えた言語となりました。
2015 年 5 月に、Google の Polymer フレームワークはバージョン 1.0 をリリースしました。このプロジェクトの目標は、本番環境で WebComponent コンポーネントを使用できるようにすることです。この目標が達成できれば、Web 開発はコンポーネント開発をベースとした新たな段階に入ります。
2015 年 6 月、ECMA 標準化団体は、「ECMAScript 2015 Standard」という名前の ECMAScript 6 言語標準を正式に承認しました。 JavaScript 言語は正式に次の段階に入り、大規模なアプリケーションを開発するためのエンタープライズレベルの言語になりました。この規格は提案から承認まで10年かかり、JavaScript言語の誕生から20年が経過しました。
2015 年 6 月、Mozilla は asm.js に基づく WebAssembly プロジェクトをリリースしました。これは、JavaScript エンジンの中間コード形式であり、Java のバイトコードに似ており、モバイル デバイスでの JavaScript スクリプトの読み込みに役立ち、実行速度が 20 倍以上向上します。これは、将来のソフトウェアでは JavaScript バイナリ パッケージがリリースされることを意味します。
2016年6月に「ECMAScript 2016 Standard」がリリースされました。前年のリリースと比較して、マイナーな機能が 2 つ追加されただけです。
2017 年 6 月に「ECMAScript 2017 Standard」がリリースされ、async 関数が正式に導入され、非同期操作の記述方法に根本的な変化がもたらされました。
2017 年 11 月に、すべての主要なブラウザーが WebAssembly をサポートしました。これは、あらゆる言語を JavaScript にコンパイルしてブラウザーで実行できることを意味します。
参考リンク
- Axel Rauschmayer、JavaScript の過去、現在、未来
- John Dalziel、スピード競争パート 4: JavaScript の未来 )
- Axel Rauschmayer、せっかちなプログラマーのための基本的な JavaScript
- balena.io、JavaScript の 18 歳の誕生日おめでとう! ありそうもない過去と明るい未来を振り返る
作者: wangdoc
アドレス: https://wangdoc.com/
ライセンス: クリエイティブ・コモンズ 3.0