"I love this book. Its dense condensation of the details a developer needs makes it the one book I pull out over and over again."
--James Gosling, Fellow and Vice President, Sun Microsystems, Inc., and inventor of the Java programming language
"This reminds me of the catalogs of integrated circuits that we use to build hardware systems, and shows how far and fast Java technology has come in having a library of incredibly useful software components--An indispensable desk reference!" --Bill Joy, cofounder, Sun Microsystems, Inc. Quoted from his keynote at JavaOne
"I think this book is, quite simply, a stroke of genius. I've been lamenting the stack of books on Java technology I've had to pore over when all I needed was a detail about some method or package. The Almanac is the one-stop shop I was unconsciously waiting for."--John Vlissides, IBM TJ Watson and coauthor of the best-selling book Design Patterns
The Java Developers Almanac 1.4, Volume 2 is the most up-to-date and complete quick reference for the Java Class Libraries--JDK 1.0, 1.1, and J2SE v1.2, v1.3, v1.4. Information for 3,000 classes and 32,000 members is carefully formatted and arranged for easy lookup. In these two volumes you will find:
Volume 1 covers 91 core packages, including java.beans, java.io, java.lang, java.math, java.net, java.nio, java.rmi, java.sql, java.text, java.util, javax.crypto, javax.naming, javax.security, javax.xml, and CORBA.
Volume 2 covers 45 packages useful for developing GUI applications, including java.applet, java.awt, javax.accessibility, javax.imageio, javax.print, javax.sound, and javax.swing.
No matter what level programmer you are, you will find this book an invaluable tool for everyday development.
Welcome to the fourth edition of The Java Developers Almanac.
There was a time when I intimately knew all of the Java class libraries. I knew how it all worked and exactly how everything fit together. I knew what subclassed what, what overrode what, and so on (of course, it helped that I was one of the original developers :-). But aside from the occasional inability to remember which argument of Vector.insertElementAt() is the index, I rarely had to refer to any reference documentation.
Version 1.1 added 250 classes and my mastery of the Java class libraries was reduced to half. This left me feeling a little disoriented since I no longer knew my way around, and the increased size of the libraries exceeded my ability to recall the details of the signatures.
Since I make my living writing Java code, it was important that I find an efficient way of "navigating" the new libraries. What I wanted was a quick overview of all of the libraries; something that covered every class and briefly showed their relationships; something that would allow me to explore and quickly learn about new packages. This need led to this book.
The Java Developers Almanac is like a map of the Java class libraries. It's a compact and portable tool that covers almost all of the libraries, if only from a bird's-eye view. It's great for reminding you of things like method names and parameters. With today's class count at 3000, you're bound to forget a few details now and again. The almanac is great for discovering the relationships between the classes, such as determining all methods that return an image. It's also great for quickly exploring a new package.
While this book is comprehensive, the libraries are so vast that there simply isn't enough room to provide equally comprehensive documentation. So if you're working with a package that is new to you, you'll probably also need a tutorial book such as The Java Tutorial, Third Edition (Campione and Walrath, Addison-Wesley, 1998), a detailed reference such as The Java Class Libraries, Volumes 1 and 2 (Chan, Lee, and Kramer, Addison-Wesley, 1998), and/or the on-line documentation at http://java.sun.com/docs.
The book is divided into four parts, briefly described next.
This part covers each package in alphabetical order: a brief description of the package, a description of each class and interface in the package, and a hierarchy diagram showing the relationship between the classes and interfaces in the package. This part is useful when you need an overview of a package or want to see what other related classes are available in a package.
Most packages provide a number of examples demonstrating common usage of classes in the package. The examples are designed to demonstrate a particular task using the smallest amount of code possible. Their main purpose is to show you which classes are involved in the described task and generally how they interact with each other. The code for the examples are available on http://javaalmanac.com.
This part contains 500 pages of class tables, one for each class in all the covered packages. Each class table includes a class tree that shows the ancestry of the class and a list of every member in the class. Also included in the member lists are inherited members from superclasses. Thus you have a complete view of all members made available by a class. This part is useful when you're already working with a particular class and want a quick reference to all of the members in the class. New for this edition are example numbers on some of the members. This number refers to an example that demonstrates the use of the member (or a related member).
This part is a set of quick-reference tables on miscellaneous topics. For example, the topic title "Java 1.4" contains a detailed analysis of the API differences between Java 1.3 and Java 1.4.
This part is a cross-reference of all of the Java classes and interfaces covered in this book. This part is useful when you have questions such as What methods return an Image object? or What are all the descendents of java.io.InputStream?
As the title suggests, this book is intended to be updated whenever a new major version of the Java class libraries is released. However, before a new version is published, I will be placing any new material that I manage to write on the http://javaalmanac.com website. Since this book is designed for you to use in your everyday programming-related work, I would love to hear how I could improve it for the next version or simply what you thought about it. Although Im afraid I probably wont be able to reply, I promise to read and consider each suggestion I receive. You can reach me at the following e-mail address:firstname.lastname@example.org
First and foremost, I thank Mike Hendrickson, who spent a great deal of time collaborating with me on this project. He helped me hone the ideas in this book and then supported me all of the way. It's been tremendous fun working with him.
Arthur Ogawa (email@example.com), TeX master extraordinaire, provided me with TeX macros without which this book would have been impossible. Thanks for working with me in the wee hours of the morning trying to get everything just right.
I want to thank Lisa Friendly, the series editor, for all sorts of help getting this book off the ground and for getting me all of the support I needed.
Thanks to Lananh Dang who complained about my java.sql examples and ended up writing the java.sql examples for this edition.
Special thanks to Rosanna, my wife, who helped me with writing examples and many other parts of the book.
Many people gave me feedback or provided some other assistance in the making of this book. Thanks to Jens Alfke, Ken Arnold, Joshua Bloch, Paul Bommarito, David Brownell, Michael Bundschuh, Bartley Calder, Casey Cameron, Norman Chin, Mark Drumm, Robert Field, Janice Heiss, Jeff Jackson, Doug Kramer, Sheng Liang, Tim Lindholm, Hans Muller, John Pampuch, Rob Posadas, Mark Reinhold, Dan Rudman, Georges Saab, Bill Shannon, Ann Sunhachawee, Joanne Stewart-Taylor, Laurence Vanhelsuwe, Bruce Wallace, Kathy Walrath, and Tony Welch.
Finally, I want to thank the wonderful people at Addison-Wesley who made this project a lot of fun: Jacquelyn Doucette, Tracy Russ, and Sarah Weaver.Patrick Chan