The Year of the Net Wars

By Roger Sessions

You didn't watch the Super­ bowl. You slept through the Olympics. You forgot about the presidential debates. But there is one melee nobody could have missed. 1996 was the year of the Net Wars.

To be sure, this war isn't settled and probably won't be for at least another year. However, the opening skirmishes were mean, and the first victims have already fallen.

As usual, we have Microsoft on one side. As usual, we have most of the rest of the world on the other. As usual, IBM is not entirely sure what the game is about, but they heard it's going to be fun and don't want to be left out.

It's tempting to dismiss the Net Wars as a Microsoft ploy to take over the world, but the truth is more com­plex. This war is really one of two competing visions of what the Inter­net is all about. Both visions are com­pelling. Both have serious weaknesses.

The Microsoft opposition is led by Netscape and SunSoft. Netscape produces the highly successful Web browser, Netscape Navigator. SunSoft produces Java, a new programming language that has taken at least the book publishing industry by unprece­ dented storm.

In the Microsoft vision, the Net is a logical extension of the operating system. Because everybody will be using the same operating system (guess which), the rest of the issues are unimportant. A Web browser is a relatively uninteresting application, one of many used to find documents and start up programs that live someplace on the Net.

In the Netscape/SunSoft vision, the operating system is merely a support mechanism for the Web browser.

Since everyone will be using the same Web browser (guess which), the under­ lying operating system really doesn't matter. Programs will be written espe­cially for the Web browser and will therefore run on any machine on which the Web browser runs.

IBM's strategy is simple: The enemy of my enemy is my friend. Therefore, whatever Netscape and SunSoft decide is fine with IBM.

Three main fronts exist on which this war is being fought. They are all interrelated, and it is difficult to look at any one in isolation. These fronts are:
 * programming language
 * scripting language
 * Web browser.

Programming language
In this arena, it's Java, representing SunSoft/Netscape, versus ActiveX Controls, representing Microsoft.

Java is a new programming lan­guage. It is object-oriented, compact, and interpreted. It is derived from C++, but much easier to use.

Because Java is interpreted, a Java program can run on any machine that supports the Java interpreter. And because the Java interpreter is highly portable, it is available for just about every machine type. Java pro­grams do not have to be recompiled; they are simply downloaded and run. There is absolutely no difference be­ tween a Java program for UNIX and a Java program for OS/2.

Java's "download and run" capability is an essential part of the Sun­ Soft/Netscape "who cares about the operating system" philosophy. It is also an attractive concept to any software vendor that would like to sup­port a single product that can be run on any machine.

There are two basic categories of Java interpreters. One category is an interpreter designed for running stand-alone Java applications. The other interpreter is designed for run­ning mini-applications under the control of a Web browser. These Web­ based mini-applications are called applets. The programming model for applets is slightly different from the one for applications, but with care, a programmer can write Java code that will run both as an applet or as an application.

Microsoft doesn't think developers want to start writing in a new lan­guage. They believe there are plenty of applications already written in C and C++, the standard languages for most software developers.

What Netscape/SunSoft call an applet, Microsoft calls a component. Microsoft believes that it already has a widely accepted model for develop­ing components, and that model is OLE (Object Linking and Embed­ding). OLE describes how an application can be written as a component. Components have well-defined mechanisms for interacting with each other, including the ability to run as an embedded component within another component, such as a Web brows­er. OLE components are typically written in C++ and must support specific methods defined by OLE.

OLE doesn't support linking across the Internet. Microsoft has added ex­tensions to include this support. An OLE component that supports these extensions is said to be an ActiveX Control. Microsoft believes that any serious application is already written as an OLE component, and with min­imal modification, can be turned in­ to an ActiveX Control. Why, it asks, would anyone want to totally rewrite their application in a new, unproven language?

Of course, ActiveX components, unlike Java applets, are going to be operat­ing-system-specific. You can't take code compiled for Win­dows and run it on a Macintosh. But Mi­crosoft doesn't see this as an issue. Windows is the only real operating system, it reasons, so why would anyone want to run code any­ where else?

So the language front boils down to these issues.

ActiveX provides a logical upgrade path from OLE and offers the best support for traditional programming languages, such as C++. Any number of applications can serve as a host to an ActiveX Control. However, these applications can only be run on one operating system.

Java is a new language that allows the development of machine-inde­pendent applications. It is designed to be simple. It does away with many of the complexities of C++. A Java applet can be run on any number of operating systems. However, existing apps must be rewritten in a new language.

Scripting language
HTML (Hyper-Text Markup Lan­guage) is a well-accepted standard for describing the layout of documents. When you download a page to your Web browser, you are really down­ loading an HTML file. This file is then interpreted and displayed as a Web page by your browser. HTML is supported by both Netscape Navigator and Microsoft Explorer.

Web page designers have long wished to extend HTML with some rudimentary programming capabilities. These capabilities would allow processing that is now done on the server to be moved to the client, where it can be done much more efficiently.

Both Microsoft and Netscape/SunSoft have proposed HTML extensions called Scripting Languages. Scripting languages are mini-programs embed­ded directly into an HTML file. Need­ less to say, Microsoft and Netscape/SunSoft do not agree on what this scripting language should look like.

Microsoft thinks that any script­ing language should be based on some well-established script-like technology. By an incredible coinci­dence, Microsoft happens to have just such a technology available. It is called Visual Basic. The scripting lan­guage it proposes is VBScript, for Visual Basic Script, a straightforward extension of Visual Basic. This path, •Microsoft argues, allows the many developers familiar with Visual Basic to make an easy switch to HTML programming.

Of course, in the Netscape/SunSoft view, real programmers don't use Basic. Nobody, they argue, will want to use a derivative of-snicker, snick"er-'--Basic when we have a modern programming language like Java available. Therefore, the scripting language should be one derived from Java: JavaScript.

Many of the arguments about JavaScript versus VBScript are old dogs in new costumes. Are object-oriented languages better that procedur­al languages? Which are easier to learn? Which are easier to maintain? In which style are most existing pro­grams already written? You get the picture.

Web browser
The most visible front of the Net Wars is the battle over the Web browsers. Microsoft offers Internet Explorer. SunSoft/Netscape offer Netscape Navi­gator. Much ink has been spilled com­ paring these two. Which is faster? Which is better integrated with other Web tools? Which is more expensive?

In reality, none of these issues matter much. Most articles are missing the basic point of the war.

In reality, Microsoft doesn't care about selling Explorer. It cares about getting rid of Netscape and eliminat­ing its dangerous vision that the Web browser, rather than the operating sys­tem, is the top of the GUI heap. The Mi­crosoft plan is to have Explorer beat Netscape, and then morph Explorer into the operating system.

Netscape/SunSoft has an initial lead in the browser field.

They are using a three-prong strategy:
 * get Navigator out to as many sites as possible, to as many machines as possible
 * take advantage of the widespread interest in Java as a development language for creating applets
 * encourage as many people as pos­sible to develop applets.

Microsoft is running a close sec­ond, much too close for Netscape/SunSoft's comfort. Microsoft is using a four-prong strategy to win on the browser front:
 * give Explorer away free
 * support all of the capabilities of Navigator including Java applets and JavaScript
 * extend these capabilities with ActiveX components and VBScript
 * encourage Web sites to take ad­vantage of the Explorer-specific capabilities.

There is one little-noticed techni­cal area in which Microsoft and Net­scape/SunSoft have gone in different directions. This area is one that is likely to have a major impact on the evolution of the Net, and yet is hard­ly ever discussed. This area is security.

Security is a significant issue when people are downloading software from the Net. How can one be sure that the software being downloaded is trustworthy?

Netscape/SunSoft build their secu­rity into Java and the Java inter­preter. They've removed features from the language that historically have been a favorite tool of hack­ers-these features, say Netscape/SunSoft, are unnecessary anyway due to the simplicity of Java. They have also restricted what a Java applet is allowed to do while running under Navigator.

The most significant restriction enforced on Java applets by Naviga­tor is the ability to read and write lo­cal files. Netscape/SunSoft rightly believe that if arbitrary applets can be downloaded from who knows where and allowed to read and write local files, then the possibility for mali­cious netplay is unlimited.

On the other hand, this restriction makes it almost impossible to write a serious application. How many real applications do not need to store data in files?

Microsoft has made a different choice. In its security model, every ActiveX control is assigned a unique, secure ID code. Given a control, one can determine its ID code. This code cannot be forged. The system admin­istrator registers the ID codes of trust­ed components within the operating system.

When a component is about to be downloaded from the Net, its ID code is checked against those the operating systems trusts. Only trust­ed components are allowed to be downloaded. Once you download a trusted component, you allow it to do whatever it wants, include read and write files. After all, you trust it.

The Microsoft security mechanism allows much more robust controls to be downloaded. Controls can do all of the things we normally associate with OLE components and real appli­cations. However, a system adminis­trator must decide in advance that a particular control is trustworthy.

The Netscape/SunSoft security mechanism allows Java applets to be downloaded from anyplace. The per­son writing a Web page can write any Java applets the page needs, and ensure they are downloaded as need­ed. The system administrator doesn't have to decided in advance which applets will be allowed to run. The browser doesn't have to worry about what the applets will do, because Nav­igator won't allow them to do any­ thing dangerous. However, the applets will be very limited-one might even say, crippled, in functionality.

The wild card
There is one wild card in this whole game that is worth considering. This card is thrown in by Oracle Corp., a company better known for its rela­tional database products.

Oracle envisions a network-specif­ic computer, nicknamed NC (Net­work Computer). This computer will be extremely cheap and very limited in functionality. In fact, about all it will be able to do is run a built-in Net browser. It won't have to worry about reading and writing to local disks, because it won't have any. Any data it needs will be downloaded across the Net.

This vision is highly compatible with the Netscape/SunSoft view of the world. For this machine, the browser is the operating system. Nothing could please Netscape/Sun­Soft more.

Oracle believes NCs, at a cost of a few hundred dollars, will become as ubiquitous as telephones. If this vision becomes reality, Netscape/Sun­Soft will have gained a powerful ally.

Final thoughts
No one knows how the Web will evolve over the coming year. Will it become a seamless extension of the operating system, or will it replace the operating system? Will it be used for running large applications or small applets? Will the new world of applications be written as minor extensions of OLE, or will they be written in a brand new programming language that barely existed a year ago?

All we know for sure is that we live in interesting times. The best thing to do is to sit back and dodge the bullets.

Books on these topics
The Java Programming Language by Arnold and Gosling (Addison-Wes­ley). A good introduction to the basic Java language. The problem with the book is a lack of information on the AWT (GUI) toolkit. Recommended.

The Java Tutorial by Campione and Walrath (Addison-Wesley). This book was originally written as a hypertext-linked HTML document. A lot of good information is here, but the attempt to maintain its hyper­texted lineage is very annoying. It is also highly biased towards applet rather than application development. Not recommended.

Core Java by Cornell and Horstmann (SunSoft Press/Prentice Hall). A good, comprehensive book, with especially effective coverage of the AWT (GUI) toolkit. Biased towards applications rather than applets. Recommended.

Java in a Nutshell by Flanagan (O'Reilly and Associates). This small reference book is indispensable. You will use it many times each day to find some obscure method and look up some class hierarchy. Not good for learning Java, but great once you know it. This book never leaves my knapsack. Highly recommended.

The Java Application Programming Interface, Volumes 1 and 2, by Gos­ling and Yellin (Addison Wesley). Similar to Java in a Nutshell as far as library coverage, but much more extensive. Good for your bookshelf. Recommended.

The Java Language Specification by Gosling, Joy, and Steele (Addison­-Wesley). This book contains the for­mal definition of the language. A necessity for people implementing the Java language and others who have absolutely no real life. Other­ wise, not recommended.

JavaScript by Flanagan (O'Reilly and Associates). A good overview and reference book for JavaScript. This book is about the beta version, so things will change. Recommended.

Presenting ActiveX by Ernst (Sams Net). A high-level overview of the Microsoft strategy with ActiveX. Not much information for the hard-core techie, but there isn't much out about AcuJex. Recommended.