May not be redistributed commercially without the author's permission.


Start the Java Revolution Without Me Part One: Demographics

Arnold Kling, "Arguing in My Spare Time", No. 6

January 31, 1998

Java(tm by Sun Microsystems) is a programming language that has been touted by some analysts (George Gilder, for example) as the tool that will break Microsoft's monopoly. The scenario envisioned by the Java evangelists is one in which large, bundled applications, such as Microsoft Office(tm by Microsoft), are replaced by flexible collections of software components, written in Java. This essay and its follow-up will explain why I do not subscribe to the view that Java is going to change the computing landscape.

The first important constraint on the influence of Java is dictated by demographics. Very few people can program in Java, particularly with the rigor required if the ambitious visions are to be realized. The Java revolution is destined to stall because there simply are not enough capable revolutionaries.

I wrote an article on the World Wide Web that appeared in the November 1994 issue of Mortgage Banking, the journal of the Mortgage Bankers Association. I remember realizing that at the rate the Web was growing, many people who would be reading the article and had never heard of the Web at the time were destined to be building their own Web sites within 12-18 months. Such was the power of this revolution that real estate agents, mortgage brokers, and other unlikely civilians learned HTML markup and whatever else they needed to publish on the Web.

One can be quite sure that hardly any of these people are learning Java. We are not going to wake up next year to find hundreds of thousands of people from other occupations suddenly writing code.

Conduct the following thought-experiment:

1. Give a personal computer and a book on Java to the CEO's of some of the top computer firms: Microsoft's Bill Gates; Sun Microsystems' Scott McNealy; IBM's Lou Gerstner; and Netscape's James Barksdale

2. Give each CEO two days to develop a usable business application using Java, without any help from anyone else.

3. Assess the quality of what each CEO develops.

My predictions for the outcome of this experiment would be as follows:

a) Gates would produce a couple of pages of code, which would perform some relatively modest task (perhaps take some data input by a user and produce a bar graph).

b) The other three would get nowhere.

This is not a comment on the relative intelligence of the four executives. It is a comment on the fact that using Java requires a strong programming background, which only Gates has. In this respect, it would be highly ironic (and unlikely) for Microsoft to be adversely effected by Java relative to the other three companies.

I am confident that all four executives in my thought-experiment could have learned to use a spreadsheet in two days. I am confident that all four could have learned to create Web pages using HTML in two days. But unlike those tools, which are designed to give the non-programmer access to powerful computing resources, Java is a real programming language, and it is a difficult language to grasp.

My personal experience with computer programming includes BASIC, FORTRAN, IBM Assembly language, Pascal, and C. Java is harder to learn than any of them. I took a series of 8 two-hour classes in Java, and I would be hard-pressed to explain what it means when one writes "public static void," which is the standard way many programs and subprograms begin.

Moreover, merely learning to program in Java does not make one a revolutionary. Only programs that adhere to specific conventions and standards will promote the revolution that Java evangelists envision. These conventions include so-called public interfaces, error-handling methods, and other code that represents "additional overhead" to the casual programmer. As difficult as it can be for even a somewhat experienced programmer to get a program to work using Java, that is only half the battle. A hacked-together Java program is no more revolutionary than a hacked-together COBOL program.

The revolution requires programs that adhere to high standards of inter-operability. Even though I might get programs to run, these programs would fail to adhere to the standards needed to enable my program to be usable by someone else's program. Only someone with a strong computer science background or very rigorous training can produce the type of solid, robust code necessary to create a truly re-usable component.

Ultimately, Java's demographics are related to those of C++. The latter is a dialect of the C language that attempts to implement the rigorous standards developed by experts in computer science. However, C++ failed to catch on with more than a small fraction of C programmers, because it is so difficult. There probably are fewer than 100,000 capable C++ programmers in the world.

Even if every C++ programmer switches to Java, then the proportion of well-trained Java programmers in the computing population will be something like the worldwide ratio of Quakers to Muslims. Other developments in computing have increased the productivity of millions of people. Java will increase the productivity of thousands. It is difficult to think of any other development in the history of computing that affected the capabilities of so few people and yet today is described as revolutionary.