Netscape's JavaScript?
Netscape's JavaScript ?
In the complex world of web development, arriving at good, open standards - even for a language as solid as JavaScript - can be a process as mysterious and complex as atomic particles whizzing and mutating during brief moments in time.
Okay I admit it, even after a few hours of research, I still didn't know who was responsible for the scripting language, Javascript. I knew that Netscape originated the language back in the heady days of 1995 when both Java and JavaScript (see the original press release) emerged from Sun and Netscape respectively. But what happened to JavaScript in the interim since certain parties "cut off the oxygen" to Netscape by promising to give away their Internet Explorer browser for free and their IIS Web Server for free in perpetuity? Well, Microsoft has just settled with AOL, current owners of Netscape, to the tune of $750 million in their antitrust civil lawsuit. But had JavaScript been sold or established as an open project like Open Office (developers of Star Office) or Mozilla (the organization responsible for the basic engine for the Netscape browser )? Or had JavaScript become the responsibility of ECMA-the European Computer Manufacturers Association which is the standard body for JavaScript (designated ECMAScript), and also, incidentally, for Microsoft's C# and the open portion of .NET framework?
What emerges is like one of those quantum bubble chamber photographs, a lot of events whizzing through; but like the SCO Linux controversy, who owns what and who is responsible for the entity that is JavaScript/JScript/ ECMAScript - well, that is subject to interpretation.
ECMAScript : Not-To-War Document
One of the consequences of the browser wars (1996 - 1999) between Microsoft and Netscape is that all the major browser standards - HTML, CSS, DOM, and JavaScript/JScript still remain scarred - that is they are tenuously compatible in many key areas. This is due in part to the fact that IE6 is over two years old and has only received quarterly security breach updates. In contrast, in this same period Mozilla and Opera browsers have seen 2-3 updates and are now standards compliant. Part of this is due to the DOT.Com Bust - Netscape has not updated JavaScript beyond the 1.5 version of 1999.
Whatever the reason, whenever doing anything new on the Web (with the exception
of Java and Flash SWF), one colleague's rule of thumb is to add 30% more time
to resolve inconsistencies between browser implementations. Strange, but code
like "if (NS6plus || MZx)doItThisWay(); elseif (IE4 || IE5 && !IE6)doItAnotherWay()..."
is considered par for the course. In my experience, it's wise to have a
good JavaScript debugger for both Microsoft and Netscape browsers because that
is where most of the incompatible action takes place. Also, of great help are
books like Steve Holzner's JavaScript Unleashed or Danny Goodman's The Definitive
Guide to DHTML, which gives all the gory details about JavaScript/JScript command
in/compatibility with all the major browser editions along with their examples
of good JavaScript code.
At the height of the browser wars with IT organizations demanding some compatibility
between languages, ECMAScript evolved not as sign of peace, but as a minimum
declaration of what was compatible between NetScape's JavaScript and Microsoft's
JScript. To their credit (for the past 4 years), "ECMA is in the process of
harmonizing the various diverging extensions of ECMAScript. The full second
version of the language is scheduled for publication in 2003 Q1". But that didn't
happen, possiby because of the BEA proposed extensions to the basic syntax of
JavaScript in early March. Or, it may have been delayed because of the $750M
settlement with Microsoft, where AOL indicated that Netscape was not part of
the deal but that it might be put up for sale. And why not? Netscape is sitting
on some very valuable intellectual property; not the least of which is JavaScript.
JavaScript- Valuable Commodity
There is no doubt that JavaScript is a valuable commodity. First it's a fairly simple language to pick up with its Java-like syntax, operators, and flow of control. Its dynamic, typeless variables; easy array definitions and processing, plus robust but approachable object model make it easy to program and develop with. ECMA estimates that 70% of all browser pages incorporate some ECMAScript-compaible code. In addition, Mozilla/Netscape make available two open source versions (C++ and Java) of JavaScript as a free download (source or binary).
Microsoft's variant, JScript, has been updated to be a full .NET enabled programming language. In this context JScript gains the benefit of dynamically compiled execution which can be important for performance in large-scale applications. Also, given that VB.NET has moved so close to C# in design and complexity, Microsoft needs a simple, easy to use yet OO-capable language to close the complexity gap in its .NET language offerings. And as a bonus, JScript also offers client-side and server-side capabilities. Finally, JScript is one of the key languages in Microsoft's WSH - Windows Scripting Host batch control language.
And Microsoft is not alone; Macromedia has heavily invested in JavaScript. It uses JavaScript as the macro command language for many of its applications and its ActionScript command language for Flash adheres to ECMAScript edition 2 (the current standard is edition 3). Ditto Adobe, which uses JavaScript for macros in its GoLive web development tool and ActionScript in its LiveMotion animation tool. And since freely downloadable JavaScript engines are available JavaScript has been adopted by nearly a dozen independent software vendors.
So, JavaScript prospers despite the wounds from the browser wars. But
there remains a question of who is in charge. For example, BEA's E4X
proposal to extend
the syntax of JavaScript (in order to simplify XML processing) was
made to ECMA in Mid March of 2003. This proposal garnered praise
from Microsoft, Mozilla and RIM. It changes the syntax of the language by
adding a new construct to the for loop - for(
var atom in srcDoc..Atom) //Loops through
each Atom tag in the source XML - which changes the internal syntax of
JavaScript. The result simplifies XML processing as the demo linked to above readily shows. This puts
JavaScript back on par with Perl and PHP which have nifty foreach
command syntax which is very useful in processing associative arrays and XML
tags. But curiously, there was no comment on this proposal by key JavaScript
players such as Netscape, Macromedia or Adobe. Like the atomic particles
whizzing by in the nearby CERN bubble chambers, ECMA officials are hard pressed
to explain the reaction or even prognosticate on how the E4X extension will
proceed. Perhaps this is an example of how hard it is to draw sweet water from
a browser-war poisoned well. At the very least, it casts light on the delicate
process of arriving at good, open standards.
Jacques Surveyer is a web developer who can be contacted at www.theOpenSourcery.com
Created: June
2, 2003
Revised: June 2, 2003
URL: https://webreference.com/programming/javascript/j_s