通信用語の基礎知識 IPv4
戻る
参加者募集中

JavaScript

辞書:電算用語の基礎知識 プログラミング言語編 (PTPROGN)
読み:ジャバスクリプト
外語:JavaScript 英語
品詞:名詞
2001/04/21 作成
2012/11/14 更新

Netscape Communicationsが開発した、Webブラウザースクリプト言語

Netscape Navigator 2.0以降で採用された、HTML中に記述するスクリプト言語である。

開発コード名は「Mocha」。当初は「LiveScript」という名になる予定だったが、営業戦略として、当時トレンドになりつつあったJavaの名前を冠した困ったちゃんがNetscapeにいたのでJavaScriptという名になってしまった。

JavaScriptの名はJavaの開発元Sun Microsystems(現Oracle)の合意を得て採用された。このため、Sun(現Oracle)の商標となっている。

普及

JavaScript誕生後、Microsoftも対抗としてJScriptという互換品を作り、VBScriptと共にInternet Explorerで採用した。

VBScriptはもちろん普及しなかったが、JavaScriptは普及、WWWにおける標準スクリプト言語となった。

1997(平成9)年には情報通信の標準化団体ECMAが標準化を図る目的でECMAScript(ECMA-262)として標準化、今後も更にJavaScriptの標準化が進む見通しである。

なお、Javaという名前が付けられてはいるが、Javaとは直接の関係はない。

バージョン

Netscapeによるバージョンは1.5までで、以降はFirefoxが勝手に(?)拡張を続けたものである。

  • JavaScript 1.0 (Navigator 2.0)
  • JavaScript 1.1 (Navigator 3.0)
  • JavaScript 1.2 (Navigator 4.0/4.05)
  • JavaScript 1.3 (Navigator 4.06から4.7)
  • JavaScript 1.4 (Netscape Server)
  • JavaScript 1.5 (Netscape 6、Firefox 1)
  • JavaScript 1.6 (Firefox 1.5)
  • JavaScript 1.7 (Firefox 2.0)
  • JavaScript 1.8 (Firefox 3.0)
  • JavaScript 1.8.1 (Firefox 3.5)
  • JavaScript 1.8.2 (Firefox 3.6)
  • JavaScript 1.9 (Firefox 4‐11)

更新箇所

  • JavaScript 1.1
    • imageオブジェクトの追加
    • windowオブジェクトのscrollメソッド追加
    • 配列(Arrayオブジェクト)の強化
  • JavaScript 1.2
    • LAYERによるダイナミックHTML対応
    • switch構文追加
    • 正規表現(RegExp)オブジェクト追加
  • JavaScript 1.3
    • ECMA-262(ECMA Script)の第1版との互換性、このためいくつかの仕様変更
    • 文字コードの扱いをUnicode化
    • undefined値への対応
  • JavaScript 1.5
  • JavaScript 1.6
    • ECMAScript for XML (E4X)
    • Arrayオブジェクトに7つの新メソッドを追加
    • ArrayとStringの汎用化
  • JavaScript 1.7
    • ジェネレーター (generators)
    • イテレーター (iterators)
    • 配列内包 (array comprehensions)
    • let式 (let expressions)
    • 分割代入 (destructuring assignment)
  • JavaScript 1.8
    • 式クロージャー
    • ジェネレーター式
    • Arrayオブジェクトに 2つの新しい繰り返しのメソッドを追加
    • for..inの分配方法の変更
  • JavaScript 1.8.1
    • Object.getPrototypeOf()
    • ネイティブJSON
    • Stringオブジェクトに新しいtrimメソッドを追加
  • JavaScript 1.9
    • ECMA Script 5(ECMA-262 Edition 5)の先行実装
  • JavaScript 1.9.1
    • ObjectにgetPrototypeOfメソッドの追加

用法

具体的にはHTML中でscript要素を用いる。さらにtype属性でMIMEタイプを指定(JavaScriptは "text/javascript")を指定する。

HTML中に記述することも、別途ファイルを用意して読み込むことも可能。

古いNetscapeではlanguage属性でスクリプト言語の種類を指定していたために、古い書籍によってはlanguage="javascript"と書いているものがあるが、この記述法は既に古い。

用途

JavaScriptはブラクラを作るためにあると思っている人もいるが、おそらく違う。

DOMを使えば画面を動的に変更することが可能で、JavaScriptが無ければ画面のリロードが必要となるようなシーンでも、それをすることなく必要な処理をすることが可能である。但し、Internet Explorerだけ仕様が違うため、使用には注意が必要である。

速度の需要

JavaScriptの重要性は高まる一方である。

AjaxはじめWebアプリケーションに無くてはならないものとなっただけでなく、HTML5との組み合わせで本格的なアプリケーションを作ることの出来るプログラミング言語となっている。

しかも、パーソナルコンピューターから携帯電話機まで、あらゆるプラットフォームで利用できることも強みである。

これがWebブラウザーでの処理速度の向上を強く後押しする結果となり、様々な技術を投入しJavaScriptの高速実行を達成させている。

技術

JITコンパイラー

Javaの高速化などと同様、JavaScriptも一旦ネイティブコードを作って実行するJITコンパイラーが導入されている。

一度に全部コンパイルする「メソッドベースJIT」と、特定箇所を重点的に高速化する「トレースJIT」が存在する。

GPUの利用

JavaScriptをGPUで高速化しようとする試みもある。

Webでは、動画、音楽などの処理が増え、三次元表示などをする例もある。こういったアプリケーションは今後も増えると見込まれ、GPUを用いた並列処理が研究されている。

実装

IE9

マイクロソフトはInternet Explorer 9(IE9)で、これまでのJavaScriptエンジンを捨て、まったく新しいJavaScriptエンジンを開発、導入した。

開発コード名はChakra(チャクラ)である。

  • バックグラウンドでのJavaScriptコンパイル

    ページの素早い表示のために、最初はインタープリターで実行をするが、バックグラウンドでネイティブコードへのコンパイルも行なう。

    そして、コンパイルが終わったメソッドから順次、ネイティブコードを実行するように切り替えていく。

    読み込んで直ぐに実行できるのが強みで、その上、普及しているマルチコアCPUの利点も活用しているのが特徴。

  • 型の最適化

    型システムの効率化は、インタープリターの高速化にとって重要な要素の一つである。

    Chakraでは、動的言語ランタイムのトレンドとなっている、多相インライン・キャッシュなどの技術を採用した

  • ライブラリの最適化

    JavaScriptに限らず、機能にせよ速度にせよ、高級言語の性能はライブラリの性能に依存している。

    ライブラリには、文字列、配列、オブジェクト、正規表現など様々なものがあるが、これらのチューニングを行ない、速度を追求した。

    例えば、正規表現は極めて多機能ではあるが、実際に使われる表現は僅かで、定形化している。そこで、このような普遍的な例で高速化するよう、最適化が行なわれている。

Mozilla Firefox

Mozilla Firefox 4は、二種類の方法を組み合わせる手法を採用した。

多くのWebブラウザーと同様の、全てのJavaScriptコードを読み込んでコンパイルして実行するメソッドベースJITに、従来からの、特定箇所を重点的に高速化するトレースJITを組み合わせた。

コメントなどを投稿するフォームは、日本語対応時のみ表示されます


KisoDic通信用語の基礎知識検索システム WDIC Explorer Version 7.03 (16-May-2019)
Search System : Copyright © Mirai corporation
Dictionary : Copyright © WDIC Creators club