Java, The Illusion
Second thoughts on buying into any one particular language
by Brent Noorda, January 1996
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 distracting 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 performed 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. 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!
Brent Noorda is an unpublished
author-, unrecorded songwriter-, hopelessly-lost Internet navigator-,
and unprofitable programmer-extrordinaire. His only real success
is on the soccer field where his team of 9 and 10-year-old boys,
on those occasions when they are not knocking him unconscious
with stones, seldom lose a game. Brent has more than 13 years
of experience in the PC software industry. He has held development
positions with Novell, Shiva, Sun Microsystems, Cetus Corporation,
Addax, Verbex, and a number of other institutions too honorable
to admit having hired him. Realizing he was unable to hold a real
job, Mr. Noorda created the Cmm scripting language and founded
Nombas, Inc., where he is
responsible for establishing technical direction and leading the
development of the company's products. He holds a B.S. degree
(honestly won in a late-night poker game) in Engineering Physics
from the University of California at Berkeley.