SKIP THE SHIPPING
Use code NOSHIP during checkout to save 40% on eligible eBooks, now through January 5. Shop now.
Register your product to gain access to bonus material or receive a coupon.
This PDF will be accessible from your Account page after purchase and requires PDF reading software, such as Acrobat® Reader®.
The eBook requires no passwords or activation to read. We customize your eBook by discreetly watermarking it with your name, making it uniquely yours.
The Java® Tutorial, Sixth Edition, is based on the Java Platform, Standard Edition (Java SE) 8. This revised and updated edition introduces the new features added to the platform, including lambda expressions, default methods, aggregate operations, and more. An accessible and practical guide for programmers of any level, this book focuses on how to use the rich environment provided by Java to build applications, applets, and components.
Expanded coverage includes a chapter on the Date-Time API and a new chapter on annotations, with sections on type annotations and pluggable type systems as well as repeating annotations.
In addition, the updated sections “Security in Rich Internet Applications” and “Guidelines for Securing Rich Internet Applications” address key security topics. The latest deployment best practices are described in the chapter “Deployment in Depth.”
If you plan to take one of the Java SE 8 certification exams, this book can help. A special appendix, “Preparing for Java Programming Language Certification,” details the items covered on the available exams. Check online for updates.
All of the material has been thoroughly reviewed by members of Oracle Java engineering to ensure that the information is accurate and up to date. This book is based on the online tutorial hosted on Oracle Corporation’s website at http://docs.oracle.com/javase/tutorial.
Preface xxiii
About the Authors xxvii
Chapter 1: Getting Started 1
The Java Technology Phenomenon 1
The “Hello World!” Application 5
A Closer Look at the “Hello World!” Application 23
Common Problems (and Their Solutions) 27
Questions and Exercises: Getting Started 31
Chapter 2: Object-Oriented Programming Concepts 33
What Is an Object? 34
What Is a Class? 36
What Is Inheritance? 38
What Is an Interface? 39
What Is a Package? 40
Questions and Exercises: ObjectOriented Programming Concepts 41
Chapter 3: Language Basics 43
Variables 44
Operators 58
Expressions, Statements, and Blocks 68
Questions and Exercises: Expressions, Statements, and Blocks 71
Chapter 4: Classes and Objects 87
Classes 88
Objects 99
More on Classes 107
Nested Classes 121
Enum Types 157
Chapter 5: Annotations 163
Annotations Basics 164
Declaring an Annotation Type 165
Predefined Annotation Types 167
Type Annotations and Pluggable Type Systems 170
Repeating Annotations 171
Questions and Exercises: Annotations 173
Chapter 6: Interfaces and Inheritance 175
Interfaces 175
Inheritance 193
Chapter 7: Generics 219
Why Use Generics? 220
Generic Types 220
Generic Methods 226
Bounded Type Parameters 227
Generics, Inheritance, and Subtypes 229
Type Inference 232
Wildcards 236
Type Erasure 244
Restrictions on Generics 252
Questions and Exercises: Generics 256
Chapter 8: Packages 259
Creating and Using Packages 259
Questions and Exercises: Creating and Using Packages 269
Chapter 9: Numbers and Strings 271
Numbers 271
Characters 287
Strings 288
Chapter 10: Exceptions 309
What Is an Exception? 310
The Catch or Specify Requirement 311
Catching and Handling Exceptions 313
Specifying the Exceptions Thrown by a Method 323
How to Throw Exceptions 324
Unchecked Exceptions: The Controversy 329
Advantages of Exceptions 330
Summary 335
Questions and Exercises: Exceptions 336
Chapter 11: Basic I/O and NIO.2 339
I/O Streams 339
File I/O (Featuring NIO.2) 359
Summary 421
Questions and Exercises: Basic I/O 422
Chapter 12: Collections 423
Introduction to Collections 424
Interfaces 426
Aggregate Operations 471
Implementations 489
Algorithms 505
Custom Collection Implementations 509
Interoperability 513
Chapter 13: Concurrency 519
Processes and Threads 520
Thread Objects 521
Synchronization 527
Liveness 533
Guarded Blocks 535
Immutable Objects 539
High-Level Concurrency Objects 543
Questions and Exercises: Concurrency 555
Chapter 14: Regular Expressions 557
Introduction 558
Test Harness 559
String Literals 560
Character Classes 562
Predefined Character Classes 566
Quantifiers 568
Capturing Groups 574
Boundary Matchers 576
Methods of the Pattern Class 578
Methods of the Matcher Class 583
Methods of the PatternSyntaxException Class 589
Unicode Support 591
Questions and Exercises: Regular Expressions 592
Chapter 15: The Platform Environment 595
Configuration Utilities 595
System Utilities 603
PATH and CLASSPATH 609
Questions and Exercises: The Platform Environment 613
Chapter 16: Packaging Programs in JAR Files 615
Using JAR Files: The Basics 616
Working with Manifest Files: The Basics 627
Signing and Verifying JAR Files 635
Using JAR-Related APIs 642
Questions and Exercises: Packaging Programs in JAR Files 648
Chapter 17: Java Web Start 649
Developing a Java Web Start Application 650
Deploying a Java Web Start Application 653
Displaying a Customized Loading Progress Indicator 656
Running a Java Web Start Application 660
Java Web Start and Security 661
Common Java Web Start Problems 662
Questions and Exercises: Java Web Start 663
Chapter 18: Applets 665
Getting Started with Applets 666
Doing More with Applets 677
Solving Common Applet Problems 707
Questions and Exercises: Applets 708
Chapter 19: Doing More with Java Rich Internet Applications 711
Setting Trusted Arguments and Secure Properties 711
JNLP API 714
Cookies 719
Customizing the Loading Experience 722
Security in Rich Internet Applications 722
Guidelines for Securing RIAs 724
Questions and Exercises: Doing More with Rich Internet Applications 726
Chapter 20: Deployment in Depth 729
User Acceptance of RIAs 729
Deployment Toolkit 731
Java Network Launch Protocol 739
Deployment Best Practices 748
Questions and Exercises: Deployment in Depth 753
Chapter 21: Date-Time 755
Date-Time Overview 756
Date-Time Design Principles 756
The Date-Time Packages 757
Method Naming Conventions 758
Standard Calendar 759
Overview 759
DayOfWeek and Month Enums 760
Date and Time Classes 764
Time Zone and Offset Classes 766
Instant Class 770
Parsing and Formatting 772
The Temporal Package 774
Period and Duration 780
Clock 783
Non-ISO Date Conversion 784
Legacy Date-Time Code 787
Summary 789
Questions and Exercises: Date-Time 791
Chapter 22: Introduction to JavaFX 793
Appendix: Preparation for Java Programming Language Certification 795
Programmer Level I Exam 795
Programmer Level II Exam 801
Java SE 8 Upgrade Exam 801
Index 807