JavaScript(ジャバスクリプト、ジャヴァスクリプト、略称:JS)はスクリプト言語である。


 主にWebブラウザ上で動作し、HTMLの動的書き換えや入力フォームの自動補完など、ウェブページの使用感向上を目的として使用されたり、リッチクライアントアプリケーションの構築に使われる。


 文法はプロトタイプベースのオブジェクト指向型である。多くの場合は、C言語に似た手続き型言語のようなスタイルで書かれるが、関数型言語とも多くの類似点がある。近年ではその柔軟な設計が評価され、様々なアプリケーションで自動実行の用途におけるマクロ言語としても採用されている。


 当初は、簡単なアプリケーションがテキストエディタによって構築されることがほとんどだったが、近年では、IntelliJ IDEAやSpket IDEなどのIDEに、コード補完・編集時のリアルタイム文法チェック・リファクタリングなどの機能が搭載されるようになり、大規模開発が容易となった。


 また、Ajax開発等における各ブラウザの実装の違いによる互換性の問題は、JavaScriptライブラリが吸収することにより、解決が図られている。さらに、ExtJSなどの本格的なGUIライブラリの登場により、デスクトップアプリケーションと遜色のないアプリケーションを構築することが可能となった。


 また、DWRなどの技術の発達により、クライアント・サーバ間の通信が著しく容易になり、また、JettyなどのアプリケーションサーバがComet利用時のメモリ使用量の削減を実現したため、サーバからクライアントへの情報のPush型の配信が実用的となった。

 JavaScriptはネットスケープコミュニケーションズのブレンダン・アイクによって開発され、Netscape Navigator 2.0 で実装された。開発当初はLiveScriptと呼ばれていたが、1995年にSun Microsystemsの開発したプログラミング言語Javaが当時大きな注目を浴びており、NetscapeとSun Microsystemsが技術提携していた事もあった為、JavaScriptという名前に変更された[2][3]。1996年にマイクロソフトのInternet Explorer3.0に搭載されるようになると、その手軽さからJavaScriptは急速に普及していく。


 1997年、通信に関する標準を策定する国際団体Ecma Internationalによって JavaScript の中核的な仕様がECMAScriptとして標準化され (ECMA 262, ISO/IEC 16262, JIS X 3060)、多くの Webブラウザで利用できるようになった。 ネットスケープ社は、自社サーバ製品で、WEBアプリケーション開発言語としての実装であるLiveWire JavaScriptも開発したが、こちらはあまり普及しなかった。


 市場のブラウザ間互換性がある程度確立された2000年頃にはGoogleやAmazon等の大手企業もJavaScriptを積極的に利用し始めた。代表的なものとしてはGoogle マップ[1]やAmazon Diamond Search[2]等がある。2005年、JavaScriptの非同期通信を利用した技術にAjaxという名前がつけられたことによって、高機能なWebアプリケーションの開発言語の一つとして再び注目を集めている。しかし今も尚、JavaScriptによる脆弱性や攻撃は存在しており、状況が本質的に変わった訳ではない。


 また、最近ではMozilla Firefox用拡張機能のGreasemonkeyやOperaの標準機能などにおいて、「User JavaScript」と呼ばれる、JavaScriptを使ったWebのカスタマイズが可能なWebブラウザも出てきている。

 2000年~2003年にかけて、JavaScript 2.0 を作ろうとした動きがあったが、ネットスケープコミュニケーションズとマイクロソフトの対立でまとまらなかった。当時ネットスケープコミュニケーションズが提案していた案がアドビの ActionScript 2.0 に引き継がれ、マイクロソフトの案が JScript .NET へと引き継がれた。その後 ECMAScript 4 の策定が進められ、2006年の時点でMozilla Foundation はこれに基づいて JavaScript 2.0 を作成することを表明していた。Mozilla は ECMAScript 4 の策定にあたって Python のよさを取り込んだ案を提案しており、自身でもこれを実装している。


ただその後ECMAScriptの標準化作業が、Mozilla / Adobe / Opera / Google らが推す ECMAScript 4 と、Microsoft / Yahoo! らが推す ECMAScript 3.1に事実上分裂してしまった影響から、2008年8月に大きな方針転換が有り、JavaScript 2.0のベースを策定するプロジェクトとして新たに「ECMAScript Harmony」が発足した。同プロジェクトでは ECMAScript 3.1をベースとしつつも、ECMAScript 4 に入る予定だった機能のいくつかを取り込む形で標準を策定する予定となっている。なお、ECMAScript 4 で導入された名前空間・パッケージなどの機能は導入されない。