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. 

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 

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. 

Write with questions or comments.

Mail a copy of this essay:

Enter the email address of the recipient. Multiple addresses should be separated by commas.

Add your own message(optional):

Your name:(optional)

Note: Your name, and your recipient's email address, will only be used to transfer this article, and will not be stored or used for any other purpose.

Send the article URL only
Send the article as HTML
Send the article as plain text Clay Shirky's Writings About the Internet
Economics and Culture, Media and Community, Open Source