Java Language Specification, Java SE 8 Edition, The, 1st edition
Published by Addison-Wesley Professional (May 6, 2014) © 2014
- James J. Gosling University of Utah
- Bill Joy
- Guy L. Steele
- Gilad Bracha
- Alex Buckley
- A print text (hardcover or paperback)
- Free shipping
- Fully reflects the single largest evolution of the Java language in its history
- Provides meticulous coverage of Java SE 8's syntax, semantics, and constructs
- Thoroughly covers major, long-awaited improvements in Java SE 8, including lambda expressions, method references, default methods, and more
- Fully addresses crucial enhancements to Java's popular annotations features
- Packed with valuable insights distinguishing Java's formal rules from real-world compiler behavior
- An indispensable resource for every serious programmer using the #1 language for enterprise development: Java
Â
Chapter 1: Introduction        1
1.1 Organization of the Specification  2
1.2 Example Programs  6
1.3 Notation  6
1.4 Relationship to Predefined Classes and Interfaces  7
1.5 Feedback  7
1.6 References  7
Â
Chapter 2: Grammars        9
2.1 Context-Free Grammars  9
2.2 The Lexical Grammar  9
2.3 The Syntactic Grammar  10
2.4 Grammar Notation  10
Â
Chapter 3: Lexical Structure        15
3.1  Unicode  15
3.2  Lexical Translations  16
3.3  Unicode Escapes  17
3.4  Line Terminators  19
3.5  Input Elements and Tokens  19
3.6  White Space  20
3.7  Comments  21
3.8  Identifiers  22
3.9  Keywords  24
3.10 Literals  24
3.11 Separators  38
3.12 Operators  38
Â
Chapter 4: Types, Values, and Variables        41
4.1  The Kinds of Types and Values  41
4.2  Primitive Types and Values  42
4.3  Reference Types and Values  52
4.4  Type Variables  57
4.5  Parameterized Types  59
4.6  Type Erasure  64
4.7  Reifiable Types  64
4.8  Raw Types  66
4.9  Intersection Types  70
4.10 Subtyping  71
4.11 Where Types Are Used  75
4.12 Variables  80
Â
Chapter 5: Conversions and Contexts        91
5.1 Kinds of Conversion  94
5.2 Assignment Contexts  107
5.3 Invocation Contexts  112
5.4 String Contexts  114
5.5 Casting Contexts  114
5.6 Numeric Contexts  124
Â
Chapter 6: Names        129
6.1 Declarations  130
6.2 Names and Identifiers  137
6.3 Scope of a Declaration  139
6.4 Shadowing and Obscuring  142
6.5 Determining the Meaning of a Name  148
6.6 Access Control  161
6.7 Fully Qualified Names and Canonical Names  169
Â
Chapter 7: Packages        173
7.1 Package Members  173
7.3 Compilation Units  177
7.4 Package Declarations  178
7.5 Import Declarations  180
7.6 Top Level Type Declarations  185
Â
Chapter 8: Classes        189
8.1 Class Declarations  191
8.2 Class Members  206
8.3 Field Declarations  211
8.4 Method Declarations  225
8.5 Member Type Declarations  254
8.6 Instance Initializers  255
8.7 Static Initializers  255
8.8 Constructor Declarations  256
8.9 Enum Types  266
Â
Chapter 9: Interfaces        277
9.1 Interface Declarations  278
9.2 Interface Members  282
9.3 Field (Constant) Declarations  283
9.4 Method Declarations  286
9.5 Member Type Declarations  291
9.6 Annotation Types  292
9.7 Annotations  308
9.8 Functional Interfaces  319
9.9 Function Types  323
Â
Chapter 10: Arrays        329
10.1 Array Types  330
10.2 Array Variables  330
10.3 Array Creation  332
10.4 Array Access  332
10.5 Array Store Exception  333
10.6 Array Initializers  335
10.7 Array Members  336
10.8 Class Objects for Arrays  338
10.9 An Array of Characters Is Not a String  339
Â
Chapter 11: Exceptions        341
11.1 The Kinds and Causes of Exceptions  342
11.2 Compile-Time Checking of Exceptions  344
11.3 Run-Time Handling of an Exception  349
Â
Chapter 12: Execution        353
12.1 Java Virtual Machine Startup  353
12.2 Loading of Classes and Interfaces  356
12.3 Linking of Classes and Interfaces  358
12.4 Initialization of Classes and Interfaces  360
12.5 Creation of New Class Instances  365
12.6 Finalization of Class Instances  369
12.7 Unloading of Classes and Interfaces  373
12.8 Program Exit  374
Â
Chapter 13: Binary Compatibility        375
13.1 The Form of a Binary  376
13.2 What Binary Compatibility Is and Is Not  382
13.3 Evolution of Packages  383
13.4 Evolution of Classes  383
13.5 Evolution of Interfaces  400
Â
Chapter 14: Blocks and Statements         405
14.1  Normal and Abrupt Completion of Statements  405
14.2  Blocks  407
14.3  Local Class Declarations  407
14.4  Local Variable Declaration Statements  408
14.5  Statements  410
14.6  The Empty Statement  412
14.7  Labeled Statements  413
14.8  Expression Statements  414
14.9  The if Statement  415
14.10 The assert Statement  416
14.11 The switch Statement  419
14.12 The while Statement  423
14.13 The do Statement  424
14.14 The for Statement  426
14.15 The break Statement  432
14.16 The continue Statement  434
14.17 The return Statement  436
14.18 The throw Statement  437
14.19 The synchronized Statement  439
14.20 The try statement  440
14.21 Unreachable Statements  452
Â
Chapter 15: Expressions        459
15.1  Evaluation, Denotation, and Result  459
15.2  Forms of Expressions  460
15.3  Type of an Expression  461
15.4  FP-strict Expressions  462
15.5  Expressions and Run-Time Checks  462
15.6  Normal and Abrupt Completion of Evaluation  464
15.7  Evaluation Order  466
15.8  Primary Expressions  471
15.9  Class Instance Creation Expressions  476
15.10 Array Creation and Access Expressions  487
15.11 Field Access Expressions  494
15.12 Method Invocation Expressions  499
15.13 Method Reference Expressions  529
15.14 Postfix Expressions  542
15.15 Unary Operators  544
15.16 Cast Expressions  549
15.17 Multiplicative Operators  550
15.18 Additive Operators  556
15.19 Shift Operators  561
15.20 Relational Operators  562
15.21 Equality Operators  565
15.22 Bitwise and Logical Operators  568
15.23 Conditional-And Operator &&Â Â 570
15.24 Conditional-Or Operator ||Â Â 570
15.25 Conditional Operator ? :Â Â 571
15.26 Assignment Operators  581
15.27 Lambda Expressions  594
15.28 Constant Expressions  605
Â
Chapter 16: Definite Assignment        607
16.1 Definite Assignment and Expressions  613
16.2 Definite Assignment and Statements  617
16.3 Definite Assignment and Parameters  626
16.4 Definite Assignment and Array Initializers  626
16.5 Definite Assignment and Enum Constants  626
16.6 Definite Assignment and Anonymous Classes  627
16.7 Definite Assignment and Member Types  627
16.8 Definite Assignment and Static Initializers  628
16.9 Definite Assignment, Constructors, and Instance Initializers  628
Â
Chapter 17: Threads and Locks        631
17.1 Synchronization  632
17.2 Wait Sets and Notification  632
17.3 Sleep and Yield  636
17.4 Memory Model  637
17.5 final Field Semantics  652
17.6 Word Tearing  657
17.7 Non-Atomic Treatment of double and long  658
Â
Chapter 18: Type Inference        659
18.1 Concepts and Notation  660
18.2 Reduction  663
18.3 Incorporation  673
18.4 Resolution  675
18.5 Uses of Inference  677
Â
Chapter 19: Syntax        689
Â
Index        715
Â
Appendix A: Limited License Grant        755
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.
Need help? Get in touch
![Video](https://img.youtube.com/vi/TCIok0KnHDc/hqdefault.jpg)
Pearson eTextbook: What’s on the inside just might surprise you
They say you can’t judge a book by its cover. It’s the same with your students. Meet each one right where they are with an engaging, interactive, personalized learning experience that goes beyond the textbook to fit any schedule, any budget, and any lifestyle.Â
![](https://www.pearson.com/content/dam/global-store/global/plp-pdp/1600x800-GettyImages-1172587378.jpg)
Digital Learning NOW
Extend your professional development and meet your students where they are with free weekly Digital Learning NOW webinars. Attend live, watch on-demand, or listen at your leisure to expand your teaching strategies. Earn digital professional development badges for attending a live session.