The early Internet and the first generation browsers
Proposed in 1962, the Internet was created in 1969, known then as the ARPANET, by the Advanced Research Projects Agency (ARPA), linking their four main computers in their four research headquarters in SouthWest USA. It had been four years since 1965, when they had first managed to connect two computers over the telephone system. By 1972, many computers in universities across the USA had been connected, and the email, newsgroup and telnet protocols were being developed. Many further internet protocols were developed in the 1970s and 1980s, such as FTP and Gopher, and the underlying TCP/IP protocol replaced the original NCP protocol in the early 1980s. And so the ARPANET became the Internet, a network of university and military computers connected to each other via many other computers, communicating using the TCP/IP protocol. The idea was that, even if the Cold War became real, and portions of the Internet were damaged by nuclear war, the remaining links could take over so the internet could still function.
The World Wide Web (which basically means using the HTTP protocol to retrieve hyperlinked documents) was proposed in March 1989 by Tim Berners-Lee, a British computer specialist, at the European Laboratory for Particle Physics (CERN) for Swiss scientists, so that they could easily publish and share their research with the 12 nations of the high-energy physics community. He created the world's first browser, named 'WorldWideWeb', in 1990, and released it in 1991. In 1992, browsers became a worldwide tool for transmission of text based information, using the HTTP protocol. In 1993 the NCSA mosaic browser was created and offered the oportunity to use inline images, and colours and hyperlinks as well as plain text. It was also the first browser to run in a graphical interface environment. The first version of Netscape was released in 1994, written by a break-away group from the original Mosaic team.
JavaScript is born - the second and third generations
Netscape 2 was released in early 1996 and offered completely new technologies created by the Netscape group, the most important of which were frames and JavaScript. JavaScript was a programming language written by Brendan Eich that was able to be embedded in Web pages and could process numbers and modify the contents of forms. While in development, JavaScript had been known as Mocha then LiveWire then LiveScript. Its core script syntax closely resembled Java, so it was renamed JavaScript when it was released. The way it referenced forms, links and anchors as children of the document object, and inputs as children of their parent form became known as the DOM level 0.
The same year, Netscape passed their JavaScript language to the European Computer Manufacturers Association (ECMA) for standardisation. The ECMA produced the ECMAscript standard, which embodied the JavaScript core syntax, but did not specify all aspects of the DOM level 0. With the release of Netscape 3 later in the same year, Netscape had produced JavaScript 1.1, which could also change the location of images, bringing on a wave of Web sites that used this most popular of Web page effects, making images change when the mouse passed over them. The images were also referenced as children of the document object and thus the DOM level 0 was completed.
DHTML - the forth generation
ECMAscript was still updated, as with the release of Netscape 4 in 1997, Netscape produced their most advanced technology
to date, DHTML. Using a combination of yet more proprietary HTML tags and portions of the new W3C CSS 1 recomendation,
JavaScript 1.2 gave programmers the ability to change the CSS style for document components, in particular the position and
visibility of elements on the page, which were adopted by the W3C for their CSS 2 specification. This layers technology was
greatly accepted, although little used because of its lack of support for older, and still popular browsers. JavaScript now
offered the {}
and []
syntaxes for creating objects and arrays but more importantly, the Layers DOM was born.
As layers became more popular, Microsoft decided to muscle in on the competition, releasing their Internet Explorer 4 browser in 1997. This browser showed programmers just how agile a browser could be. Unlike the Layers DOM model, the proprietary DOM model of IE 4 allowed any part of the document to be referenced, and have any CSS style changed, including many CSS 2 declarations. Most could have their contents rewritten. It also offered many other extensions, such as filters and transitions. This new syntax for referencing document components was more reliable and far more versitile and the W3C decided to adopt many of its syntaxes and components for their forthcoming DOM recommendation.
In mid 1998, Netscape released a new version of their browser, still relying on the poor layers DOM. They had failed to fix many of the bugs that plagued their browser, despite the new JavaScript 1.3 version. They also released the source code, and stopped charging for their browser. They had hoped to produce the next version of their browser using the open source community. The open source community had more sense, and decided instead to abandon the unstable and restricted Netscape core, in favour of completely re-writing, according to the W3C DOM guidelines.
W3C DOM - the fifth generation
In 1999, Microsoft released the most advanced browser so far, Internet Explorer 5, the first fifth generation browser, which supported a large amount of the W3C DOM 1 recommendation, as well as the properietary techniques used by Internet Explorer 4. It also supported what is the current version of ECMAscript, ECMAscript 3, equivalent to JavaScript 1.5 (JavaScript 1.4 was used only by Netscape's server side JavaScript). As with all Internet Explorer versions, it still used a JavaScript version with several core extensions, known as JScript.
The W3C DOM allowed much greater functionality than the previous DOMs. It gave ways to create, remove and modify html elements, even after the page had loaded. All aspects of the page could be changed. Attributes could be added and removed from HTML elements. All styles could be changed, added or removed. It even changed the way that events could be detected, allowing more than one handler function for any event, capturing and bubbling were both supported. Internet Explorer still does not support all of these event techniques according to the standard, and instead uses proprietary variations. The W3C DOM also represented the document differently, as a tree structure where the root was the HTML element, and each element within it was a child object of the element it was contained within. Text within elements was a child node of the parent element node. This gave a much more complex but realistic representation of the document, that gave access to every part of it.
In 2000 Opera released their Opera 4 browser, one of the most badly bugged to date. Its new script handling was based on the W3C DOM, although it only implemented enough to be comparable to Intenet Explorer 4. However, its bugs usually caused it to fail to manage even that. With the subsequent Opera 5 and 6 releases, the functionality did not increase, but the stability and popularity definitely did. At about the same time, several other browser projects came to light, such as Konqueror, and ICEbrowser, both of which were fifth generation. Television browsers were also becoming fifth generation.
A new breed
In 2002, the Mozilla project finally released Mozilla, based on their open source Gecko rendering engine and SpiderMonkey JavaScript engine. This was the open source project started in 1998 by Netscape, and at last, it had paid off. We were given one of the most flexible browsers of its time, which, by following the W3C's DOM recommedations, had given Web programmers the ability to do almost anything they wanted. Alongside that, the Mozilla project had also adapted the java based Rhino JavaScript engine created by Norris Boyd of the Netscape corporation, which is what had been used by ICEsoft Technologies together with their ICE Storm architecture to produce ICEbrowser.
The largest market share was still held by Microsoft, as they released the sixth version of their browser. In reality, this browser was more hype than anything. Its CSS support was still far less than the Gecko engine, and by making subtle changes to its JScript, Microsoft succeeded in causing Web developers more problems than before. Dispite this setback, the world was finally heading towards a centrally recognised standard, the W3C DOM.
With the release of Opera 7, which had a respectably high level of DOM support, all major browsers had become fifth generation, and Opera stormed on to have one of the highest levels of DOM support by version 9. Konqueror's DOM support also increase fairly rapidly, and it quickly became a very capable DOM browser, and was soon adopted by Apple to be part of their Safari browser, improving it for even better support of the W3C standards.
Mozilla's popularity increased, and already the Gecko engine is used by nearly thirty different browsers, including Netscape 6+. Firefox soon joined the ranks and did fairly well, due in part to its Netscape and Mozilla heritage.
After leading the field for a few years, Microsoft started to get complacent, and stopped updating their browsers. The Mac version was abandoned, and the limited updates to Internet Explorer on Windows were merely token gestures, offering almost no increase in the levels of DOM support. It fell far behind the others, although it supported enough for basic DOM scripts. The W3C are now on their third DOM recommendation, which is partially supported by Opera, Mozilla/Firefox, Safari/Chrome, and Internet Explorer 9. Most current browsers support at least a large part of DOM 2 - Internet Explorer finally started to support CSS 2 properly in IE 8, but only started supporting significant parts of DOM 2 in IE 9. Before that, it only offered its own limited alternatives.
It is the hope of most Web developers that all browsers will, at some point, use the same syntax for JavaScript. The W3C DOM may at last help that to happen. If all browser manufacturers produced browsers that operated along the guidelines set out by the W3C, the makers of the World Wide Web itself, Web development might actually become easy, while still being flexible enough to create inspiring and exciting Web pages. As all browsers would behave the same way, Web developers would not have to waste so much time, energy and money on solving all of the many browser incompatibilities.
iCab finally gained support for DOM at version 3. The release of OmniWeb 4.5 also brought yet another minor browse into the collective of fifth generation browsers, using the same rendering and JavaScript core as Safari. iCab 4 has now switched to Safari's engine. Even Escape and NetFront now have basic DOM functionality. The world of browsers is changing, but fortunately, they are all moving in the same direction. It has become acceptable to abandon the old proprietary technologies, and embrace a global, flexible standard; the W3C DOM.
On top of that, HTML 5 started adding several advanced scripting capabilities. Although sometimes split into multiple specifications like the Selectors API and Geolocation API, these are gaining widespread support.
JavaScript name terminology
These names are subject to interpretation by the browser developers. For example, browsers may support what they call JavaScript1.5, but not even support DHTML. This makes the JavaScript version unreliable, do not rely on it.
- ECMAscript
- The core syntax for JavaScript, defining control stuctures, intrinsic objects and variable types, operators, functions, scope, etc.
- DOM level 0
- Says how to refer to forms, inputs, images, links and anchors as children of the document object.
- Layers DOM
- Says how to refer to positioned elements (layers) and modify their style as children of the document object with nested references.
- Proprietary DOM
- Says how to refer to elements and modify their style using the all collection of the document or parent object and the style child object of the element.
- W3C DOM
- Says how to refer to elements and modify their style using various getElementBy... methods of the document or parent object and the style child object of the element. Also says how to represent all document elements as a tree structure. Also allows elements to be created, modified or deleted even after the document has loaded.
- Mocha
- An early name for JavaScript, not recognised by most browsers.
- LiveWire
- An early name for JavaScript, not recognised by most browsers, used as the name of Netscape's server side JavaScript.
- LiveScript
- An early name for JavaScript, recognised by most browsers.
- JavaScript
- A collective name for all versions of JavaScript.
- JavaScript1.0
- The first version of JavaScript to be released - Early ECMAscript + DOM level 0 without images.
- JavaScript1.1
- Early ECMAscript + DOM level 0.
- JavaScript1.2
- ECMAscript + DOM level 0 + layers or proprietary DOM.
- JavaScript1.3
- More advanced ECMAscript + DOM level 0 + layers or proprietary DOM.
- JavaScript1.4
- Server side JavaScript.
- JavaScript1.5
- Even more advanced ECMAscript + DOM level 0 + W3C DOM.
- JavaScript2.0
- JavaScript 1.5 with several extensions added by Mozilla - may become a future standard.
- JScript
- Microsoft's JavaScript variations with extended core features.
- Active scripting
- Microsoft's user friendly way of saying 'JScript'.
- JellyScript
- WebTV's interpretation of JavaScript.
- InScript
- iCab 3-'s interpretation of JavaScript.
- ECMAscript Mobile Profile
- Parts of ECMAScript, basic JavaScript APIs, and DOM, all mixed together in a single specification. Incompatible in far too many ways with existing pages on the Web, current browsers, the ECMAScript specification, the DOM specifications, the JavaScript documentation, and other well established practices. ECMAScript Mobile Profile should be ignored. It is harmful to the Web because of its incompatibilities.