Core Java: Fundamentals, Volume 1, 12th edition

Published by Oracle Press (December 21, 2021) © 2022

  • Cay S. Horstmann San Jose State

eTextbook

per month

  • Anytime, anywhere learning with the Pearson+ app
  • Easy-to-use search, navigation and notebook
  • Simpler studying with flashcards
$47.99

  • A print text (hardcover or paperback) 
  • Free shipping
  • Also available for purchase as an ebook from all major ebook resellers, including InformIT.com

The #1 Java Guide for Serious Programmers: Fully Updated through Java 17

Core Java, Volume I: Fundamentals, Twelfth Edition, is the definitive guide to writing robust, maintainable code. Whatever version of Java students are using--up to and including Java 17--this book will help them achieve a deep and practical understanding of the language and APIs. With hundreds of realistic examples, Cay S. Horstmann reveals the most powerful and e ffective ways to get the job done.

This book is written for readers with prior programming experience who are looking for in-depth coverage of the Java language and platform. Students will learn about all language features in detail, including the recent improvements in Java 17. The applied chapters and code examples cover the most up-to-date capabilities of the vast Java library. For 25 years, Core Java has prepared serious programmers for serious Java programming.

This first of two volumes offers in-depth coverage of fundamental Java programming, including object-oriented programming, generics, collections, lambda expressions, concurrency, and functional programming. Classic material for Swing UI programming is included for those who need it. This edition's new content covers text blocks, switch enhancements, records, pattern matching for instance of, sealed classes, and more.

  • Master foundational techniques, idioms, and best practices for writing superior Java code
  • Leverage the power of interfaces, lambda expressions, and inner classes
  • Harden programs through effective exception handling and debugging
  • Write safer, more reusable code with generic programming
  • Improve performance and efficiency with Java's standard collections
  • Explore simple programs with JShell and assemble complex programs with archives and modules
  • Build cross-platform GUIs with the Swing toolkit
  • Fully utilize multicore processors with Java's powerful concurrency model

See Core Java, Volume II: Advanced Features, Twelfth Edition (coming in 2022), for expert coverage of Java 17 enterprise features, the module system, annotations, networking, security, and advanced UI programming.

Register this book for convenient access to downloads, updates, and/or corrections as they become available. See inside book for details.

  • Master foundational techniques, idioms, and best practices for writing superior Java code
  • Leverage the power of interfaces, lambda expressions, and inner classes
  • Harden programs through effective exception handling and debugging
  • Write safer, more reusable code with generic programming
  • Improve performance and efficiency with Java's standard collections
  • Build cross-platform GUIs with the Swing toolkit
  • Fully utilize multicore processors with Java's improved concurrency

Completely new sections on:

  • Text blocks
  • Switch enhancements
  • Records
  • Pattern matching for instanceof
  • Sealed classes
Preface xxi
Acknowledgments xxvii


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 9
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 17
2.2 Using the Command-Line Tools 22
2.3 Using an Integrated Development Environment 27
2.4 JShell 30

Chapter 3: Fundamental Programming Structures in Java 35
3.1 A Simple Java Program 36
3.2 Comments 39
3.3 Data Types 40
3.4 Variables and Constants 46
3.5 Operators 51
3.6 Strings 61
3.7 Input and Output 76
3.8 Control Flow 85
3.9 Big Numbers 106
3.10 Arrays 109

Chapter 4: Objects and Classes 125
4.1 Introduction to Object-Oriented Programming 126
4.2 Using Predefined Classes 132
4.3 Defining Your Own Classes 141
4.4 Static Fields and Methods 156
4.5 Method Parameters 163
4.6 Object Construction 170
4.7 Records 181
4.8 Packages 186
4.9 JAR Files 198
4.10 Documentation Comments 204
4.11 Class Design Hints 210

Chapter 5: Inheritance 213
5.1 Classes, Superclasses, and Subclasses 214
5.2 Object: The Cosmic Superclass 235
5.3 Generic Array Lists 251
5.4 Object Wrappers and Autoboxing 259
5.5 Methods with a Variable Number of Parameters 263
5.6 Abstract Classes 265
5.7 Enumeration Classes 271
5.8 Sealed Classes 273
5.9 Reflection 279
5.10 Design Hints for Inheritance 308

Chapter 6: Interfaces, Lambda Expressions, and Inner Classes 311
6.1 Interfaces 312
6.2 Lambda Expressions 338
6.3 Inner Classes 357
6.4 Service Loaders 376
6.5 Proxies 378

Chapter 7: Exceptions, Assertions, and Logging 387
7.1 Dealing with Errors 388
7.2 Catching Exceptions 397
7.3 Tips for Using Exceptions 411
7.4 Using Assertions 415
7.5 Logging 420
7.6 Debugging Tips 441

Chapter 8: Generic Programming 447
8.1 Why Generic Programming? 448
8.2 Defining a Simple Generic Class 450
8.3 Generic Methods 453
8.4 Bounds for Type Variables 454
8.5 Generic Code and the Virtual Machine 457
8.6 Restrictions and Limitations 462
8.7 Inheritance Rules for Generic Types 472
8.8 Wildcard Types 475
8.9 Reflection and Generics 483

Chapter 9: Collections 497
9.1 The Java Collections Framework 498
9.2 Interfaces in the Collections Framework 508
9.3 Concrete Collections 510
9.4 Maps 535
9.5 Copies and Views 548
9.6 Algorithms 558
9.7 Legacy Collections 569

Chapter 10: Graphical User Interface Programming 581
10.1 A History of Java User Interface Toolkits 582
10.2 Displaying Frames 583
10.3 Displaying Information in a Component 590
10.4 Event Handling 614
10.5 The Preferences API 639

Chapter 11: User Interface Components with Swing 647
11.1 Swing and the Model-View-Controller Design Pattern 648
11.2 Introduction to Layout Management 652
11.3 Text Input 658
11.4 Choice Components 667
11.5 Menus 686
11.6 Sophisticated Layout Management 705
11.7 Dialog Boxes 721

Chapter 12: Concurrency 747
12.1 What Are Threads? 748
12.2 Thread States 753
12.3 Thread Properties 757
12.4 Synchronization 764
12.5 Thread-Safe Collections 797
12.6 Tasks and Thread Pools 815
12.7 Asynchronous Computations 830
12.8 Processes 847

Appendix 855

Index 861
Cay S. Horstmann is author of Modern JavaScript for the Impatient (2020), Core Java® SE 9 for the Impatient, Second Edition (2017), Scala for the Impatient, Second Edition (2016), and Java SE 8 for the Really Impatient (2014), all from Addison-Wesley. He has written more than a dozen other books for professional programmers and computer science students. He is an emeritus professor of computer science at San Jose State University and a Java Champion.

Need help? Get in touch

Pearson+

All in one place. Pearson+ offers instant access to eTextbooks, videos and study tools in one intuitive interface. Students choose how they learn best with enhanced search, audio and flashcards. The Pearson+ app lets them read where life takes them, no wi-fi needed. Students can access Pearson+ through a subscription or their MyLab or Mastering course.

Video
Play
Privacy and cookies
By watching, you agree Pearson can share your viewership data for marketing and analytics for one year, revocable by deleting your cookies.

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.Â