San José State University
Thayer Watkins
Silicon Valley
& tornado road

The Genealogy of the
Java Programming Language

Before FORTRAN computer programming was a slow, tedious task and seemed hardly worth the effort. FORTRAN was created by a group at IBM which was led by John Bachus. Supported and propagandized by IBM FORTRAN became the premier programming language for its time and is still important for heavy duty computing in the sciences and engineering. Soon another language, Lisp (short for list processing), joined FORTRAN as the first genuine computer program languages. Lisp was created by John McCarthy at Dartmouth College to meet the special needs of artificial intelligence programming. FORTRAN and Lisp demonstrated for the world what could be achieved by high level programming languages.

The Java programming language was not derived directly from FORTRAN and Lisp. Instead Java's ancestral source was in the Algol (algorithmic language) languages. Computer programming was developing somewhat differently in Europe than in America and there was concern that the advantage of having the groups in both areas working on common problem would be lost if each continued on its separate path. Finally a committee of researcher in Europe and America formed to create something in the nature of a universal programming language. It is not an easy task to do so, particularly by way of negotiations and debate in a committee, but Algol was created. However it was not a universal programming language but nevertheless was useful. There were three well-known versions which were named after the year they were publicized; Algol58, Algol60 and Algol68.

The Algol language specialty was scientific computation. The programming language CPL was the attempt to expand Algol60 to include the industrial process control and business data processing. It is the result of a collaboration of researchers at Cambridge University and the University of London, with Christopher Strachey as a main figure in its design. What CPL stands for has become ambiguous, when different people at the different times have said that it represents: Combined Programming Language, Conceptual Prototype Language, Call Processing Language and even Computer Pidgin Language.

CPL is a large, complex language. Cambridge-London collaboration member, Martin Richards, when visiting MIT in 1967 set about simplifying CPL. This result he called Basic CPL, and later BCPL. Another development at MIT at that time was enormously important to the future use of computers. MIT had a mainframe computer it wanted to make directly available for student use. The standard practice for students submitting programs in the form of a deck of punched cards involved too long of a turn-around time. On the other hand, giving direct access to one student by way of a keyboard would waste most of the computer's power. The solution was to connect the mainframe computer to a collection of remote terminals. The computer would go from one terminal to another spending only a small fraction of a second to carry out each terminal's computation task. The mainframe computer needed a program to process this distributed computing including the input and the output tasks. The name given to this program was Multics, and it is this concept which led to the concept of an operating system for a computer.

In Bell Laboratory, the American Telephone and Telegraph Company's research arm, two researchers, Ken Thompson and Dennis Richie, were given the use of a mini computer. This, at that time, was a rare opportunity for computer scientists. Ken Thompson wanted to use the computer for his programming, but did not want to include the repetitious programming for input and output processes. He knew about the Multics system in MIT, and made the decision to create this kind of system for a single user. The minicomputer does not have the mainframe computer's large capacity and speed, therefore it was not that important that much of the machine's time would be wasted waiting a new command from the keyboard. Thompson called his single user operating system Unics, but later changed this to Unix.

For his UNIX system Thompson needed a programming language which would run on a minicomputer. He knew about BCPL created by Richards at MIT and implemented and used in places such as for example Xerox's Palo Alto Research center (PARC). Thompson simplified BCPL, and called it the B programming language. It included some new programming characteristic which were included in Algol68.

In 1969 the B programming language was created. Dennis Ritchie joined Thompson's project with responsibility for its programming language needs. In 1971 Ritchie created an expanded version of B which he called New B at first but later decided to call C. This is the origin of the renowned programming language C, the program of instruction for decades.

The next step in the evolution was when Bjarne Stroustrup, completed his the graduate to work at Cambridge University (c. 1979), and moved to the Bell Laboratory. Stroustrup had an interest in simulation. He was familiar with the programming language Simula, which was created in Norway to deal with the programming of simulations. Stroustrup created a preprocessor for C at Bell Laboratory which he initially called C with Classes. He added other characteristics to C and by 1984 started to call it the C++ programming language. It has become the most important object-oriented programming language. Thus the programming language C quickly outgrew its association with the Unix operating system. It has become near universal language of academic computation in its C++ form. For example, programming language compilers are almost always written in C++. Therefore even alternative programming language are dependent upon C++ for their implementation.

In 1990 a group of top people at Sun Microsystems in California's Silicon Valley started to study the use of programming embedded in the consumer electronic devices, for examples, television sets, kitchen appliances and even automobiles. Because the computing capacity would be severely limited in such equipment the programming language for this type of computing would have to be simple. James Gosling had primary responsibility for the development of this kind programming. He started by C++, and removed any features that often caused programming bugs. This resulting programming language Gosling called Oak, after a tree outside his office window. Oak was a more vigorous and healthier version of C++. The time, 1991, was too early for the implementations envisioned. However very soon the Internet blossomed, and it had the need for some kind of programming language computation in internet webpages. The language's name was changed to Java. A Java applet (small application) produces simple graphics more quickly than the time required to download images from the internet. Java has important features for a programming language outside its role for the Internet. It is like a healthier and more robust version of C++.

In the past a compiler would create a program in the machine language of a particular model of computer. For another model of computer a different compiler would have to be created. A Java compiler creates a program in what is called virtual machine language. Each model computer has a program to translate the Java virtual machine language program into its own actual machine language.

Now Java is used in cell phones, and thus is achieving what it was originally created for at Sun Microsystems.

(To be continued.)

HOME PAGE OF applet-magic
HOME PAGE OF Thayer Watkins