概要
JavaScriptという言葉は狭義にはMozilla(firefoxが有名)が仕様を策定し実装しているスクリプト言語を指す。このスクリプト言語はEcmaインターナショナルでECMAScript(ECMA-262)として標準化されており、多くのWebブラウザー等はこの標準化されたECMAScriptを実装している。たとえば、マイクロソフトによる実装はJScriptと呼ぶ。
一般的にJavaScriptという言葉が使われるときはこのようなさまざまなECMAScriptの実装も含んだ幅広い意味でつかわれるので、どちらの意味でJavaScriptという言葉が使われているかは文脈で判断する必要がある。
ECMAScriptは仕様自体に独自の拡張を条件付きで認める記述があり、現在主要なブラウザが実装しているスクリプト言語はすべてECMAScriptに準拠していることになる。広義の意味でこれをJavaScriptと呼ぶ場合、主要なブラウザが実装しているスクリプト言語はマイクロソフトやGoogle、Appleの実装も含めてJavaScriptである。
なお、Webブラウザーでよく実装されているAPIであるDOM(Document Object Model)はECMAScriptの仕様の一部ではないので、DOMの準拠の有無はECMAScriptの準拠の有無とは関係ない。
なお、プログラミング言語JavaはJavaScriptとは全くの別物であり、派生言語でも何でもない。本言語の名前は、インターネット環境を担う言語として当時のJavaの人気にあやかっただけであり、両言語の構文はともにC言語を意識しているため部分的に似たところもあるがそれ以上の関連は特にない(一応設計の際「Javaみたいな見た目にしてくれ」というリクエストはあったらしいが)。そもそもはNetscape Navigator 2.0のために作られたもので、元はLiveScriptといった。
プログラミング言語としての特徴
JavaScriptはプロトタイプベースのオブジェクト指向プログラミング言語である。多くの場合はC言語に似た手続き型言語のようなスタイルで書かれるが、第一級関数をサポートしている(関数を第一級オブジェクトとして扱える)など、関数型言語の性質も持ち合わせている。そのような柔軟な設計から、いくつかのアプリケーションではマクロ言語としても採用されている。ファイルフォーマットは.js。
AptanaやEclipse、NetBeans、IntelliJ IDEAなどの統合開発環境はJavaScriptをサポートしており、大規模開発が可能になっている。また各処理系の実装の違いによる互換性の問題は、Prototype JavaScript FrameworkなどのJavaScriptライブラリが吸収することにより解決が図られている。さらにExt JSなどの本格的なGUIライブラリの登場により、デスクトップアプリケーションと遜色ないユーザインタフェースの構築が可能になった。
また、Direct Web Remoting (DWR) などの技術の発達によりクライアント・サーバ間の通信が著しく容易になったことや、JettyなどのアプリケーションサーバがComet利用時のメモリ使用量の削減を実現したため、サーバからクライアントへの情報のプッシュ型の配信が実用的となった。
JavaScriptはスレッド制御の命令をサポートしていないため、マルチスレッドのコードを書くことが困難だったが、HTML5の仕様にWeb Workers APIが組み込まれ、バックグラウンド処理や非同期入出力の制御が容易に実現できるようになった。
近年の動向
一時はポップアップ広告の煩わしさと問題によって煙たがられ、不要な言語と言われた時代もあった。しかし、非同期通信を可能にするAJAXという技術が開発され、Google Mapに採用されると爆発的に普及する。
更にはJavaScriptの派生ライブラリ、jQueryがデザイナー周りに重宝されるようになると、完全に復権を果たした。
スマホが普及するようになると、Facebook(現Meta)がReact、GoogleがAngularJSを開発したことでより、高速で柔軟なWEBアプリを制御する言語としてスタンダード化していくことになる。Reactは連携フレームワークNext.jsによって爆発的に普及を伸ばし、AngularJSはフルスタックフレームワーク化させたAngular(ライブラリのAngularJSとは別物)となり、そしてGoogle元社員の一人が柔軟に改良したVue.jsの三つ巴で市場シェアの鎬を削っている(それ以外にも20種類近くある)。
またJavaScript自体も後方互換性を保っているものの、ECMA6になってから、より簡潔な記述ができるようになり、独自にXHL通信ができるfetchAPIや画像操作が可能なcanvasなどの便利なライブラリが次々と生まれている。
また、クライアントサイドのJavaScriptに対してサーバで動くNode.jsなども開発され、LINEやニコニコ動画などで採用されている。
関連タグ
以下は、スクリプトとして採用されているゲーム制作ツール・ソフト・サービス