The enduring appeal of Java isn’t hard to understand: With Java, you write code once and it can run on almost any modern computer or operating system—PC or Mac, Windows, Linux, OS X, whatever. It works that way because the Java compiler turns the source code into a kind of ersatz machine code that each of these different systems can execute when equipped with the proper run-time software. So different computers running different operating systems can all become, in programmers’ parlance, Java virtual machines.
That wonderful write-once, run-anywhere capability has made Java the most popular programming language now in use and, by some measures, the most successful computer language of all time. But what you may not know, particularly if you don’t have graying hair, is that this kind of software portability didn’t start with Java (which Sun Microsystems released in 1995). Indeed, the roots of this approach date all the way back to the late 1970s and early 1980s, during the heyday of the Apple II, the first IBM PC, and many other personal microcomputers built by companies that are long gone.
Much of the relevant work took place at the University of California, San Diego (UCSD), and it influenced academic computer science, the design of the Pascal programming language, object-oriented programming, and graphical user interfaces. Although that work did not produce a commercial success, the story of these visionary programmers and their audacious plans offers some unique insights into how the computer industry evolved—for example, why the Apple Macintosh is what it is. It also explains how an accident of fate would later bring these ideas to the world again in the form of Java.
Sex, drugs, and rock and roll were ascendant on U.S. college campuses in the 1960s. But something else was, too: computer programming (although it was far less popular than the other three). At most universities, computers took the form of centralized batch systems—a Control Data Corporation 3600 at UCSD, for example. To use it, you had to translate your program into a stack of punched cards, which you would submit to the technical wizards who managed the computer. Then, after perhaps a day or two, you could return to the campus computing center to pick up reams of green-bar printouts, which you would pore over late into the night to try to figure out why your code hadn’t executed properly. And after you found the bug in your code, you could go back to the card-punch machine to repair your logic or syntax.
Programming that way appealed only to the most dedicated. Starting in the late 1960s, however, a much better approach—interactive computing—beaconed from just over the technological horizon. And at UCSD, a young professor of applied engineering physics named Ken Bowles was determined to make it happen.
Before coming to UCSD, Bowles had witnessed the power of interactive computing at the Jicamarca Radio Observatory in Peru, where he had used a small Packard-Bell PB250 computer to control a massive antenna array and to collect data. So he knew firsthand how much small computers could aid research. He was also convinced that interactive computing could advance education in general.
Because of his deep interest in computers, Bowles was named to the committee formed to find a new director for UCSD’s computing center. That search failed, though, and in 1968 UCSD’s chancellor convinced Bowles to take the job himself. UCSD’s aging CDC 3600 mainframe needed to be replaced, giving Bowles the perfect opportunity to move his institution in the direction of interactive computing.
With that goal in mind, Bowles selected a Burroughs computer, in part because its designers were making strides toward interactive systems. Bowles and his students then began modifying the Burroughs operating system, making it more user friendly. All went well for a while, but during a 1974 lecturing trip to the University of Oxford, Bowles got word that UCSD had decided to replace the Burroughs machine, not with many smaller units but with big iron: an IBM mainframe. The university had also relieved Bowles of much of his authority as director.