Introduction
The purpose of this book is to teach you the fundamentals of Java programming. It uses a step-by-
step approach complete with numerous examples, self tests, and projects. It assumes no previous
programming experience. The book starts with the basics, such as how to compile and run a Java
program. It then discusses the keywords, features, and constructs that form the core of the Java
language. You’ll also find coverage of some of Java’s most advanced features, including
multithreaded programming and generics. An introduction to the fundamentals of Swing and JavaFX
concludes the book. By the time you finish, you will have a firm grasp of the essentials of Java
programming.
It is important to state at the outset that this book is just a starting point. Java is more than just the
elements that define the language. Java also includes extensive libraries and tools that aid in the
development of programs. To be a top-notch Java programmer implies mastery of these areas, too.
After completing this book, you will have the knowledge to pursue any and all other aspects of Java.
The Evolution of Java
Only a few languages have fundamentally reshaped the very essence of programming. In this elite
group, one stands out because its impact was both rapid and widespread. This language is, of course,
Java. It is not an overstatement to say that the original release of Java 1.0 in 1995 by Sun
Microsystems, Inc., caused a revolution in programming. This revolution radically transformed the
Web into a highly interactive environment. In the process, Java set a new standard in computer
language design.
Over the years, Java has continued to grow, evolve, and otherwise redefine itself. Unlike many
other languages, which are slow to incorporate new features, Java has often been at the forefront of
computer language development. One reason for this is the culture of innovation and change that came
to surround Java. As a result, Java has gone through several upgrades—some relatively small, others
more significant.
The first major update to Java was version 1.1. The features added by Java 1.1 were more
substantial than the increase in the minor revision number would have you think. For example, Java
1.1 added many new library elements, redefined the way events are handled, and reconfigured many
features of the original 1.0 library.
The next major release of Java was Java 2, where the 2 indicates “second generation.” The
creation of Java 2 was a watershed event, marking the beginning of Java’s “modern age.” The first
release of Java 2 carried the version number 1.2. It may seem odd that the first release of Java 2 used
the 1.2 version number. The reason is that it originally referred to the internal version number of the
Java libraries but then was generalized to refer to the entire release, itself. With Java 2, Sun
repackaged the Java product as J2SE (Java 2 Platform Standard Edition), and the version numbers
began to be applied to that product.
The next upgrade of Java was J2SE 1.3. This version of Java was the first major upgrade to the
original Java 2 release. For the most part, it added to existing functionality and “tightened up” the
development environment. The release of J2SE 1.4 further enhanced Java. This release contained
several important new features, including chained exceptions, channel-based I/O, and the assert