Packages  This Package  Prev  Next  Index  


A Bit of History
About the Java Series
Contributors to the API
About the Java Packages
Other Books in the Java Series

A Bit of History

Java is a general-purpose object-oriented programming language. Its syntax is similar to C and C++ but 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 on a Mac, PC or UNIX machine, connected to a high-speed network or a modem.

But with popularity comes scrutiny and soon Web enthusiasts felt that the content supported by the Web's HTML document format was too limited. HTML extensions like 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


April, 1996

About the Java Series

The Java series provides definitive reference documentation for Java programmers and end users. They 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.

To learn the latest about Java or download the latest Java release, visit our World Wide Web site at For updated information about the Java Series, including sample code, errata, and previews of forthcoming books, visit

We would like to thank the Corporate and Professional Publishing Group at Addison-Wesley for their partnership in putting together the Series. Our editor Mike Hendrickson and his team have done a superb job of navigating us through the world of publishing. Within Sun, 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 API

Designers of Classes and Interfaces

Tom Ball Bill Joy

Lee Boynton Tim Lindholm

Patrick Chan Jonathan Payne

David Connelly Sami Shaio

Pavani Diwanji Doug Stein

Amy Fowler Arthur van Hoff

James Gosling Chris Warth

Jim Graham Frank Yellin

Herb Jellinek


Carla Schroer Vijah Srinivasan

Kevin Smith Headley Williamson

Layout and Supplemental Documentation

Lisa Friendly Kathy Walrath Doug Kramer

James Gosling Annette Wagner

Jonni Kanerva Frank Yellin

Guy Steele

About the Java Packages

These two volumes describes 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 hasn't reached perfection yet, we believe it's useful and hope to make it a ubiquitous layer, available to all Internet applications.

Have fun.

Arthur van Hoff


These books are a reference manual for Java application and applet programmers. To make full use of it 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'll find these new concepts simpler and easier to use than in most other programming environments.

The libraries in these booksare 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 took the opportunity to design and implement the API making full use of the Java language.

For Release 1.0, we've 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

Using these API Books

Don't 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 on the back cover are a good starting point for getting an impression of the relationships between classes. Editor: Is that where the class diagrams are going to be?

As you design and implement Java programs, you should write short test programs to verify your understanding of the classes. When in doubt, try it out!

The Java web site,, contains many excellent and sometimes interactive explanations that can help you along. Another good source of information is the newsgroup

Package Overview

This 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:

java.lang: The Java Language Package

The java.lang package provides the classes and interfaces that form the core of the Java language and Virtual Machine. For example, the classes-Object, String, and Thread, for example-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 Machinecan 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, SecurityManager, 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. The Java I/O Package

The package provides a set of input and output streams used to read and write data to files or other input and output 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 Package

The 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. The Java Networking Package

The 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) Package:

The 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 Package

The java.awt.image package contains classes and interfaces for performing sophisticated image processing. These classes and interfaces can be used byapplications that need to create or manipulate images and colors.

java.awt.peer: The AWT Peer Package

The java.awt.peer package contains interfaces used to connect AWT components to their window system-specific implementations (such as Motif widgets).

Unless you're creating a window system-specific implementation of the AWT, you shouldn't need to use the interfaces in the java.awt.peer package.

java.applet: The Applet Package

The java.applet package contains classes and interfaces for creating applets, which are programs intended to be embedded into HTML pages or otherwise transported across a network.


IEEE 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

Other Books in the Java Series

Arnold, Ken and James Gosling. The Java Programming Language. Addison- Wesley, Reading, Massachusetts, to appear 1996, ISBN 0-201-63455-4.

Campione, Mary and Kathy Walrath. The Java Language Tutorial: Object-Oriented Programming for the Internet. Addison-Wesley, Reading, Massachusets, to appear 1996, ISBN 0-201-63454-6.

Gosling, James, Bill Joy and Guy Steele. The Java Language Specification. Addison-Wesley, Reading, Massachusetts, 1996, ISBN 0-201-63451-1.

Lindholm, Tim, and Frank Yellin. The Java Virtual Machine Specification. Addison-Wesley, Reading, Massachusetts, 1996, ISBN 0-201-63452-X.

Packages  This Package  Prev  Next  Index
Java API Document (HTML generated by dkramer on April 14, 1996)
Copyright © 1996 Sun Microsystems, Inc. All rights reserved
Please send any comments or corrections to