JavaScript (JS) is the dominant client-side scripting language of the Web. JS is a dynamic (or interpreted: Executes somethings at run-time instead of at compiling), weakly-typed (or loosely-typed: A variable may change its data type), prototype-based (object oriented but instead of classes, the .prototype of an instance affects all other instances) programming language with first-class functions (functions can be first-class objects which allows their creation and modification at run-time) and closures (functions can enclosed as a parameter of another function AND can refer to bound variables, i.e. variables visible at the time the enclosing function was defined).

History

JavaScript was developed by Brendan Eich at Netscape Communications Corporation, first as Mocha, then as LiveScript, then as JavaScript as part of the Netscape browser v2.0B3 in 1995-12. JavaScript has no relation to Java other than they both use a syntax similar to the c language and that Java was the hot new language at the time. EG: c is a procedural language, while c++ is class-based object oriented language, while JavaScript is a prototype-based object oriented language (like the language Self). JavaScript became widely popular and Microsoft implemented it as JScript in Internet Explorer 3.0 in 1996-08. Netscaped submitted JavaScript to Ecma International for standardization, which resulted in ECMA-262 or ECMAScript in 1997-06. Since then ECMAScript is the standard and it has various dialects, some with their own extensions, and some (EG: Flash's ActionScript) that are quite different. The main dialects includes Netscape's/Mozilla's JavaScript and Microsoft's JScript.

DateJavaScriptJScriptECMAScriptActionScript
1996-031 in NS 2
1996-081.1 in NS 31 in IE 3
1997-012 in IIS 3
1997-061.2 in NS 41
1997-103 in IE 4 and VS 6
1998-062
1998-101.3 in NS 4.06
1998-101.4 in NS 4.7
1999-035 in IE 5
1999-123
200031 in Flash Player 5
2000-075.5 in IE 5.5
2000-111.5 in NS 6 and FF 1
2001-105.6 in IE 6
200332 in Flash Player 7
2005-111.6 in FF 1.5
2006-0633 in Flash Player 9
2006-101.7 in FF 2
2006-115.7 in IE 7
2008-101.8 in FF 3
2009-035.8 in IE 8
1.8.1 in FF 3.5
2009-061.8.2 in FF 3.6
2009-125. (4 was abandoned.)
2010-071.8.5 in FF 4in IE 9

JavaScript Engines

JavaScript source code is interpreted and executed by a JavaScript engine.

While each JavaScript engine generally try to conform with the ECMAScript standard, they stray. Hence each JavaScript engine has its own dialect of JavaScript/ECMAScript.

Client-side JavaScript Engines:

Server-side JavaScript Engines:

While the Client-Side JavaScript (CSJS) is well known, the Server-Side JavaScript (SSJS) is not. Personally, I like JavaScript and why not use it on the server-side? See also "CommonJS effort sets JavaScript on path for world domination" [http://arstechnica.com/web/news/2009/12/commonjs-effort-sets-javascript-on-path-for-world-domination.ars], ca 2009-12-01.

Libraries

Except for the simplest of sites, it seems that the days are slipping when you could make a site with your own HTML, CSS, AJAX, and JavaScript on the client-side, plus whatever on the server-side. See http://www.surveymonkey.com/sr.aspx?sm=fXLiKcnKlD6cO5bRe961aBB6NCCWytRyY3rParAYmwA_3d. Now it seems that you have to use a library, as in the old build v buy argument. It's not simply for pretty stuff but for serious business stuff like data grids. They're calling them {AJAX | Widget | Web App} {Toolkits | Frameworks} these days. You can simply call them JavaScript libraries on the client-side, but on the server-side it's usually some other language generating JavaScript, CSS, and HTML for the client-side.

Some of the top client-side JavaScript libraries :

The top server-side "JavaScript" libraries include:

There are libraries with more specific uses that are often included. Here are a few arbitrary ones:

Miscellany

Here are some miscellaneous items regarding JavaScript.

Page Modified: (Hand noted: 2008-03-17 22:30:42Z) (Auto noted: 2011-03-31 17:03:37Z)