HAPPY BOOKSGIVING
Use code BOOKSGIVING during checkout to save 40%-55% on books and eBooks. Shop now.
Register your product to gain access to bonus material or receive a coupon.
Core Java® has long been recognized as the leading, no-nonsense tutorial and reference for experienced programmers who want to write robust Java code for real-world applications. Now, Core Java®, Volume I—Fundamentals, Tenth Edition, has been extensively updated to reflect the most eagerly awaited and innovative version of Java in years: Java SE 8. Rewritten and reorganized to illuminate new Java SE 8 features, idioms, and best practices, it contains hundreds of example programs—all carefully crafted for easy understanding and practical applicability.
Writing for serious programmers solving real-world problems, Cay Horstmann helps you achieve a deep understanding of the Java language and library. In this first volume of the two-volume work, Horstmann focuses on fundamental language concepts and the foundations of modern user interface programming. You’ll find in-depth coverage of topics ranging from Java object-oriented programming to generics, collections, lambda expressions, Swing UI design, and the latest approaches to concurrency and functional programming. This guide will help you
If you’re an experienced programmer moving to Java SE 8, Core Java®, Tenth Edition, will be your reliable, practical companion—now and for many years to come.
Look for the companion volume, Core Java®, Volume II—Advanced Features, Tenth Edition (ISBN-13: 978-0-13-417729-8), for coverage of Java 8 streams, input and output, XML, databases, annotations, and other advanced topics.
Register your product at informit.com/register for convenient access to downloads, updates, and corrections as they become available.
Dependency Management with Apache Ivy
Please visit the author's site here.
Interfaces, Lambda Expressions, and Inner Classes in Java
Preface xix
Acknowledgments xxv
Chapter 1: An Introduction to Java 1
1.1 Java as a Programming Platform 1
1.2 The Java “White Paper” Buzzwords 2
1.3 Java Applets and the Internet 8
1.4 A Short History of Java 10
1.5 Common Misconceptions about Java 13
Chapter 2: The Java Programming Environment 17
2.1 Installing the Java Development Kit 18
2.2 Using the Command-Line Tools 23
2.3 Using an Integrated Development Environment 26
2.4 Running a Graphical Application 30
2.5 Building and Running Applets 33
Chapter 3: Fundamental Programming Structures in Java 41
3.1 A Simple Java Program 42
3.2 Comments 46
3.3 Data Types 47
3.4 Variables 53
3.5 Operators 56
3.6 Strings 65
3.7 Input and Output 78
3.8 Control Flow 89
3.9 Big Numbers 108
3.10 Arrays 111
Chapter 4: Objects and Classes 129
4.1 Introduction to Object-Oriented Programming 130
4.2 Using Predefined Classes 135
4.3 Defining Your Own Classes 145
4.4 Static Fields and Methods 158
4.5 Method Parameters 164
4.6 Object Construction 171
4.7 Packages 182
4.8 The Class Path 190
4.9 Documentation Comments 194
4.10 Class Design Hints 200
Chapter 5: Inheritance 203
5.1 Classes, Superclasses, and Subclasses 204
5.2 Object: The Cosmic Superclass 228
5.3 Generic Array Lists 244
5.4 Object Wrappers and Autoboxing 252
5.5 Methods with a Variable Number of Parameters 256
5.6 Enumeration Classes 258
5.7 Reflection 260
5.8 Design Hints for Inheritance 283
Chapter 6: Interfaces, Lambda Expressions, and Inner Classes 287
6.1 Interfaces 288
6.2 Examples of Interfaces 302
6.3 Lambda Expressions 314
6.4 Inner Classes 329
6.5 Proxies 350
Chapter 7: Exceptions, Assertions, and Logging 357
7.1 Dealing with Errors 358
7.2 Catching Exceptions 367
7.3 Tips for Using Exceptions 381
7.4 Using Assertions 384
7.5 Logging 389
7.6 Debugging Tips 409
Chapter 8: Generic Programming 415
8.1 Why Generic Programming? 416
8.2 Defining a Simple Generic Class 418
8.3 Generic Methods 421
8.4 Bounds for Type Variables 422
8.5 Generic Code and the Virtual Machine 425
8.6 Restrictions and Limitations 430
8.7 Inheritance Rules for Generic Types 440
8.8 Wildcard Types 442
8.9 Reflection and Generics 450
Chapter 9: Collections 459
9.1 The Java Collections Framework 460
9.2 Concrete Collections 472
9.3 Maps 497
9.4 Views and Wrappers 509
9.5 Algorithms 517
9.6 Legacy Collections 528
Chapter 10: Graphics Programming 537
10.1 Introducing Swing 538
10.2 Creating a Frame 543
10.3 Positioning a Frame 546
10.4 Displaying Information in a Component 554
10.5 Working with 2D Shapes 560
10.6 Using Color 569
10.7 Using Special Fonts for Text 573
10.8 Displaying Images 582
Chapter 11: Event Handling 587
11.1 Basics of Event Handling 587
11.2 Actions 607
11.3 Mouse Events 616
11.4 The AWT Event Hierarchy 624
Chapter 12: User Interface Components with Swing 629
12.1 Swing and the Model-View-Controller Design Pattern 630
12.2 Introduction to Layout Management 638
12.3 Text Input 648
12.4 Choice Components 657
12.5 Menus 678
12.6 Sophisticated Layout Management 699
12.7 Dialog Boxes 730
12.8 Troubleshooting GUI Programs 770
Chapter 13: Deploying Java Applications 779
13.1 JAR Files 780
13.2 Storage of Application Preferences 788
13.3 Service Loaders 800
13.4 Applets 802
13.5 Java Web Start 824
Chapter 14: Concurrency 839
14.1 What Are Threads? 840
14.2 Interrupting Threads 851
14.3 Thread States 855
14.4 Thread Properties 858
14.5 Synchronization 862
14.6 Blocking Queues 898
14.7 Thread-Safe Collections 905
14.8 Callables and Futures 915
14.9 Executors 920
14.10 Synchronizers 934
14.11 Threads and Swing 937
Appendix 953
Index 957