#

| Preface |

# Preface

Contents:
What This Book Covers
Organization
Related Books
Online Resources
Conventions Used in This Book
Request for Comments
Acknowledgments

This book is a reference manual for the fundamental classes in the Java programming environment; it covers version 1.1 of the Java API. We've defined fundamental classes to mean those classes in the Java Development Kit (JDK) that every Java programmer is likely to need, minus the classes that comprise the Abstract Window Toolkit (AWT). (The classes in the AWT are covered by a companion volume, the Java AWT Reference, from O'Reilly & Associates.) Thus, this book covers the classes in the `java.lang` and `java.io` packages, among others, and is essential for the practicing Java programmer.

This is an exciting time in the development of Java. Version 1.1 introduces a massive amount of infrastructure that more than doubles the size of the core Java APIs. This new infrastructure provides many new facilities, such as:

- Java is now more dynamic. An expanded `Class` class, in conjunction with the new `java.lang.reflect` package, allows objects to access methods and variables of objects that they were not compiled with.

- There are classes in `java.io` that build on the new dynamic capabilities to provide the ability to read and write objects as streams of bytes.

- There is increased support for internationalization. The support includes a `Locale` class and classes to format and parse data in locale-specific ways. There is also support for loading external locale-specific resources, such as textual strings.

- The `java.util.zip` package provides the ability to read and write compressed files.

- The `java.math` package provides the ability to perform arithmetic operations to any degree of precision that is necessary.

There are also more ways to package and distribute Java programs. In addition to being able to build command-line based applications and applets that are hosted by browsers, we now have the Java Servelet API that allows Java programs to function as part of a web server. Furthermore, the nature of applets may be changing. Instead of waiting for large applet to be downloaded by a browser, we now have push technologies such as Marimba's Castanet that ensure that the most current version of an applet is already on our machine when we want to run it.

Many new uses for Java have appeared or are on the horizon. For example, NASA is using Java applets to monitor telemetry data, instead of building more large, dedicated hardware consoles. Cellular phone manufacturers have committed to making cellular phone models that support Java, so in the future we may see Java programs that run on cellular phones and allow us to check e-mail or view location maps. Many additional APIs are also on the way, from Sun and other companies. These APIs not only supply infrastructure, but also provide frameworks for building domain-specific applications, in such areas as electronic commerce and manufacturing.

This book is about the classes that provide the most fundamental infrastructure for Java. As you use this book, we hope that you will share our enthusiasm for the richness of what is provided and the anticipation of what is yet to come.

## What This Book Covers

The Java Fundamental Classes Reference is the definitive resource for programmers working with the core, non-AWT classes in Java. It covers all aspects of these fundamental classes as of version 1.1.1 of Java. If there are any changes to these classes after 1.1.1 (at least one more patch release is expected), we will integrate them as soon as possible. Watch the book's web site, http://www.ora.com/catalog/javafund/, for details on changes.

Specifically, this book completely covers the following packages:

- `java.io` (1.0 and 1.1)

- `java.lang` (1.0 and 1.1)

- `java.lang.reflect` (new in 1.1)

- `java.math` (new in 1.1)

- `java.net` (1.0 and 1.1)

- `java.text` (new in 1.1)

- `java.util` (1.0 and 1.1)

- `java.util.zip` (new in 1.1)

As you can see from the list above, this book covers four packages that are completely new in Java 1.1. In addition, it includes material on all of the new features in the four original 1.0 packages. Here are the highlights of what is new in Java 1.1:

`java.lang`

  This package contains the new `Byte`, `Short`, and `Void` classes that are needed for the new Reflection API. The `Class` class also defines a number of new methods for the Reflection API. Chapter 12, The java.lang Package, contains reference material on all of the classes in the `java.lang` package.

`java.io`

  This package contains a number of new classes, mostly for object serialization and character streams. Chapter 11, The java.io Package, contains reference material on all of the classes in the `java.io` package.

`java.net`

  This package contains a new `MulticastSocket` class that supports multicast sockets and several new exception types for more detailed networking exceptions. Chapter 15, The java.net Package, contains reference material on all of the classes in the `java.net` package.

`java.util`

  This package includes a handful of new classes for internationalization, such as `Locale` and `ResourceBundle`. The package also defines the base classes that support the new AWT event model. The new `Calendar` and `TimeZone` classes provide increased support for working with dates and times. Chapter 17, The java.util Package, contains reference material on all of the classes in the `java.util` package.

`java.lang.reflect`

  This new package defines classes that implement the bulk of the new Reflection API. The classes in the package represent the fields, methods, and constructors of a class. Chapter 13, The java.lang.reflect Package, contains reference material on all of the classes in the `java.lang.reflect` package.

`java.math`

  This new package includes two classes that support arithmetic: one with arbitrarily large integers and another with arbitrary-precision floating-point numbers. Chapter 14, The java.math Package, contains reference material on all of the classes in the `java.math` package.

`java.text`

  This new package contains the majority of the classes that implement the internationalization capabilities of Java 1.1. It includes classes for formatting dates, times, numbers, and textual messages for any specified locale. Chapter 16, The java.text Package, contains reference material on all of the classes in the `java.text` package.

`java.util.zip`

  This new package defines classes that support general-purpose data compression and decompression using the ZLIB compression algorithms, as well as classes that work with the popular GZIP and ZIP formats. Chapter 18, The java.util.zip Package, contains reference material on all of the classes in the `java.util.zip` package.

|  | Organization