Always Learning

Advanced Search

Java™ Programming Language, The

Java™ Programming Language, The

4th Edition

Ken Arnold, James Gosling, David Holmes

Aug 2005, Paperback, 928 pages
ISBN13: 9780321349804
ISBN10: 0321349806
  • Print pagePrint page
  • Email this pageEmail page
  • Write a reviewWrite a review
  • Share

Direct from the creators of the Java™ programming language, the completely revised fourth edition of The Java™ Programming Language is an indispensable resource for novice and advanced programmers alike.

Developers around the world have used previous editions to quickly gain a deep understanding of the Java programming language, its design goals, and how to use it most effectively in real-world development. Now, Ken Arnold, James Gosling, and David Holmes have updated this classic to reflect the major enhancements in Java™ 2 Standard Edition 5.0 (J2SE™ 5.0).

The authors systematically cover most classes in Java’s main packages, java.lang.*, java.util, and java.io, presenting in-depth explanations of why these classes work as they do, with informative examples. Several new chapters and major sections have been added, and every chapter has been updated to reflect today’s best practices for building robust, efficient, and maintainable Java software.

Key changes in this edition include

  • New chapters on generics, enums, and annotations, the most powerful new language features introduced in J2SE 5.0
  • Changes to classes and methods throughout to reflect the addition of generics
  • Major new sections on assertions and regular expressions
  • Coverage of all the new language features, from autoboxing and variable argument methods to the enhanced for-loop and covariant return types
  • Coverage of key new classes, such as Formatter and Scanner

The Java™ Programming Language, Fourth Edition, is the definitive tutorial introduction to the Java language and essential libraries and an indispensable reference for all programmers, including those with extensive experience. It brings together insights you can only get from the creators of Java: insights that will help you write software of exceptional quality.

Direct from the creators of the Java™ programming language, the completely revised fourth edition of The Java™ Programming Language is an indispensable resource for novice and advanced programmers alike.

Developers around the world have used previous editions to quickly gain a deep understanding of the Java programming language, its design goals, and how to use it most effectively in real-world development. Now, Ken Arnold, James Gosling, and David Holmes have updated this classic to reflect the major enhancements in Java™ 2 Standard Edition 5.0 (J2SE™ 5.0).

The authors systematically cover most classes in Java’s main packages, java.lang.*, java.util, and java.io, presenting in-depth explanations of why these classes work as they do, with informative examples. Several new chapters and major sections have been added, and every chapter has been updated to reflect today’s best practices for building robust, efficient, and maintainable Java software.

Key changes in this edition include

  • New chapters on generics, enums, and annotations, the most powerful new language features introduced in J2SE 5.0
  • Changes to classes and methods throughout to reflect the addition of generics
  • Major new sections on assertions and regular expressions
  • Coverage of all the new language features, from autoboxing and variable argument methods to the enhanced for-loop and covariant return types
  • Coverage of key new classes, such as Formatter and Scanner

The Java™ Programming Language, Fourth Edition, is the definitive tutorial introduction to the Java language and essential libraries and an indispensable reference for all programmers, including those with extensive experience. It brings together insights you can only get from the creators of Java: insights that will help you write software of exceptional quality.

Preface xxiChapter 1: A Quick Tour 1

1.1 Getting Started 1
1.2 Variables 3
1.3 Comments in Code 6
1.4 Named Constants 7
1.5 Unicode Characters 8
1.6 Flow of Control 9
1.7 Classes and Objects 12
1.8 Methods and Parameters 15
1.9 Arrays 18
1.10 String Objects 21
1.11 Extending a Class 24
1.12 Interfaces 27
1.13 Generic Types 29
1.14 Exceptions 32
1.15 Annotations 35
1.16 Packages 36
1.17 The Java Platform 38
1.18 Other Topics Briefly Noted 39

Chapter 2: Classes and Objects 41

2.1 A Simple Class 42
2.2 Fields 44
2.3 Access Control 47
2.4 Creating Objects 49
2.5 Construction and Initialization 50
2.6 Methods 56
2.7 this 68
2.8 Overloading Methods 69
2.9 Importing Static Member Names 71
2.10 The main Method 73
2.11 Native Methods 74

Chapter 3: Extending Classes 75

3.1 An Extended Class 76
3.2 Constructors in Extended Classes 80
3.3 Inheriting and Redefining Members 84
3.4 Type Compatibility and Conversion 90
3.5 What protected Really Means 93
3.6 Marking Methods and Classes final 96
3.7 Abstract Classes and Methods 97
3.8 The Object Class 99
3.9 Cloning Objects 101
3.10 Extending Classes: How and When 107
3.11 Designing a Class to Be Extended 108
3.12 Single Inheritance versus Multiple Inheritance 114

Chapter 4: Interfaces 117

4.1 A Simple Interface Example 118
4.2 Interface Declarations 120
4.3 Extending Interfaces 122
4.4 Working with Interfaces 126
4.5 Marker Interfaces 130
4.6 When to Use Interfaces 131

Chapter 5: Nested Classes and Interfaces 133

5.1 Static Nested Types 133
5.2 Inner Classes 136
5.3 Local Inner Classes 142
5.4 Anonymous Inner Classes 144
5.5 Inheriting Nested Types 146
5.6 Nesting in Interfaces 148
5.7 Implementation of Nested Types 149

Chapter 6: Enumeration Types 151

6.1 A Simple Enum Example 151
6.2 Enum Declarations 152
6.3 Enum Constant Declarations 154
6.4 java.lang.Enum 159
6.5 To Enum or Not 160

Chapter 7: Tokens, Values, and Variables 161

7.1 Lexical Elements 161
7.2 Types and Literals 166
7.3 Variables 169
7.4 Array Variables 173
7.5 The Meanings of Names 178

Chapter 8: Primitives as Types 183

8.1 Common Fields and Methods 184
8.2 Void 187
8.3 Boolean 187
8.4 Number 188
8.5 Character 192
8.6 Boxing Conversions 198

Chapter 9: Operators and Expressions 201

9.1 Arithmetic Operations 201
9.2 General Operators 204
9.3 Expressions 214
9.4 Type Conversions 216
9.5 Operator Precedence and Associativity 221
9.6 Member Access 223

Chapter 10: Control Flow 229

10.1 Statements and Blocks 229
10.2 if-else 230
10.3 switch 232
10.4 while and do-while 235
10.5 for 236
10.6 Labels 241
10.7 break 241
10.8 continue 244
10.9 return 245
10.10 What, No goto? 246

Chapter 11: Generic Types 247

11.1 Generic Type Declarations 250
11.2 Working with Generic Types 256
11.3 Generic Methods and Constructors 260
11.4 Wildcard Capture 264
11.5 Under the Hood: Erasure and Raw Types 267
11.6 Finding the Right Method--Revisited 272
11.7 Class Extension and Generic Types 276

Chapter 12: Exceptions and Assertions 279

12.1 Creating Exception Types 280
12.2 throw 282
12.3 The throws Clause 283
12.4 try, catch, and finally 286
12.5 Exception Chaining 291
12.6 Stack Traces 294
12.7 When to Use Exceptions 294
12.8 Assertions 296
12.9 When to Use Assertions 297
12.10 Turning Assertions On and Off 300

Chapter 13: Strings and Regular Expressions 305

13.1 Character Sequences 305
13.2 The String Class 306
13.3 Regular Expression Matching 321
13.4 The StringBuilder Class 330
13.5 Working with UTF-16 336

Chapter 14: Threads 337

14.1 Creating Threads 339
14.2 Using Runnable 341
14.3 Synchronization 345
14.4 wait, notifyAll, and notify 354
14.5 Details of Waiting and Notification 357
14.6 Thread Scheduling 358
14.7 Deadlocks 362
14.8 Ending Thread Execution 365
14.9 Ending Application Execution 369
14.10 The Memory Model: Synchronization and volatile 370
14.11 Thread Management, Security, and ThreadGroup 375
14.12 Threads and Exceptions 379
14.13 ThreadLocal Variables 382
14.14 Debugging Threads 384

Chapter 15: Annotations 387

15.1 A Simple Annotation Example 388
15.2 Annotation Types 389
15.3 Annotating Elements 392
15.4 Restricting Annotation Applicability 393
15.5 Retention Policies 395
15.6 Working with Annotations 395

Chapter 16: Reflection 397

16.1 The Class Class 399
16.2 Annotation Queries 414
16.3 The Modifier Class 416
16.4 The Member classes 416
16.5 Access Checking and AccessibleObject 417
16.6 The Field Class 418
16.7 The Method Class 420
16.8 Creating New Objects and the Constructor Class 423
16.9 Generic Type Inspection 426
16.10 Arrays 429
16.11 Packages 432
16.12 The Proxy Class 432
16.13 Loading Classes 435
16.14 Controlling Assertions at Runtime 444

Chapter 17: Garbage Collection and Memory 447

17.1 Garbage Collection 447
17.2 A Simple Model 448
17.3 Finalization 449
17.4 Interacting with the Garbage Collector 452
17.5 Reachability States and Reference Objects 454

Chapter 18: Packages 467

18.1 Package Naming 468
18.2 Type Imports 469
18.3 Package Access 471
18.4 Package Contents 475
18.5 Package Annotations 476
18.6 Package Objects and Specifications 477

Chapter 19: Documentation Comments 481

19.1 The Anatomy of a Doc Comment 482
19.2 Tags 483
19.3 Inheriting Method Documentation Comments 489
19.4 A Simple Example 491
19.5 External Conventions 496
19.6 Notes on Usage 497

Chapter 20: The I/O Package 499

20.1 Streams Overview 500
20.2 Byte Streams 501
20.3 Character Streams 507
20.4 InputStreamReader and OutputStreamWriter 512
20.5 A Quick Tour of the Stream Classes 514
20.6 The Data Byte Streams 537
20.7 Working with Files 540
20.8 Object Serialization 549
20.9 The IOException Classes 563
20.10 A Taste of New I/O 565

Chapter 21: Collections 567

21.1 Collections 567
21.2 Iteration 571
21.3 Ordering with Comparable and Comparator 574
21.4 The Collection Interface 575
21.5 Set and SortedSet 577
21.6 List 580
21.7 Queue 585
21.8 Map and SortedMap 587
21.9 enum Collections 594
21.10 Wrapped Collections and the Collections Class 597
21.11 Synchronized Wrappers and Concurrent Collections 602
21.12 The Arrays Utility Class 607
21.13 Writing Iterator Implementations 609
21.14 Writing Collection Implementations 611
21.15 The Legacy Collection Types 616
21.16 Properties 620

Chapter 22: Miscellaneous Utilities 623

22.1 Formatter 624
22.2 BitSet 632
22.3 Observer/Observable 635
22.4 Random 639
22.5 Scanner 641
22.6 StringTokenizer 651
22.7 Timer and TimerTask 653
22.8 UUID 656
22.9 Math and StrictMath 657

Chapter 23: System Programming 661

23.1 The System Class 662
23.2 Creating Processes 666
23.3 Shutdown 672
23.4 The Rest of Runtime 675
23.5 Security 677

Chapter 24: Internationalization and Localization 685

24.1 Locale 686
24.2 Resource Bundles 688
24.3 Currency 694
24.4 Time, Dates, and Calendars 695
24.5 Formatting and Parsing Dates and Times 703
24.6 Internationalization and Localization for Text 708

Chapter 25: Standard Packages 715

25.1 java.awt--The Abstract Window Toolkit 717
25.2 java.applet--Applets 720
25.3 java.beans--Components 721
25.4 java.math--Mathematics 722
25.5 java.net--The Network 724
25.6 java.rmi--Remote Method Invocation 727
25.7 java.security and Related Packages--Security Tools 732
25.8 java.sql--Relational Database Access 732
25.9 Utility Subpackages 733
25.10 javax.* --Standard Extensions 737
25.11 javax.accessibility--Accessibility for GUIs 737
25.12 javax.naming--Directory and Naming Services 738
25.13 javax.sound--Sound Manipulation 739
25.14 javax.swing--Swing GUI Components 740
25.15 org.omg.CORBA--CORBA APIs 740

Appendix A: Application Evolution 741

A.1 Language, Library, and Virtual Machine Versions 741
A.2 Dealing with Multiple Dialects 743
A.3 Generics: Reification, Erasure, and Raw Types 744

Appendix B: Useful Tables 749Further Reading 755Index 761

The story of Java---direct from the creators and Godfather of Java, James Gosling!

° Completely revised for Java 2 Standard Edition 5.0

° Features perspective and commentary from the creators of the Java Programming Language

° Coverage on generics, autoboxing and all new features to J2SE 5.0

Ken Arnold, formerly senior engineer at Sun Microsystems Laboratories, is a leading expert in object-oriented design and implementation. He was one of the original architects of the Jini™ technology, and the lead engineer of Sun's JavaSpaces™ technology.

James Gosling is a Fellow and Chief Technology Officer of Sun's Developer Products group, the creator of the Java programming language, and one of the computer industry's most noted programmers. He is the 1996 recipient of Software Development's "Programming Excellence Award." He previously developed NeWS, Sun's network-extensible window system, and was a principal in the Andrew project at Carnegie Mellon University, where he earned a Ph.D. in computer science.

David Holmes is director of DLTeCH Pty Ltd, located in Brisbane, Australia. He specializes in synchronization and concurrency and was a member of the JSR-166 expert group that developed the new concurrency utilities. He is also a contributor to the update of the Real-Time Specification for Java, and has spent the past few years working on an implementation of that specification.



Your opinions count

Be the first to review this product. Write your review now.