Foreword xix
Preface xxiChapter 1: Getting Started 1
1.1 The Java Technology Phenomenon 1
1.2 The Hello World! Application 6
1.3 A Closer Look at the Hello World! Application 24
1.4 Common Problems (and Their Solutions) 27
1.5 Questions and Exercises: Getting Started 30
Chapter 2: Object-Oriented Programming Concepts 33
2.1 What Is an Object? 33
2.2 What Is a Class? 35
2.3 What Is Inheritance? 37
2.4 What Is an Interface? 38
2.5 What Is a Package? 39
2.6 Questions and Exercises: Object-Oriented Programming Concepts 40
Chapter 3: Language Basics 43
3.1 Variables 43
3.2 Operators 55
3.3 Expressions, Statements, and Blocks 66
3.4 Control Flow Statements 69
Chapter 4: Classes and Objects 85
4.1 Classes 85
4.2 Objects 97
4.3 More on Classes 106
4.4 Nested Classes 122
4.5 Enum Types 128
4.6 Annotations 132
Chapter 5: Interfaces and Inheritance 139
5.1 Interfaces 139
5.2 Inheritance 147
Chapter 6: Generics 167
6.1 Introduction 167
6.2 Generic Types 169
6.3 Generic Methods and Constructors 172
6.4 Bounded Type Parameters 173
6.5 Subtyping 175
6.6 Wildcards 177
6.7 Type Erasure 178
6.8 Summary of Generics 179
6.9 Questions and Exercises: Generics 180
Chapter 7: Packages 183
7.1 Creating and Using Packages 183
Chapter 8: Numbers and Strings 195
8.1 Numbers 195
8.2 Characters 210
8.3 Strings 212
Chapter 9: Exceptions 233
9.1 What Is an Exception? 233
9.2 The Catch or Specify Requirement 235
9.3 Catching and Handling Exceptions 236
9.4 Specifying the Exceptions Thrown by a Method 245
9.5 How to Throw Exceptions 246
9.6 Unchecked Exceptions-The Controversy 252
9.7 Advantages of Exceptions 253
9.8 Summary 258
9.9 Questions and Exercises: Exceptions 259
Chapter 10: Basic I/O 261
10.1 I/O Streams 261
10.2 File I/O 286
10.3 The New I/O Packages 291
10.4 Summary 292
10.5 Questions and Exercises: Basic I/O 292
Chapter 11: Collections 293
11.1 Introduction to Collections 293
11.2 Interfaces 295
11.3 Implementations 342
11.4 Algorithms 355
11.5 Custom Collection Implementations 360
11.6 Interoperability 364
Chapter 12: Concurrency 369
12.1 Processes and Threads 369
12.2 Thread Objects 371
12.3 Synchronization 377
12.4 Liveness 384
12.5 Guarded Blocks 386
12.6 Immutable Objects 391
12.7 High-Level Concurrency Objects 395
12.8 For Further Reading 402
12.9 Questions and Exercises: Concurrency 403
Chapter 13: Regular Expressions 405
13.1 Introduction 405
13.2 Test Harness 406
13.3 String Literals 407
13.4 Character Classes 409
13.5 Predefined Character Classes 414
13.6 Quantifiers 416
13.7 Capturing Groups 422
13.8 Boundary Matchers 424
13.9 Methods of the Pattern Class 425
13.10 Methods of the Matcher Class 431
13.11 Methods of the PatternSyntaxException Class 437
13.12 Summary 439
13.13 Additional Resources 440
13.14 Questions and Exercises: Regular Expressions 440
Chapter 14: The Platform Environment 443
14.1 Configuration Utilities 443
14.2 System Utilities 452
14.3 PATH and CLASSPATH 457
14.4 Questions and Exercises: The Platform Environment 460
Chapter 15: Swing 463
15.1 A Brief Introduction to the Swing Package 463
15.2 Swing Features 470
15.3 Questions: Graphical User Interfaces 485
Chapter 16: Packaging Programs in JAR Files 487
16.1 Using JAR Files: The Basics 488
16.2 Working with Manifest Files: The Basics 500
16.3 Signing and Verifying JAR Files 507
16.4 Using JAR-Related APIs 514
16.5 Questions: JAR Files 520
Chapter 17: Java Web Start 521
17.1 Running Java Web Start Applications 522
17.2 Deploying Java Web Start Applications 524
17.3 Developing Java Web Start Applications 534
17.4 The JNLP API 536
17.5 Java Web Start and Security 538
17.6 Common Java Web Start Problems 539
17.7 Questions and Exercises: Java Web Start 540
Chapter 18: Applets 543
18.1 Getting Started with Applets 545
18.2 Taking Advantage of the Applet API 559
18.3 Practical Considerations When Writing Applets 578
18.4 Finishing an Applet 593
18.5 Deploying Applets 594
18.6 Solving Common Applet Problems 600
18.7 Questions and Exercises: Java Applets 602
Appendix A: Java Language Keywords 603Appendix B: Preparation for Java Programming Language Certification 605
B.1 Section 1: Declarations, Initialization and Scoping 606
B.2 Section 2: Flow Control 608
B.3 Section 3: API Contents 609
B.4 Section 4: Concurrency 611
B.5 Section 5: OO Concepts 612
B.6 Section 6: Collections / Generics 613
B.7 Section 7: Fundamentals 614
Index 617