Java and the new Internet programming paradigm

An excerpt from Rise & Resurrection of the American Programmer

1 2 3 4 5 Page 4
Page 4 of 5

The environment seen by a thread of execution running Java bytecodes -- for example, a typical Java applet -- can be visualized as a set of classes that are partitioned into separate name spaces. There is one name space for classes that come from the user's local file system, and a separate name space for each network source of Java bytecodes. When a class is imported from across the network, it is placed in the private name space associated with its origin. Whenever a Java class refers to another class, the Java run-time interpreter first looks for the class within the name space of the local system (where the built-in classes referred to above reside), and then in the name space of the referencing class. As a result, it's impossible for an imported class to act as an "imposter" of a built-in class. And the built-in classes can never accidentally reference classes within imported name spaces -- the Java interpreter requires them to reference such classes explicitly. Similarly, classes imported from different origins (for example, attached to different Web pages) are kept separate from each other.

Final comments on the Java language

One reason for giving you all of this detail about the Java language is to impress upon you that it's obviously a serious, heavy-weight programming language. This is not something as simple as the HTML formatting syntax that someone can pick up in an hour or two; it's not intended for casual amateurs.

But by the same token, the serious programmer doesn't want a casual programming language for building industrial-strength Internet applications; to implement secure, robust, multithreaded, object-oriented, distributed applications requires something more sophisticated than the current forms of such popular languages as Visual Basic, PowerBuilder, and Delphi. And it's interesting to see that in many ways, it doesn't require more than C++, but rather, less than C++.

Note that Java can be used to write an entire application, not just tiny applets embedded within HTML. The most obvious example is HotJava: it's written in Java. I expect that many of the tool vendors will begin using Java for their own browsers and development tools -- and it's conceivable that some of the "conventional" applications could migrate to Java. I can easily imagine a scenario in which my word processor and spreadsheet become Java-enabled applications. [Editor's note: Indeed, Corel already has shown demos of a java version of WordPerfect.]

Alternatives and competitors

If you aren't prepared to learn Java yourself or to convert all of your existing Internet applications to Java, what are your alternatives? At the moment, there seem to be three or four, including products from Microsoft, Borland, Texas Instruments, and ParcPlace.

Of these, Microsoft is clearly the most significant. Whatever Microsoft does on the Internet will have an impact on the rest of the vendors. Hence, it's significant that Bill Gates announced in December 1995, as part of a massive Internet publicity blitz, that Microsoft had signed a letter of intent with Sun Microsystems to license Java. The company also announced it was introducing a new language called Visual Basic Script, which is upwardly compatible with Visual Basic 4.0 and which will take advantage of Microsoft's OLE as a technology for distributing objects (in a fashion similar to applets) across the Internet.

The announcement came just as this book was being finalized, and as such, it's far too early for me to assess the full significance of Microsoft's Internet strategy. But the key points to keep in mind at this early stage [Editor's note: as of late 1995] are these:

  • Java has all the attention and the support of the media, as well as the momentum of some 30 companies that have licensed the technology, but there is little or no installed Java technology aside from the 50 to 100 sample applets that one can download from Sun's Web page. This is likely to change rapidly in 1996, and it will be interesting to see how much momentum the language is able to create in the marketplace.

  • Meanwhile, Microsoft has an enormous Visual Basic installed base, especially in the business community; estimates have been as high as three million copies of Visual Basic in mid-1995. The business application development community has never been fond of C++ and might be more inclined to leverage its investment in Visual Basic applications than to invest in additional training and development to adopt the Java technology.

  • While OLE is obviously a full-fledged technology and while Visual Basic 4.0 is now a fairly robust language, neither of these two cornerstones of Microsoft's Internet technology were actually designed and developed with the Web in mind. What's impressive about Java, as I've pointed out here, is the level of effort Sun has gone to, to make it an effective tool for robust, secure applications on the Web. Visual Basic Script might compete effectively with JavaScript, and the marketplace for these lightweight scripting languages might turn out to be much larger than the marketplace for professional Java applications. But if you do want to build professional, industrial-strength applications to run on the Internet, you'd better look closely at the details of Microsoft's approach to see how it will handle security, fail-safe operations, and so on.

  • While Microsoft has licensed the Java technology, it's not yet clear how much support it'll actually provide. The announcement indicates that Microsoft will be adding enhancements to Java to make it more efficient for the Windows 95 environment, but that the changes will be given back to Sun, which continues to own the technology. My guess is that Microsoft has to pay lip service to Java in order to avoid being characterized as an "outsider" and also to cover its bases if Java does end up dominating the marketplace. But I suspect that the company's primary interest will be to ensure that Java applets can somehow work compatibly with Visual Basic, and that Visual Basic is where Microsoft will continue investing its efforts.

Meanwhile, Borland will build a high-performance, visual rapid application development environment for creating Java applications. The product, code-named Latte, will be developed in Java and is intended to radically increase the speed of developing Java applications. Borland plans to begin rolling out stages of Latte in 1996; see the Resources section for the Borland Java Web site, which includes a variety of Java-related information.

Also, Texas Instruments has announced a new version of its Composer development environment, which will allow Web browsers to interact with Composer-built server components, using the TI Arranger technology as the Web gateway. This doesn't change the overall paradigm of Internet applications in the fashion that Java does, because the "intelligence" of the application will still be located on the server, but it does bring higher-level analysis and design tools into the picture. See the Resources section for TI's WWW address for more information.

Another example comes from ParcPlace-Digitalk, the vendor best known for its various Smalltalk products and tools. At the Internet Expo conference in November 1995, ParcPlace announced a new product called VisualWave for "live" Web applications. It consists of an application development environment, based on Smalltalk, that will automatically generate the HTML and CGI interface logic necessary to run a Web application. Again, this is more like the traditional form of Web application development than the Java approach, but it does have the advantage of providing a single, integrated graphical environment with which developers can create an application to deploy on the Web. And because VisualWave generates the Web interface automatically, it's possible to develop applications that can run both as a client and as application servers for use by Web browsers. This allows the developer to choose the appropriate deployment platform of an application without changing source code -- but note that the components of the application don't move dynamically from the server to the browser during run-time execution, as would be the case with Java. For more information, see the Resources section for ParcPlace's Web URL.

A final note on alternatives: As the manuscript for this book was being finalized, I received an e-mail message from software engineering consultant Bob Munck, who points out that Intermetrics has targeted their AdaMagic compiler to generate Java bytecodes (which is also a good illustration of the need for the SIGAda Working Group to encourage the use of Ada for Web applets and applications). The compiler is running and is very close to being validated.

Munck argues that Ada95 has several advantages over Java, including being an ISO standard with a large number of existing compilers and development systems, as well as having a great deal of legacy code in Ada83. I'm not convinced that anyone outside the U.S. defense establishment cares very much about Ada, but it is interesting to consider that an entirely different source language -- and one that has been just as carefully designed to handle secure, robust, concurrent execution of processes -- might be the starting point for Internet applications. For more details, contact Munck at Munck@acm.org.

Strategic implications

Many articles in the trade press during the summer and fall of 1995 proclaimed that Java is the beginning of a "revolution" in software. Having watched "silver-bullet" revolutions like case technology and pen-based computing come and go during the past decade, I'm always a little wary of such euphoria. Nevertheless, it's hard not to get excited by all this -- and there certainly are some strategic implications that you should be thinking about:

1 2 3 4 5 Page 4
Page 4 of 5