A Java Road Map

With everything that’s going on, it’s hard to keep track of what’s available now, what’s promised, and what has been around for some time. The following sections constitute a road map that imposes some order on Java’s past, present, and future.

Java 1.0 provided the basic framework for Java development: the language itself plus packages that let you write applets and simple applications. Although 1.0 is officially obsolete, there are still a lot of applets in existence that conform to its API.

Java 1.1 superseded 1.0, incorporating major improvements in the Abstract Window Toolkit (AWT) package (Java’s original GUI facility), a new event pattern, new language facilities such as reflection and inner classes, and many other critical features. Java 1.1 is the version that was supported natively by most versions of Netscape and Microsoft Internet Explorer for many years. For various political reasons, the browser world was frozen in this condition for a long time. This version of Java is still considered a sort of baseline for applets, although even this will fall away as Microsoft drops support for Java in its platforms.

Java 1.2, dubbed “Java 2” by Sun, was a major release in December 1998. It provided many improvements and additions, mainly in terms of the set of APIs that were bundled into the standard distributions. The most notable additions were the inclusion of the Swing GUI package as a core API and a new, full-fledged 2D drawing API. Swing is Java’s advanced user interface toolkit with capabilities far exceeding the old AWT’s. (Swing, AWT, and some other packages have been variously called the JFC, or Java Foundation Classes.) Java 1.2 also added a proper Collections API to Java.

Java 1.3, released in early 2000, added minor features but was primarily focused on performance. With version 1.3, Java got significantly faster on many platforms and Swing received many bug fixes. In this timeframe, Java enterprise APIs such as Servlets and Enterprise JavaBeans also matured.

Java 1.4, released in 2002, integrated a major new set of APIs and many long-awaited features. This included language assertions, regular expressions, preferences and logging APIs, a new I/O system for high-volume applications, standard support for XML, fundamental improvements in AWT and Swing, and a greatly matured Java Servlets API for web applications.

Java 5, released in 2004, was a major release that introduced many long-awaited language syntax enhancements including generics, typesafe enumerations, the enhanced for-loop, variable argument lists, static imports, autoboxing and unboxing of primitives, as well as advanced metadata on classes. A new concurrency API provided powerful threading capabilities, and APIs for formatted printing and parsing similar to those in C were added. RMI has also been overhauled to eliminate the need for compiled stubs and skeletons. There were also major additions in the standard XML APIs.

Java 6, released in late 2006, was a relatively minor release that added no new syntactic features to the Java language, but bundled new extension APIs such as those for XML and web services.

This book includes all the latest and greatest improvements through the final release of Java 7. This release adds some minor language syntax enhancements such as those to improve exception handling and resource management. It also includes some major API updates, such as a completely new filesystem API and additions to many others.

This edition of the book is the first since the Java 5 release and therefore has been completely overhauled to incorporate all of the changes from the Java 6 and Java 7 releases.

Here’s a brief overview of the most important features of the current core Java API:

The following are “standard extension” APIs. Some, such as those for working with XML and web services, are bundled with the standard edition of Java; some must be downloaded separately and deployed with your application or server.

In this book, we’ll try to give you a taste of as many features as possible; unfortunately for us (but fortunately for Java software developers), the Java environment has become so rich that it’s impossible to cover everything in a single book.

Changes in Java have become less frequent as Java has matured over the years, but Java continues to be one of the most popular platforms for application development. This is especially true in the areas of web services, web application frameworks, and XML tools. While Java has not dominated mobile platforms in the way it seemed destined to, the Java language and core APIs are used to program for Google’s Android mobile OS, which is used on billions of devices around the world. In the Microsoft camp, the Java-derived C# language has taken over much .NET development and brought the core Java syntax and patterns to those platforms.

Probably the most exciting areas of change in Java today are found in the trend toward lighter weight, simpler frameworks for business and the integration of the Java platform with dynamic languages for scripting web pages and extensions. There is much more interesting work to come.

You have several choices for Java development environments and runtime systems. Oracle’s Java Development Kit (JDK) is available for Mac OS X, Windows, and Linux. Visit Oracle’s Java website at for more information about obtaining the latest JDK. This book’s online content is available at http://oreil.ly/Java_4E.

There is also a whole array of popular Java Integrated Development Environments. We’ll discuss two in this book: IBM’s Eclipse and the Oracle NetBeans IDE. These all-in-one development environments let you write, test, and package software with advanced tools at your fingertips. While Eclipse is unquestionably the most popular and is open source, this author’s preferred IDE is Intellij IDEA by JetBrains, which now also has a free community edition.