Javascriptの歴史

# Javascriptの歴史

Javascriptといえば，2016年現在，Webのフロントエンドには欠かせない技術となっているが，
そういえば，昔はJavascriptが使われているWebページはごてごてしてて重く，
ネットを使うときはブラウザのJavascript機能を切っていた気がする．

いつからこうなったのか？

ちょっと調べてみた．

(参考サイト)
http://www.kogures.com/hitoshi/history/javascript/index.html
http://www.slideshare.net/badatmath/js-shistory
http://blog.e-riverstyle.com/2009/12/web-ncsa-mosaic.html
http://wise9.jp/archives/2245
http://www.atmarkit.co.jp/ait/articles/0707/17/news114_3.html
http://www.blooberry.com/indexdot/history/netscape.htm
http://www.ezms.net/guide/dev/js/js_history.html
http://learning-fuzoku.hatenablog.com/entry/2015/03/07/010241
http://jxck.hatenablog.com/entry/ajax-10th-anniversary
https://developer.mozilla.org/ja/docs/Web/JavaScript/ECMAScript_6_support_in_Mozilla

https://ja.wikipedia.org/wiki/Adobe_Flash
https://ja.wikipedia.org/wiki/Google_Chrome
https://ja.wikipedia.org/wiki/Internet_Explorer
https://ja.wikipedia.org/wiki/Java
https://ja.wikipedia.org/wiki/Microsoft_Windows_95
https://en.wikipedia.org/wiki/Netscape_(web_browser)


# 1990年代 黎明期

Javascriptは主にブラウザ上で動く言語であり，
その歴史はブラウザの歴史と切っても切れない関係にある．

## 1993年
### NCSA Mosaic誕生
世界初の画像をインライン表示させることができたWebブラウザ．
HTTP，FTP，NNTP，Gopherなどの詰め込めるプロトコルは全部実装していたらしい．

このNCSA Mosaicプロジェクトは以下の二つのベンチャーに分派
- Netscape
- Spyglass
後に，MicroSoft(MS)はSpyglassからMosaicのライセンスを獲得し，Internet Explorer(IE)を作る．

## 1994年
### Netscape Navigator(NN) 1.0 リリース
12月5日 Netscape Navigator(NN) 1.0がリリースされ，非常に人気を博す．

## 1995年
色々転機となる年．
Dynamic HTML(DHTML)，つまり動くWebページを実現するための技術が出始める．

### Java発表
5月23日，今でも現役のJavaが発表される．
同時にJava Applet発表．ブラウザで動くJavaとして注目を集める

### IE 1.0発表
8月24日，Windows 95が発売され，IE1.0がMicrosoft Plus! for Windowsに組み込まれる．

### NN 2.0にJavascript
12月，NN 2.0に，ブレンダン・アイク（Brendan Eich）が開発した『LiveScript』が実装される
Netscape Communications CorporationとSun Microsystems(現Oracle)は当時提携関係にあり，
Javaの勢いに便乗しようとLiveScriptから『Javascript』に改名．

ここでついにJavascriptが登場する．

## 1996年
### IE 3.0登場
8月13日，IE 3.0登場

MSはIEにJavascriptを搭載しようとしたが，NN社はライセンスを供与しなかった．
そのため，Javascriptに似た言語として『JScript』という言語を開発

Javascriptとはかなり非互換の部分があり，
Javascriptで作成したスクリプトはIEで動かず，
JScriptで作成したスクリプトはNNでは動かないという開発者泣かせの状態に．

### Flashの発表
この年(1996年)にFutureWave Softwareという会社が、
Webページ上でのアニメーションやインタラクティブな動作を簡単に実現するFuture Splash Playerというプラグインを作成．

後のFlash．

Javaアプレットよりも軽く，Javaアプレットでできることの殆どをカバー．
この技術が地球上を席巻する．


## 1997年
### 標準化へ
JscriptとJavascriptというブラウザ互換性のない状態を解決しようと
NN社は，Javascriptを標準化しようと画策し，ECMAという標準化機関にJavascriptの標準化を依頼．

ECMA-262 初版ができる．

#2000年代前半 泥沼時代
## 標準化の決裂
1998年　ECMA-262 第2版
1999年　ECMA-262 第3版
までは標準化がうまくいっていたが，

ECMA-262 第4版が出るとき，4版にしようとするAdobe，Mozilla(旧NN社)と
そんな仕様認められるか！と
4版を放棄し3.1版を善しとするDouglas Crockford以下MSやYahoo!とで意見が別れ，打ち切りとなる．

このように，なかなか標準化が進まない．

## この頃のJavascript
比較的容易に利用可能できるため，Javascriptが徐々に普及するものの，
無駄にアニメーションするウェブページなど酷いサイトが増え始め，Javascriptを使ったページの評判がどんどん悪くなる．
また，ブラウザもセキュリティへの考慮が不十分で，
Javascriptの脆弱性をつくウィルスが登場したり，
ブラウザに無理に負荷をかける通称「ブラクラ」が簡単に作れてしまったりしたので，
ブラウザのJavascript機能をOFFにする人も続出した．

動くWebページは，Flashを使ったサイトが主流になり，
フルFlashでWebサイトを作る職業はWeb業界の花型の職業であったらしい．

ECMA Scriptを元にしたAction ScriptがFlashに組み込まれ，
よりFlashの需要が高まり，ネイティブなJavascriptいらないんじゃないかという時代が続く．

#2000年代後半　復権時代
## Ajax技術の登場
こんな感じで軽視されていたJavascriptであるが，
2005年，Googleは，JavascriptのAjax技術（非同期通信）を使ったGoogle Mapを発表し世間を驚かす．

Javascriptのルネッサンスが起きる．

GmailにもAjax技術を使い，JavascriptはWebにはなくてはならないものになる．

## ライブラリの普及
Javascriptが見直され始め，
formの内容を加工するような，ちょっとしたプログラムを書くものから，
より規模の大きいプロジェクトに使われるようになり，JSライブラリなるものが登場する．
2005年にprototype.jsや2010年にjQueryなどが出てきて，よりリッチな表現が可能になる．

## V8エンジンの登場
2008年にGoogle chromeが公開
ここに積まれていたV8エンジンというJIT(Just in time) Virtual Machine型の
JavaScript実行エンジンが搭載され，Javascriptは遅いという常識を覆していく．

## 標準化への前進
2009年にECMA-262 第5版が発表され，標準化にどんどん近づいていく．
こちらはECMA3.1版を踏襲している．

# Node.js 以後 (2010年以降)
## ブラウザからの独立
2009年にV8 Javascriptエンジンで動作するサーバーサイドのJavascript環境であるNode.jsが登場し，
それまで，ブラウザでしか動かせないというJavascriptの常識を一気に覆す．

この辺の記事が参考になる

http://d.hatena.ne.jp/badatmath/20101020/1287587240
http://d.hatena.ne.jp/badatmath/20101022/1287701281


## JS フレームワークの登場
Javascriptが見直されるにつれ，アプリケーションはどんどん大規模になっていく．
Backbone.js，Angular.js，React.js，Riot.jsなどがフロントエンドの現場では使われ始める．

タスクランナーとかテンプレートエンジンなんかが出てきて，より高度化・複雑化しています．．．

## ECMA-262 第6版 (Harmony)
そして，2015年6月17日，プロジェクトコードHarmoneyが完成．
ECMA 3.1と4との対立を文字通りHarmoney(調和)させたらしい．

まぁ，正直言って，いままでのベスト・プラクティスとは
まったく違った書き方をしなければならないので
勉強嫌いのプログラマー泣かせの仕様だと思うのですが...


# まとめ
1. IE(Jscript) vs NN(Javascript)
2. Flashにボッコボコに
3. 標準化へ
4. Ajaxで大爆発
5. node.jsでブラウザだけじゃない言語へ
6. 高度に，そして便利に

# 所感
結構紆余曲折あり，今の形になったJavascript．

これから，どのように広がっていくのか，非常に楽しみな言語です．

C++11でautoとか実装して来ているし，
Javascriptもclass構文が使えるようになったりして，
言語間の違いがだんだんなくなっているなぁと感じていますが...