Over the past few years, the Java programming language has enjoyed unprecedented success. This success has brought a challenge: along with explosive growth in popularity, there has been explosive growth in the demands made on the language and its libraries. To meet this challenge, the language has grown as well (fortunately, not explosively) and so have the libraries.
This Second Edition of The Java Language Specification reflects these developments. It integrates all the changes made to the Java programming language since the publication of the First Edition in 1996. The bulk of these changes were made in the 1.1 release of the Java platform in 1997, and revolve around the addition of nested type declarations. Later modifications pertained to floating-point operations. In addition, this edition incorporates important clarifications and amendments involving method lookup and binary compatibility.
This specification defines the language as it exists today. The Java programming language is likely to continue to evolve. At this writing, there are ongoing initiatives through the Java Community Process to extend the language with generic types and assertions, refine the memory model, etc. However, it would be inappropriate to delay the publication of the Second Edition until these efforts are concluded.
The specifications of the libraries are now far too large to fit into this volume, and they continue to evolve. Consequently, API specifications have been removed from this book. The library specifications can be found on the Web; this specification now concentrates solely on the Java programming language proper.
Many people contributed to this book, directly and indirectly. Tim Lindholm brought extraordinary dedication to his role as technical editor of the Java Series. He also made invaluable technical contributions, especially on floating-point issues. The book would likely not see the light of day without him. Lisa Friendly, the Series editor, provided encouragement and advice for which I am very thankful.
David Bowen first suggested that I get involved in the specifications of the Java platform. I am grateful to him for introducing me to this uncommonly rich area.
John Rose, the father of nested types in the Java programming language, has been unfailingly gracious and supportive of my attempts to specify them accurately.
Many people have provided valuable comments on this edition. Special thanks go to Roly Perera at Ergnosis and to Leonid Arbouzov and his colleagues on the Java platform conformance team in Novosibirsk: Konstantin Bobrovsky, Natalia Golovleva, Vladimir Ivanov, Alexei Kaigorodov, Serguei Katkov, Dmitri Khukhro, Eugene Latkin, Ilya Neverov, Pavel Ozhdikhin, Igor Pyankov, Viatcheslav Rybalov, Serguei Samoilidi, Maxim Sokolnikov, and Vitaly Tchaiko. Their thorough reading of earlier drafts has greatly improved the accuracy of this specification.
I am indebted to Martin Odersky and to Andrew Bennett and the
members of the
javac compiler team,
past and present: Iris Garcia, Bill Maddox, David Stoutamire, and Todd
Turnidge. They all worked hard to make sure the reference
implementation conformed to the specification. For many enjoyable
technical exchanges, I thank them and my other colleagues at Sun: Lars
Bak, Joshua Bloch, Cliff Click, Robert Field, Mohammad Gharahgouzloo,
Ben Gomes, Steffen Grarup, Robert Griesemer, Graham Hamilton, Gordon
Hirsch, Peter Kessler, Sheng Liang, James McIlree, Philip Milne,
Srdjan Mitrovic, Anand Palaniswamy, Mike Paleczny, Mark Reinhold,
Kenneth Russell, Rene Schmidt, David Ungar, Chris Vick, and Hong
Tricia Jordan, my manager, has been a model of patience, consideration and understanding. Thanks are also due to Larry Abrahams, director of Java 2 Standard Edition, for supporting this work.
The following individuals all provided useful comments that have contributed to this specification: Godmar Bak, Hans Boehm, Philippe Charles, David Chase, Joe Darcy, Jim des Rivieres, Sophia Drossopoulou, Susan Eisenbach, Paul Haahr, Urs Hoelzle, Bart Jacobs, Kent Johnson, Mark Lillibridge, Norbert Lindenberg, Phillipe Mulet, Kelly O'Hair, Bill Pugh, Cameron Purdy, Anthony Scian, Janice Shepherd, David Shields, John Spicer, Lee Worall, and David Wragg.
Suzette Pelouch provided invaluable assistance with the index and, together with Doug Kramer and Atul Dambalkar, assisted with FrameMaker expertise; Mike Hendrickson and Julie Dinicola at Addison-Wesley were gracious, helpful and ultimately made this book a reality.
On a personal note, I thank my wife Weihong for her love and support.
Finally, I'd like to thank my coauthors, James Gosling, Bill Joy, and Guy Steele for inviting me to participate in this work. It has been a pleasure and a privilege.