JavaScriptは、クロスプラットフォームであらゆるOSで利用する事ができるスクリプト言語です。
またJavaScriptは、手続き型言語とオブジェクト指向言語の両方の特性を持っています。
JavaScriptは、世界初のビジュアルブラウザMosaic開発チームとSilicon Graphics社の創業者Jim Clark氏が共同で設立したNetscape Communications社で開発されましたが、後に同社がAOL社に買収され、Netscape(の名称で)ブラウザとJavascriptをサポートしていました。
後にオープンソースプロジェクトmozillaが設立され、JavaScriptとブラウザはFirefoxとしてmozillaでサポートしており、MDC/Mozilla Developer Centerで管理されています。
ちなみに、mozilla設立以降もNetscapeという名称でNetscape8.x、Netscape9.xといったブラウザの開発は進められています(日本語版はNetscape7.1まで)。
JavaScriptは、ブラウザ用のスクリプト言語ですが、このJavaScriptと同じようなScriptで他にVBScriptやJScriptというものがあります。
JScriptはInternetExplorer用に開発拡張されたスクリプトでVBScriptはVisualBasic系でjavascriptと似たマイクロソフト社の簡易言語です。
JavaScriptは、とても有用なのでベンダのブラウザ競争に起因して仕様を統一できないということは、明らかにマイナスであることは両社共に自覚のあるところであり、当初から標準化は意識されており、ほどなくしてECMAScriptが誕生することになります。
またJava言語というものもありますが、これはOS/オペレーティングシステムなどの環境を選ばず、UNIX・Linux・WINDOWS・MAC OS等でも 記述することができる極めて汎用的なサンマイクロシステムズ社(米)が開発したプログラミング言語で、記述も似ているところもありますが元々JavaScriptではありませんし、密な互換性もありませんでした。
但し、JavaScriptはそもそもC++とJava言語をベースとして意識して作られているので似ている点があるのはこの為です。
現時点ではJavaScriptは、JavaScript誕生当初からの流れを汲むCベースの「SpiderMonkey」とJava言語ベースの「Rhino」(いずれもmozillaコードネーム)があります。
いずれのJavaScriptエンジンも外部インタフェースを備え、JavaScriptオブジェクトを外部で利用できるように設計されていますのでこのJava言語ベースの「Rhino」はJavaから利用する事もできるエンジンです。
このJavaScriptとHTML(ハイパーテキストマークアップランゲージ)、CSS(カスケーディングスタイルシート)、XMLによる非同期通信を利用したajax(アジャックス or エイジャックス)は、プラグインが不要でブラウザがあればよくクライアントに負担なく見た目、操作性に優れたリッチクライアントの実現とサーバとの非同期通信により結果表示に画面遷移や更新が不要でウェブページの一部として利用できるなど双方向性(インタラクティブ)を持ったこれまでのウェブにない魅力を引き出しています。
この技術を利用するとFlashのようなアニメーション動画を作成する事もできます。
このような技術を利用するためにもJavaScriptの理解は欠かせません。
最近はjavascriptが多く使われるようになってきましたが、以前は、Netscape2.0とIE3.0からサポートされた事もあり、それ以前のバージョンや他の非対応のブラウザではscript(スクリプト)を処理できず、各種ブラウザへの配慮やブラウザを判別して処理を分岐する必要性が今以上にあり、数多くの制限があり使いづらい状態でした。
各ベンダーの最新版ブラウザにおいてもInternetExplorerとNetscapeといった異なるベンダーのブラウザそれぞれの独自拡張機能は相互補完されていない事もありますし、クライアントPCがMacでブラウザがNetscapeの場合なども注意が必要で処理を分けるなどの配慮は必要となります。
また、ユーザーがjavascriptをOFFにしていると機能しないので代替策も要します。
これは上記の他、各ブラウザやファイアウォールなどでユーザー(クライアント)側ですべてのサイトまたは特定のサイトのjavascriptを許可するか否か、javascriptは許可してもcookiesは許可しないなどの比較的細かい設定が可能となっている為でユーザーが許可しない場合の処理も考慮する必要があります。
尚、下記リンクは、多くの場合、ページ情報量の過多を回避する為、場合によって更に章、節、句ごとに、任意に細分化し、ネストしている部分があります。