JsUnit
Project Developer Home doxygen

JavaScript Engines and Products

This page give a short overview of the JavaScript language, available engines and JavaScript enabled products. Some of them are explained on separate pages demonstrating the usage of JavaScript in general and JsUnit especially in their context.

JavaScript Language

JavaScript is normally recognized as scripting language for browsers only. While the the most browsers understand JavaScript to some extent, the language itself is not limited for browser usage. A lot of people also accuse the language of the reason for browser incompatibilities or security holes, but this is not true wither. JavaScript itself has no idea of the DOM or of a file system. Any functionality built into the language concerning these topics are add-ons by the vendors. Also a lot of vendors have not implemented the complete JavaScript standard arising a lot of incompatibilities, too. Therefore you have always to separate between the language itself and the version released from a vendor.

ECMAScript is the official name of the language commonly called "JavaScript". ECMA is an international, industry association and dedicated to the standardization of information and communication systems. The language is specified in the ECMA-262 document currently in the 3rd edition from 1999. This edition introduced exceptions into the language. Unfortunately the standard does not define any functionality or properties to retrieve the call stack. A new edition 4 of ECMAScript is upcoming, but not ready yet.

JavaScript is the ECMAScript version of Netscape. To be honest, JavaScript was developed by Netscape and introduced with the Netscape 2.0 browser. Starting with JavaScript 1.4 Netscape also implemented the exceptions. Today Mozilla.org is developing in accordance with ECMA a new version 2.0 of JavaScript, that will implement the features of an upcoming 4th edition of the ECMA standard.

The JsUnit library has to use exceptions. Exceptions were part of the third ECMA language draft and therefore not everywhere available. The JsUnit scripts are only available on systems that support exceptions. Additionally the scripts try to expose the call stack in case of an error. This call stack is also subject of compatibility and have changed in various versions of the language implementations of the different vendors. Unfortunately the ECMA specification does not have any definition.

Script Engines

Writing a JavaScript interpreter according the ECMA specification is quite a lot of work. Therefore most JavaScript engines are used in more than one product. The most popular engines can be embedded freely in your own applications. Mozilla.org has two JavaScript engines to offer as Open Source, Microsoft's engine is also available for applications as system service via COM.

Mozilla.org

Mozilla.org provides two script engines, one implemented in C (SpiderMonkey) and one in Java (Rhino). SpiderMonkey is used also in the Mozilla browser.

Microsoft JScript

Microsoft's JavaScript implementation named JScript is part of the Windows Script engine. This engine is able to run a lot of languages, JScript is just one among others. Any application may embed the script engine and process scripts in any of the registered languages.

JavaScript enabled products

There are a lot of products that are able to process a JavaScript flavor. I have listed all products that I am aware of.

Product Vendor Language Engine JsUnit Version Comment
Bean Scripting Framework IBM JavaScript 1.5 Rhino, JScript ? uses other scripting engines
Communiqué 2.x Day International ECMAScript own - no exceptions
Communiqué Unify (3.x) Day International JavaScript 1.5 Rhino 1.2 ?  
deployZone Application Server deployZone JavaScript 1.5 Mochascript ?  
Director MX 2004 Adobe (Macromedia) Lingo SpiderMonkey ?  
DMDScript Digital Mars ECMA-262, v3 own ? ?
Enterprise Server 3.x Netscape JavaScript 1.2 Netscape - no exceptions
FESI Jean-Marc Lugrin ECMA 262, v2 own - no exceptions
Flash 5.x Macromedia ActionScript 5 own - no exceptions
Flash MX Macromedia ActionScript 6 own - no exceptions
GoLive 5 Adobe ECMA 262, v3 SpiderMonkey ?  
IceStorm Browser IceSoft ? ? ?  
Internet Explorer 4.x Microsoft JScript 3.0 JScript - no exceptions
Internet Explorer 5.x Microsoft JScript 5.0 JScript 1.0, 1.1, 1.2  
Internet Explorer 6.x Microsoft JScript 6.0 JScript 1.0, 1.1, 1.2  
Internet Information Server 4.x Microsoft JScript 3.0 JScript - no exceptions
Internet Information Server 5.x Microsoft JScript 5.0 JScript 1.0, 1.1, 1.2  
iPlanet Web Server, Enterprise Edition 4.x iPlanet JavaScript 1.4 Netscape 1.0 no call stack
JANET Steve Newman JavaScript 1.4 own ? JavaScript for .NET
KJSCMD 0.3 KDE.org ECMA 262, v? KJS 1.2 no call stack
Konqueror 1.9.8 KDE.org ECMA 262, v? KJS 1.2 ? no call stack
Konqueror 3.1.3 KDE.org ECMA 262, v? KJS 1.2 no call stack
Konqueror 3.5.2 KDE.org ECMA 262, v? KJS 1.2 no call stack
LiveMotion 1 Adobe ActionScript 4 ? - no exceptions
LiveMotion 2 Adobe Automation Script 2 ? ?  
Metamerge Integrator Metamerge JavaScript 1.5 Rhino 1.2 ?  
Mozilla Firefox 0.8x Mozilla.org JavaScript 1.5 SpiderMonkey 1.0, 1.1, 1.2   <
Mozilla Firefox 1.x Mozilla.org JavaScript 1.5 SpiderMonkey 1.0, 1.1, 1.2  
Navigator 4.x Netscape JavaScript 1.3 - - no exceptions
Navigator 6.x Netscape JavaScript 1.5 SpiderMonkey 1.0, 1.1, 1.2 is Mozilla 0.81
Navigator 7.x Netscape JavaScript 1.5 SpiderMonkey 1.0, 1.1, 1.2 is Mozilla 1.0 RC2
NGS JavaScript Interpreter 0.2.5 Markku Rossi JavaScript 1.4 own - bugs in exceptions
NJS JavaScript Interpreter 0.3 Brian Basset JavaScript 1.4 - - fork of NGS 0.2.5
Notes 5.x Lotus LiveScript x own ?  
Obtree C4 IXOS-Obtree JavaScript 1.5 SpiderMonkey 1.2 no call stack support
One-to-One 5.x BroadVision JavaScript 1.4 1.0 Netscape OEM of iPlanet 4.x
One-to-One 6.x or newer BroadVision ? ? ? is now J2EE server
Opera 4.x Opera ECMAScript 2 own - no exceptions
Opera 5.x Opera ECMAScript own - exceptions buggy, no call stack
Opera 6.x Opera ECMAScript own ? follows ECMA-262, 3rd, no call stack
Opera 7.x Opera ECMAScript own ? follows ECMA-262, 3rd, no call stack
Opera 8.x Opera ECMAScript own 1.2 follows ECMA-262, 3rd, no call stack
Rhino 1.5 Mozilla.org JavaScript 1.5 Rhino 1.2 no call stack support
Safari Apple ECMA 262, v? KJS 1.2 ? no call stack support
SAP Web Application Server SAP ? ? ?  
ScriptEase Desktop Nombas ECMA 262, v3 ScriptEase ? ?
SpiderMonkey 1.5 Mozilla.org JavaScript 1.5 SpiderMonkey 1.0, 1.1, 1.2 no call stack support
Sun ONE Web Server 6.0 Sun - - - JavaScript dropped
Visual InterDev 6.0 Microsoft JScript 5.0 JScript 1.0, 1.1, 1.2  
Windows Script 5.x Microsoft JScript 5.x JScript 1.0, 1.1, 1.2  
Windows Script Host 1.x Microsoft JScript 3.0 JScript - no exceptions
Windows Script Host 2.x Microsoft JScript 5.0/5.5 JScript 1.0, 1.1, 1.2  

JsUnit © 1999, 2000, 2001, 2002, 2003, 2006, 2007 by Jörg Schaible
Generated on Wed Apr 15 2015 02:33:06 for JsUnit by doxygen 1.8.5