There are several object-oriented programming languages, including Smalltalk, Eiffel, C++, Objective C, Objective Pascal, Java, Ada, and even a version of Lisp. There are two clear marketplace winners, C++ and Java.
Today, Java is the emerging object-oriented language of choice for many programmers and software projects. One of the reasons for Java's popularity is the World Wide Web and Java's ability to run Web applets directly on any computer or operating system with a Web browser. Another reason is that Java is an excellent programming language. It is a small, well-designed language that can be used not just for Web applets, but for full-blown programs on almost any computer today. Java was somewhat hampered in its early days because of its performance, but this is really no longer an issue. Because it is such a good language, Java has been widely adopted as the main language used to teach computer science at colleges and universities all over the world. In the whole history of computer science and programming, this is the first time the same programming language has been popular as both a teaching language and a language used for real-world programs.
C++ is also a widely used programming language. It is still the principal language used for the core applications (such as spreadsheets and word processors) used on most computers today. C++ was derived from C, and thus has a heritage of being able to do real things on real systems, and there is compatibility with existing C code. One problem with C++, however, is that it has grown into a large and complicated language, and it is difficult to achieve competence in the full language.
This book is mostly about object-oriented programming. That means it will focus on general principles of object-oriented programming that apply to any programming language. But the book will also show how to translate object-oriented designs to real programs using Java. The focus will be on how to use the capabilities of the Java language to implement OO designs. It is not a tutorial on Java. We assume that you've already learned the Java basics. Now you are ready to learn about objects and how to use Java to write better programs.