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