Written by the inventors of the technology, The Java™ Language Specification, Third Edition, is the definitive technical reference for the Java™ programming language. If you want to know the precise meaning of the language's constructs, this is the source for you.
The book provides complete, accurate, and detailed coverage of the Java programming language. It provides full coverage of all new features added since the previous edition, including generics, annotations, asserts, autoboxing, enums, for-each loops, variable arity methods, and static import clauses.
Download the Sample
Chapter related to this title.
Preface to the Second Edition.
Preface to the Third Edition.
Relationship to Predefined Classes and Interfaces.
The Lexical Grammar.
The Syntactic Grammar.
3. Lexical Structure.
Input Elements and Tokens.
4. Types, Values, and Variables.
The Kinds of Types and Values.
Primitive Types and Values.
Reference Types and Values.
Where Types Are Used.
5. Conversions and Promotions.
Kinds of Conversion.
Method Invocation Conversion.
Names and Identifiers.
Scope of a Declaration.
Members and Inheritance.
Determining the Meaning of a Name.
Fully Qualified Names and Canonical Names.
Host Support for Packages.
Top Level Type Declarations.
Unique Package Names.
Member Type Declarations.
Field (Constant) Declarations.
Abstract Method Declarations.
Member Type Declarations.
Arrays: A Simple Example.
Class Objects for Arrays.
An Array of Characters is Not a String.
Array Store Exception.
The Causes of Exceptions.
Compile-Time Checking of Exceptions.
Handling of an Exception.
An Example of Exceptions.
The Exception Hierarchy.
Virtual Machine Start-Up.
Loading of Classes and Interfaces.
Linking of Classes and Interfaces.
Initialization of Classes and Interfaces.
Creation of New Class Instances.
Finalization of Class Instances.
Unloading of Classes and Interfaces.
13. Binary Compatibility.
The Form of a Binary.
What Binary Compatibility Is and Is Not.
Evolution of Packages.
Evolution of Classes.
Evolution of Interfaces.
14. Blocks and Statements.
Normal and Abrupt Completion of Statements.
Local Class Declarations.
Local Variable Declaration Statements.
The Empty Statement.
The if Statement.
The assert Statement.
The switch Statement.
The while Statement.
The do Statement.
The for Statement.
The break Statement.
The continue Statement.
The return Statement.
The throw Statement.
The synchronized Statement.
The try statement.
Evaluation, Denotation, and Result.
Variables as Values.
Type of an Expression.
Expressions and Run-Time Checks.
Normal and Abrupt Completion of Evaluation.
Class Instance Creation Expressions.
Array Creation Expressions.
Field Access Expressions.
Method Invocation Expressions.
Array Access Expressions.
Bitwise and Logical Operators.
Conditional-And Operator &&.
Conditional-Or Operator ||.
Conditional Operator ? :.
16. Definite Assignment.
Definite Assignment and Expressions.
Definite Assignment and Statements.
Definite Assignment and Parameters.
Definite Assignment and Array Initializers.
Definite Assignment and Enum Constants.
Definite Assignment and Anonymous Classes.
Definite Assignment and Member Types.
Definite Assignment and Static Initializers.
Definite Assignment, Constructors, and Instance Initializers.
17. Threads and Locks.
Notation in Examples.
Incorrectly Synchronized Programs Exhibit Surprising Behaviors.
Final Field Semantics.
Non-atomic Treatment of double and long.
Wait Sets and Notification.
Sleep and Yield.
The Grammar of the Java Programming Language.
This edition of the Java Programming Language Specification represents the largest set of changes in the language's history. Generics, annotations, asserts, autoboxing and unboxing, enum types, for-each loops, variable arity methods and static imports have all been added to the language recently. All but asserts are new to the 5.0 release of autumn 2004.
This third 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 second edition in 2000.
The language has grown a great deal in these past four years. Unfortunately, it is unrealistic to shrink a commercially successful programming language--only to grow it more and more. The challenge of managing this growth under the constraints of compatibility and the conflicting demands of a wide variety of uses and users is non-trivial. I can only hope that we have met this challenge successfully with this specification; time will tell.
Download the Index
file related to this title.