The Java Series, from the language's developers at Sun Microsystems, is the official and most-comprehensive description available. Together, these books will be essential references for serious WWW programmers and application developers. The Java Application Programming Interface desacribes the set of classes, methods, and resources comprising the API that programmers need on a day-to-day basis.
A Bit of HistoryJava is a general-purpose object-oriented programming language. Its syntax is similar to C and C++, but it omits semantic features that make C and C++ complex, confusing, and insecure. Java was initially developed to address the problems of building software for small distributed systems to embed in consumer devices. As such it was designed for heterogeneous networks, multiple host architectures, and secure delivery. To meet these requirements, compiled Java code had to survive transport across networks, operate on any client, and assure the client that it was safe to run.
The popularization of the World Wide Web helped catapult these attributes of Java into the limelight. The Internet demonstrated how interesting, media-rich content could be made accessible in simple ways. Web browsers like Mosaic enabled millions of people to roam the Net and made Web surfing part of popular culture. At last there was a medium where what you saw and heard was essentially the same whether you were using a Mac, PC, or UNIX machine, connected to a high-speed network or a modem.
With popularity comes scrutiny, however, and soon Web enthusiasts felt that the content supported by the Web's HTML document format was too limited. HTML extensions, such as forms, only highlighted those limitations while making it clear that no browser could include all the features users wanted. Extensibility was the answer. At just this time the Java programming language found itself looking for another application.
Sun's HotJava browser was developed to showcase Java's interesting properties by making it possible to embed Java programs inside Web pages. These Java programs, known as applets, are transparently downloaded into the HotJava browser along with the HTML pages in which they appear. Before being accepted by the browser, applets are carefully checked to make sure they are safe. Like HTML pages, compiled Java programs are network- and platform-independent. Applets behave the same regardless of where they come from or what kind of machine they are being loaded into.
The Web community quickly noticed that Java was something new and important. With Java as the extension language, a Web browser could have limitless capabilities. Programmers could write an applet once and it would then run on any machine, anywhere. Visitors to Java-powered Web pages could use the content found there with confidence that nothing would damage their machine.
With applets as the initial focus, Java has demonstrated a new way to make use of the Internet to distribute software. This new paradigm goes beyond browsers. We believe it is an innovation with the potential to change the course of computing.
Tim Lindholm
Senior Staff Engineer
JavaSoft
April 1996
About the Java SeriesThe Java Series provides definitive reference documentation for Java programmers and end users. These books are written by members of the Java Team and published under the auspices of JavaSoft, a Sun Microsystems business. The World Wide Web allows Java documentation to be made available over the Internet, either by downloading or as hypertext. Nevertheless, the world wide interest in Java led us to write these books.Our editor, Mike Hendrickson, and his team have done a superb job of navigating us through the world of publishing. The support of James Gosling, Ruth Hennigar, and Bill Joy of Sun Microsystems ensured that this series would have the resources it needed to be successful. A personal note of thanks to my children, Christopher and James, for putting a positive spin on the many trips to my office during the development of the Series.
Lisa Friendly
Series Editor
Contributors to the APIDesigners of Classes and InterfacesTom Ball
Lee Boynton
Patrick Chan
David Connelly
Pavani Diwanji
Amy Fowler
James Gosling
Jim Graham
Herb Jellinek
Bill Joy
Tim Lindholm
Sami Shaio
Doug Stein
Arthur van Hoff
Chris Warth
Frank Yellin
TestersCarla Schroer
Kevin Smith
Vijay Srinivasan
Headley Williamson
Layout and Supplemental DocumentationLisa Friendly
James Gosling
Jonni Kanerva
Guy Steele
Annette Wagner
Kathy Walrath
Frank Yellin
About the Java PackagesThese two volumes describe the Java Application Programming Interface (API), a standard set of libraries for writing Java programs. The libraries evolved over several years of writing Java code to implement a variety of systems, ranging from consumer device networks to animated user interfaces to operating systems to compilers. In 1995, the libraries were reorganized to support Internet programming, and thus the Java API was created. Many people, both from inside and outside Sun, have been involved in the design of the API.
Although the API has not reached perfection yet, we believe it is useful and hope to make it a ubiquitous layer, available to all Internet applications.
Have fun.
Arthur van Hoff
IntroductionThese books are reference manuals for Java application and applet programmers. To make full use of them you should be familiar with the Java programming language and its core concepts such as object orientation, garbage collection, and multithreading.
The extent of the API and the choice of functionality have been driven by several factors. First and foremost, the API should be simple and easy to use. Parts of the API, such as the support for multithreading, might introduce functionality that is new to you, but we think you will find these new concepts simpler and easier to use than in most other programming environments.
The libraries in these books are the first generation of an API for writing Internet programs. A simple form of an Internet program is an applet-a small Java program that can be embedded in an HTML page.
The API has been designed with the Java language in mind. Important Java features such as object orientation, garbage collection, and multithreading played an important role in the API design. Instead of taking existing libraries and simply rewriting them in Java, we designed and implemented the API with full use of the Java language.
For Java 1.0, we have tried to stay away from certain complex functionality, such as video and 3D, so that library implementations can be ported easily. We can include only functionality that is not proprietary and that is easily implemented on many platforms.
We expect to add to the API, but not to subtract from it or change its behavior. The API documented in this book will remain available to all Java programs through future releases.
If you have ideas about how the API could be improved or how to implement some of the missing functionality, we would like to hear from you. Please send your ideas and implementations to java@java.sun.
Using These API BooksDo not get overwhelmed by the multitude of classes documented in these two books. The structure of the Java language encourages the programmer to break up libraries into many classes, each describing a small part of the functionality. The class diagrams in the following section are a good starting point for getting an impression of the relationships among classes.
As you design and implement Java programs, you should write short test programs to verify your understanding of the classes.Another good source of information is the newsgroup comp.lang.java.
Package OverviewThis overview describes each package in the Java API, starting with the most general-purpose package (java.lang) and ending with one of the most specialized packages (java.applet). Each package groups classes and interfaces that have similar functionality. The API contains the following packages:
Volume I: Core Packages
java.lang: The Java Language Package
java.io: The Java I/O Package
java.util: The Java Utility Package
java: The Java Networking Package
Volume 2: Window Toolkit and Applets
java.awt: The Abstract Window Toolkit (AWT) Package
java.awt.image: The AWT Image Package
java.awt.peer: The AWT Peer Package
java.applet: The Java Applet Package
java.lang: The Java Language PackageThe java.lang package provides the classes and interfaces that form the core of the Java language and the Java Virtual Machine. For example, the classes Object, String, and Thread are used by almost every program and are closely intertwined with the Java language definition. Other java.lang classes define the exceptions and errors that the Java Virtual Machine can throw.
Another set of java.lang classes provide wrappers for primitive types. For example, the Integer class provides objects to contain int values.
Still other classes, such as ClassLoader, Process, Runtime, Security-Manager, and System, provide access to system resources. For other generally useful classes, see the java.util package.
The java.lang package is imported automatically into every Java program.
java.io: The Java I/O PackageThe java.io package provides a set of input and output (I/O) streams used to read and write data to files or other I/O sources. Java streams are byte oriented and the classes defined here can be chained to implement more sophisticated stream functionality.
java.util: The Java Utility PackageThe java.util package contains a collection of utility classes and related interfaces. It includes classes that provide generic data structures (Dictionary, Hashtable, Stack, Vector), string manipulation (StringTokenizer), and calendar and date utilities (Date).
The java.util package also contains the Observer interface and Observable class, which allow objects to notify one another when they change.
java: The Java Networking PackageThe java package contains networking classes and interfaces, including classes that represent a URL and a URL connection, classes that implement a socket connection, and a class that represents an Internet address.
java.awt: The Abstract Window Toolkit (AWT) PackageThe java.awt package provides the standard graphical user interface (GUI) elements such as buttons, lists, menus, and text areas. It also includes containers (such as windows and menu bars) and higher-level components (such as dialogs for opening and saving files). The AWT contains two more packages: java.awt.image and java.awt.peer.
java.awt.image: The AWT Image PackageThe java.awt.image package contains classes and interfaces for performing sophisticated image processing. These classes and interfaces can be used by applications that need to create or manipulate images and colors.
java.awt.peer: The AWT Peer PackageThe java.awt.peer package contains interfaces used to connect AWT components to their window system-specific implementations (such as Motif widgets).
Unless you are creating a window system-specific implementation of the AWT, you should not need to use the interfaces in the java.awt.peer package.
java.applet: The Applet PackageThe java.applet package contains classes and interfaces for creating applets.
ReferencesIEEE Standard for Binary Floating-Point Arithmetic, ANSI/IEEE Std. 754-1985. Available from Global Engineering Documents, 15 Inverness Way East, Englewood, Colorado 80112-5704 USA, 303-792-2181 or 800-854-7179.
The Unicode Standard: Worldwide Character Encoding, Version 1.0, Volume 1 ISBN 0-201-56788-1 and Volume 2 ISBN 0-201-60845-6. Additional information about Unicode 1.1 may be found at ftp://unicode.
0201634538P04062001