Simplicity and Power Through Scripting
The marketing illusionists at Sun have done a wonderful job of making Java appear to be the one and only technology capable of adding life to the World-Wide Web. Like any good illusionists they have taken a small bit of substance and combined it with a good deal of distractionary patter and show. The resulting spectacle, they hope, will fool us into believing that wondrous miracles were accomplished with their simple magic Java wand--and that no other language could have peformed such miracles.
The illusion appears to be working. From Time magazine to the local newspaper, from the computer journalists to the guy at the water cooler, everyone seems to be talking about Java as the hot technology leading to the next internet revolution. From major international corporations to small startups, everyone seems to be proclaiming their commitment to Java support. From a half million here to millions there, everyone is throwing dollars into Java licensing and development.
How could all this hype, all these people, and all this money be wrong? Haven't we all seen, or at least heard about, the magic that only Java could add to the Web: cute animated figures, lines and graphs, and talking hot-spots?
Behind any great illusion is usually a shred of truth. There is some truth behind the Java illusion: Yes, Java does give us cute animated figures, lines and graphs, and talking hot-spots. But what the illusionist don't tell us is this: any number of languages can deliver cute animated figures, lines and graphs, and talking hot-spots.
An important element for presenting a great illusion is the stage itself; the illusionist needs a place to house all the smoke and mirrors. The stage for the Java illusion is called "HotJava". HotJava is a "web browser" that extends the web browser standards for tags and protocols so that not only does a page include standard HTML tags but it now also contains links to Java code. This Java code appears to run within the HTML document.
What the Java illusionists fail to mention, and what they hope we fail to notice amid all the flash, is that any number of languages could have been embedded into a web browser to add "life" to HTML pages. Had a different language been chosen, we could just as well have seen HotPerl, HotBasic, HotBatch, HotLisp, HotSmalltalk, HotEiffel, HotBourne, HotRexx, HotBob, HotCmm, and on and on... But we have not seen these "hot" browsers (except for some simple demos under less exciting names) because it would not be right to unilaterally decree any of these language to be the embedded language of the internet, just as it is not right to decree Java to be the language of the 'net. Yet Java, the newest, least tested, and by far the most complicated of any of these languages, has been decreed by so many as "the future of the internet."
Before deciding on the internet's future, let's review its recent past. The explosive and unprecedented growth of the web has been based on the almost-trivial simplicity of the HTTP and HTML specifications developed in 1990 by Tim Berners-Lee. ("Even a manager can understand HTML") Because these rules are so few and so simple, the industry had little trouble agreeing to and implementing these standards. It is these very simple foundations, extended when necessary by equally-trivial interfaces (CGI), that have produced the extraordinary wealth of Web content available today. Simplicity and open interfaces formed the building blocks that made the Web possible and practical.
Java is anything but simple. Based on the already-complex C++ language syntax, and then modified with further syntax changes and coding restrictions, Java is one of the most complicated languages and development environments to be introduced this decade. This complexity helps to conceal the tricks behind the Java illusion, for when the Java illusionists repeat again and again that "Java is simple" we must nod our heads in agreement because to do otherwise would be to admit our ignorance--to admit that we were not smart enough to see the emperor's new clothes.
Many other languages, including but not limited to those mentioned above, are simpler than Java and make equally good prospects for being "the language of the internet". Nearly all of these languages can be safely transmitted across the net, conform to any level of safety by removing dangerous functions, automate memory management, and do not use the dangerous pointers of C/C++. In fact, considering how many web pages and other internet tools are already dynamically created using these other languages, Java stands dead-last in real-world popularity. So should one of these other languages become "the language of the internet"? No! The internet and the Web have never restricted users to any particular programming language, and I hope they never do. But if Java is required as the Web language in the way that HotJava and Netscape's new browsers demand, then all other languages are effectively shut out for browser-side dynamic page content. Never has a popular platform evolved by enforcement of any one programming language.
I denounce the Java illusionists and hucksters, but I have nothing against the Java language itself. Java is an interesting new language and may provide fascinating academic insight into what programming problems may be solved with a few changes to C++ syntax, strict enforcement of class protocols, and extreme language restrictions on data types. And I have the highest respect for those who created Java--having myself created a safe, secure, and robust C-like language, I know how hard it can be.
It cannot be denied that the HotJava browser offers a good ("cool") example of the type of dynamic presentation available from the Web when a browser can interact with a retrieved program. In the case of HotJava that program must be written in Java, of course, which is all right for a quick-and-dirty prototypes, but this restriction to a single language is not all right for a ubiquitous, open, and expanding internet. The HotJava browser provides functionality to Java applets for such things as drawing GIF images, playing audio files, and recognizing hot-spots. There is nothing unique about the Java language that allows these functions to work; indeed, every web browser must already perform these functions internally, and so providing an interface to these functions for the dynamic control of an "applet" is a natural fit. Now that HotJava has demonstrated the concept of a new useful interface, it is time to open up such a dynamic-content web-page interface to applets in all languages. The internet is based upon the openness of interfaces.
When it was recognized that dynamic HTML presentation was needed from the HTTP server, no particular language was stipulated. Instead, the Common Gateway Interface (CGI) was defined so that any language could be used. CGI, like HTTP and HTML, is an extremely simple interface protocol--not a particular language but an interface to any language--a simple, open, language-independent building block from which many things are possible.
Now we must recognize that dynamic presentation and greater interactivity is needed on the Web. If we believe the Java illusionists then we accept their word that only Java will make this possible. But if we follow the traditionally successful way of thinking then we know that greater results are possible if we keep the protocols simple and focus on the interface rather than buying into any one particular complex language.
Let us not be fooled by the Java illusionists!
For a comparison of the Java system language and the Cmm scripting language, see Cmm and Java Compared.
Simplicity and Power Through Scripting
A followup to Java, The Illusion
I wrote the above article toward the end of 1995, after I'd been asked to review what was behind the Java stories. At that time we had been hearing about the wonders of Java and expecting to see a revolution in the software industry "any day now" for nearly a year. The Java revolution predicted in 1995 never came--even Netscape, without whom the rest of us would have never heard of Java, now declares Java "dead" on the client, where scripting instead has proven to be the revolutionary success.
However, in the nearly year and a half since I wrote that article Java has garnered the industry support it needs to play an important role in the computing industry. Some Java products are finally starting to appear, and real business is getting accomplished with the language, and so it's not fair to call it an "illusion" anymore. But I dare not remove this article from the Web, despite any bad reputation it may give Nombas for not being an industry player, because by now there are so many links to it (and, to be honest, we get a lot of visits to our site just because of it) that I think the web might degrade into utter chaos without this historical document holding it together <G>. Besides, nothing in the above article is no longer true, just no longer relevant.
Sun and Javasoft have also worked hard in that time to improve on some of the problems described in the "Illusion" article: most notably with their introduction of JavaBeans. JavaBeans are their answer to the interface problem, and it's a pretty good solution. JavaBeans provide the simple wrapper (though not yet simple enough, in my opinion) so that components can be more-easily linked together in this new environment, and when done correctly those components can be written in any language.