This book is about the Java language and programming environment. If
you've been at all active on the Internet in the past year, you've
heard a lot about Java. It's one of the most exciting developments in
the history of the Internet, rivaling the creation of the World Wide
Web. Java became the darling of the Internet programming community as
soon as the alpha version was released. Immediately, thousands of
people were writing Java applets to add to their Web pages. Interest
in Java only grew with time, and support for Java in Netscape
Navigator guaranteed it would be a permanent part of the Net
scene.

What, then, is Java? Java is a language for network programming
that was developed by Sun Microsystems. It's already in widespread
use for creating animated Web pages. However, this is only the
start. The Java language and environment are rich enough to support
entirely new kinds of applications, like dynamically extensible
browsers. There has been talk about new kinds of computer platforms
(Java terminals or Java pads) that download all their software over
the network. In the coming years, we'll see what Java is capable of
doing; fancy Web pages are fun and interesting, but they certainly
aren't the end of the story. If Java is successful (and that
isn't a foregone conclusion), it could change the way we think
about computing in fundamental ways.

This book sets out to give you a head start on a lot of Java
fundamentals. Exploring Java attempts to live up
to its name by mapping out the Java language, its class libraries,
programming techniques, and idioms. We'll dig deep into
interesting areas, and at least scratch the surface of the rest. Other
titles in the O'Reilly & Associates Java series will pick up where
we leave off and provide more comprehensive information on specific
areas and applications of Java.

Whenever possible, we'll provide meaningful, realistic
examples and avoid simply cataloging features. The examples are
simple but hint at what can be done. We won't be developing the
next great "killer Internet app" in these pages, but we
hope to give you a starting point for many hours of
experimentation and tinkering that will lead you to learn more on your
own.

A lot has happened in the year since the first edition of this book.
We're now up to release 1.1.1 of Java, which has many more features
than the 1.0 release. Java 1.1 adds many, many new features, in
addition to many extensions to the features of Java 1.0.
It's clear that Java is changing the
way we think about computing in fundamental ways; we don't regret that
prophecy at all. It's becoming more and more clear as time goes on
that Java is central to the way software will be written in the
future.

This edition of Exploring Java tries to give you the flavor
of Java 1.1. With a few exceptions, we have uncompromisingly rooted
out all deprecated features from Java 1.0. For example, the chapters
covering AWT all use the new event model; we don't even mention the
1.0 event model. The new event model is far and away superior to the
old one; there's no need for nostalgia. The one section in which we
allowed ourselves to use deprecated features was the chapter covering
Networking. In the best of all possible worlds, you would write your
clients and servers to work with Unicode character streams, using
Java's Reader and Writer classes. But this isn't the best of all
possible worlds, and most software still uses byte-oriented ASCII.
There's no sense in touting a language designed for portability if
programs written in that language would have difficulty talking to
older clients and servers around the net. So we
cut ourselves some slack where network I/O streams are concerned.

We wish we could say that this was "the second edition" of our book.
But that would be a lie. Actually, this is edition 1.9 (well, more
like 1.78).
We have updated everything in the first edition to reflect
the best current practice, and we have added discussions of the most
important new features.
However, the deadline for the CD-ROM didn't let us finish a few
things that we'd really like to add.
In particular, the "real" second
edition will have material on:

JavaBeans (Java's component architecture);

Signing classes, and configuring browsers to grant greater
capabilities to signed applets;

RMI (Java's Remote Method Invocation facility).

We may add some more topics if we get to them. However, we also want
to keep this book reasonably compact. It's our feeling that thousand
page tutorials aren't much help. Furthermore, Java's growing so
fast that we have to place limits somewhere: by the end of the year,
there should be 2D, 3D, sound, commerce, and many other features
available.