by Ole-Johan Dahl and Kristen Nygaard in the 1960s, but the ideas espoused in
them simply did not catch on. The field was not ready for them.
In the 1970s, Alan Kay's group at Xerox PARC used the ideas in Simula as
a platform for their development of Smalltalk, an object-oriented language that
got quite a bit of publicity. And in the 1980s, Bjarne Stroustrup started his devel-
opment of C++ as an object-oriented version of the programming language C,
and Bertrand Meyer created the Eiffel programming language. Object-oriented
programming had arrived as a useful tool.
Object-oriented programming is a complement to procedural programming.
Procedural programming consists of writing programs using assignment state-
ments, conditional statements, loops, and subroutine calls. Object-oriented pro-
gramming provides a new way of structure of programs that, ultimately, still con-
tain the procedural aspects within their subroutines (or methods, as they are
called in OO programming).
The programming language Java
Java is a relatively new OO programming language. Its roots are in a lan-
guage called Oak, developed under the direction of James Gosling at Sun
Microsystems in 1991 as part of the Green project; but it was introduced to the
world as Java in 1995. Java is based on C, but it has several significant advan-
First, Java is a relatively simple but powerful, well-designed, object-orient-
ed language. With Java, one can begin teaching object-oriented concepts in the
first week; with C++, this usually happens only in the second semester.
Second, the inventors of Java showed how Java programs could be embed-
ded in browsers as applets , and, by 1996, both Netscape and Microsoft browsers
supported applets. This meant that anyone who looked at your website could run
Third, the Java language comes with a machine language into which com-
pilers have to compile Java programs. Called the Java Virtual Machine (JVM)
language, it defines precisely what the machine language equivalent of a Java
These two programs
are executed by the
The process of compiling and running Java programs and C programs