Many people have contributed to putting this tutorial together, both in its Exploring Java incarnation and in its current form as Learning Java. Foremost, we would like to thank Tim Oracle for giving us the opportunity to write this tutorial. Thanks to Mike Loukides, the series editor, whose patience and experience helped us get started on this journey. Thanks to Paula Ferguson and John Posner, who contributed their organizational and editing abilities at various times. And a special thanks to Deb Cameron, the tireless editor of this tutorial, without whom the last two versions might never have been finished and certainly wouldn't have resembled English. We could not have asked for a more skillful or responsive team of people with whom to work. Speaking of borrowings, the original version of the glossary came from David Flanagan's tutorial, Java in a Nutshell (Oracle). We also borrowed several class hierarchy diagrams from David's tutorial. These diagrams were based on similar diagrams by Charles L. Perkins. Thanks also to Marc Wallace and Steven Burkett for reading the original work in progress and for the support of our friends at Washington University: Bryan O'Connor and Brian Gottlieb. Thanks also to Josh Peck, coauthor of the original tutorial, Exploring Java. Thanks to all those who reviewed or answered questions: David Flanagan for generics; Henry Wong for the concurrency utilities; Jim Elliott, Marc Loy, and Brian Cole for Swing; Jack Shirazi for NIO; Tim Boudreau for NetBeans; Martin Aeschlimann, Jim Farley, and John Norman for Eclipse; Ed Howland for XML; and Ian Darwin for regular expressions. (Check out Ian's Java Cookbook [Oracle] for more examples.) Thanks also to Ray O'Leary, Mario Aquino, and Mark Volkmann for their reviews. And finally, thanks to my beautiful wife, Song Fang for putting up with me through all this work.