The Java Language Specification, Java SE 8 Edition

by ; ; ; ;
  • ISBN13:


  • ISBN10:


  • Edition: 1st
  • Format: Paperback
  • Copyright: 2014-05-06
  • Publisher: Addison-Wesley Professional
  • Purchase Benefits
  • Free Shipping On Orders Over $35!
    Your order must be $35 or more to qualify for free economy shipping. Bulk sales, PO's, Marketplace items, eBooks and apparel do not qualify for this offer.
  • Get Rewarded for Ordering Your Textbooks! Enroll Now
List Price: $59.99 Save up to $7.20
  • Buy New
    Add to Cart Free Shipping


Supplemental Materials

What is included with this book?


Written by the inventors of the technology, The Java® Language Specification, Java SE 8 Edition is the definitive technical reference for the Java programming language.


The book provides complete, accurate, and detailed coverage of the Java programming language. It fully describes the new features added in Java SE 8, including lambda expressions, method references, default methods, type annotations, and repeating annotations. The book also includes many explanatory notes and carefully distinguishes the formal rules of the language from the practical behavior of compilers.


Author Biography

James Gosling is the creator of the Java programming language and a former Fellow at Sun Microsystems. He developed the original Java compiler and Java Virtual Machine, and was a principal in the Andrew project at Carnegie Mellon University, where he earned a Ph.D. in Computer Science. He joined Liquid Robotics as Chief Software Architect in 2011.
Bill Joy is a co-founder of Sun Microsystems and was the principal architect of the Berkeley version of UNIX®, for which he received a lifetime achievement award from the USENIX Association in 1993. Joy has had a central role in shaping the Java programming language. He joined KPCB as a Greentech Partner in 2005.
Guy L. Steele Jr. is a Software Architect at Oracle Labs, where he conducts research in language design and implementation strategies, parallel algorithms, and computer arithmetic. Steele is a co-creator of the Scheme programming language, an ACM Fellow, an IEEE Fellow, and a member of the National Academy of Engineering.
Gilad Bracha is the creator of the Newspeak programming language and a former Distinguished Engineer at Sun Microsystems. Prior to Sun, he worked on Strongtalk, the Animorphic Smalltalk System. He holds a Ph.D. in Computer Science from the University of Utah.
Alex Buckley is the Specification Lead for the Java programming language and the Java Virtual Machine at Oracle. He holds a Ph.D. in Computing from Imperial College London.

Table of Contents

Preface to the Java SE 8 Edition xxi
1 Introduction
1.1 Organization of the Specification
1.2 Example Programs
1.3 Notation
1.4 Relationship to Predefined Classes and Interfaces
1.5 Feedback
1.6 References
2 Grammars
2.1 Context-Free Grammars
2.2 The Lexical Grammar
2.3 The Syntactic Grammar
2.4 Grammar Notation
3 Lexical Structure
3.1 Unicode
3.2 Lexical Translations
3.3 Unicode Escapes
3.4 Line Terminators
3.5 Input Elements and Tokens
3.6 White Space
3.8 Identifiers
3.9 Keywords
3.10 Literals
3.11 Separators
3.12 Operators
4 Types, Values, and Variables
4.1 The Kinds of Types and Values
4.2 Primitive Types and Values
4.3 Reference Types and Values
4.4 Type Variables
4.5 Parameterized Types
4.6 Type Erasure
4.7 Reifiable Types
4.8 Raw Types
4.9 Intersection Types
4.10 Subtyping
4.11 Where Types Are Used
4.12 Variables
5 Conversions and Contexts
5.1 Kinds of Conversion
5.2 Assignment Contexts
5.3 Invocation Contexts
5.4 String Contexts
5.5 Casting Contexts
5.6 Numeric Contexts
6 Names
6.1 Declarations
6.2 Names and Identifiers
6.3 Scope of a Declaration
6.4 Shadowing and Obscuring
6.5 Determining the Meaning of a Name
6.6 Access Control
6.7 Fully Qualified Names and Canonical Names
7 Packages
7.1 Package Members
7.2 Host Support for Packages
7.3 Compilation Units
7.4 Package Declarations
7.5 Import Declarations
7.6 Top Level Type Declarations
8 Classes
8.1 Class Declarations
8.1.1 Class Modifiers
8.2 Class Members
8.3 Field Declarations
8.4 Method Declarations
8.5 Member Type Declarations
8.6 Instance Initializers
8.7 Static Initializers
8.8 Constructor Declarations
8.9 Enum Types
9 Interfaces 275
9.1 Interface Declarations
9.2 Interface Members
9.3 Field (Constant) Declarations
9.4 Method Declarations
9.5 Member Type Declarations
9.6 Annotation Types
9.7 Annotations
9.8 Functional Interfaces
9.9 Function Types
10 Arrays
10.1 Array Types
10.2 Array Variables
10.3 Array Creation
10.4 Array Access
10.5 Array Store Exception
10.6 Array Initializers
10.7 Array Members
10.8 Class Objects for Arrays
10.9 An Array of Characters is Not a String
11 Exceptions
11.1 The Kinds and Causes of Exceptions
11.3 Run-Time Handling of an Exception
12 Execution
12.1 Java Virtual Machine Startup
12.2 Loading of Classes and Interfaces
12.3 Linking of Classes and Interfaces
12.4 Initialization of Classes and Interfaces
12.5 Creation of New Class Instances
12.6 Finalization of Class Instances
12.7 Unloading of Classes and Interfaces
12.8 Program Exit
13 Binary Compatibility
13.1 The Form of a Binary
13.2 What Binary Compatibility Is and Is Not
13.3 Evolution of Packages
13.4 Evolution of Classes
13.5 Evolution of Interfaces
14 Blocks and Statements
14.1 Normal and Abrupt Completion of Statements
14.2 Blocks
14.3 Local Class Declarations
14.4 Local Variable Declaration Statements
14.5 Statements
14.6 The Empty Statement
14.7 Labeled Statements
14.8 Expression Statements
14.9 The if Statement
14.10 The assert Statement
14.11 The switch Statement
14.12 The while Statement
14.13 The do Statement
14.14 The for Statement
14.15 The break Statement
14.16 The continue Statement
14.17 The return Statement
14.18 The throw Statement
14.19 The synchronized Statement
14.20 The try statement
14.21 Unreachable Statements
15 Expressions
15.1 Evaluation, Denotation, and Result
15.2 Forms of Expressions
15.3 Type of an Expression
15.4 FP-strict Expressions
15.5 Expressions and Run-Time Checks
15.6 Normal and Abrupt Completion of Evaluation
15.7 Evaluation Order
15.8 Primary Expressions
15.9 Class Instance Creation Expressions
15.10 Array Creation and Access Expressions
15.11 Field Access Expressions
15.12 Method Invocation Expressions
15.13 Method Reference Expressions
15.14 Postfix Expressions
15.15 Unary Operators
15.16 Cast Expressions
15.17 Multiplicative Operators
15.18 Additive Operators
15.19 Shift Operators
15.20 Relational Operators
15.21 Equality Operators
15.22 Bitwise and Logical Operators
15.22.2 Boolean Logical Operators &, ^, and
15.23 Conditional-And Operator &&
15.24 Conditional-Or Operator
15.25 Conditional Operator ? :
15.26 Assignment Operators
15.27 Lambda Expressions
15.28 Constant Expressions
16 Definite Assignment
16.1 Definite Assignment and Expressions
16.2 Definite Assignment and Statements
16.3 Definite Assignment and Parameters
16.4 Definite Assignment and Array Initializers
16.5 Definite Assignment and Enum Constants
16.6 Definite Assignment and Anonymous Classes
16.7 Definite Assignment and Member Types
16.8 Definite Assignment and Static Initializers
16.9 Definite Assignment, Constructors, and Instance Initializers
17 Threads and Locks
17.1 Synchronization
17.2 Wait Sets and Notification
17.3 Sleep and Yield
17.4 Memory Model
17.5 final Field Semantics
17.6 Word Tearing
17.7 Non-atomic Treatment of double and long
18 Type Inference
18.1 Concepts and Notation
18.2 Reduction
18.3 Incorporation
18.4 Resolution
18.5 Uses of Inference
19 Syntax
A Limited License Grant

Rewards Program

Write a Review