Clay Shirky's Writings About the Internet
Economics and Culture, Media and Community,
Open Source

The Java Renaissance
Java is returning to the desktop, whether Microsoft likes it or not.
06/12/2001
Java, the programming language created by Sun Microsystems to run on any operating
system, was supposed to make it possible to write programs anywhere and to post
them online for PC users to download and run instantly. Java was supposed to mean
computer users wouldn't have to choose between the Macintosh and Microsoft version
of a program-and upgrading would be as simple as a mouse click. The idea, called
"write once, run anywhere," was a promise Java has not lived up to.
Java never ran as smoothly on PCs as Microsoft-haters hoped. Buggy versions of
the Java engine in Netscape and Microsoft's Internet Explorer, the difficulty of
writing a good user interface in Java, and Microsoft's efforts to deflect the threat
of platform-independent software all contributed. Consequently, only a limited number
of PC programs were written in Java. The current wisdom: Java is a great language for
application and database servers, where it's terrific at integrating functions across
several different computers, but it's dead on the desktop.
Which makes the current renaissance of Java programming for the PC all the more
surprising.
A number of peer-to-peer companies, such as Roku Technologies (file synching and
sharing), Parabon Computation (distributed computing), and OpenCola (content
searching, bandwidth optimization), are writing applications in Java. These are
young companies, and it is not clear whether they will be able to overcome either
Java's earlier limitations on the PC or Microsoft's inevitable resistance. But their
willingness to try tells us much about software engineering, and about the PC's place
in computing ecology.
The most obvious explanation for this renaissance is the growing quality of Java
itself. Sun made a big bet on Java and stuck with it even when Java failed to live
up to its advance billing. The current implementation, Java 1.3, is a huge step in
maturity for the language, and third parties such as IBM are making Java faster and
more reliable.
This is not to say that all of Java's weaknesses have been overcome. Writing an
interface in Java is still a wretched experience. Many programmers simply bypass
Java and write interfaces in HTML, a maneuver that allows them to change the interface
without altering the underlying engineering.
Java is mainly returning to the PC, though, because the PC itself is becoming a
server. The companies coding in Java are all creating distributed, network-aware
applications, and Java's value as a server language makes it an obvious choice for
the PC's new role. Java is unparalleled as a language for distributed applications
because it was built around Internet protocols, rather than bolting them on, and is
more secure than firewalls alone when a networked machine needs to access remote
resources or "share" resources remotely.
For all its problems, Java is still the leader in cross-device interoperability,
running on everything from servers to cell phones and set-tops. If a programmer
wants to write code to run on multiple devices, the only other choice on the horizon
is Microsoft's promised .NET architecture, which is still a long way off.
It's too early to handicap the success of Java for PC-as-server applications.
Microsoft could stop distributing Java with Internet Explorer, cross-device code
may turn out to be less important than cross-device data formats, and the
improvements in Java's speed and stability may not be enough to please users.
Nevertheless, the return of Java is more evidence that the difference between
client and server is increasingly blurry. You can get server-class hardware under
your desk for $1,000 and high-speed access for 50 bucks a month, and as Napster and
Seti@home have shown, users will eagerly sign up for services that put those
capabilities to use.
Furthermore, all applications are now network applications; Microsoft is even
rewriting Office to be network aware via the .NET initiative. In this environment,
anyone who can offer ways to write distributed applications that can operate over
the network while remaining secure will earn the respect of the developer community.
It's not clear whether Java will finally fulfill its promise. But its surprising
return to the PC shows that developers are hungry for a language that helps them
deal with the opportunities and problems the Internet is creating. For all its
faults, Java is still the best attempt at creating a cross-platform framework, and
the success or failure of these young companies will tell us a lot about the future
of software in our increasingly networked world.