
Java in a Nutshell
Description
Alles über E-Books | Antworten auf Fragen rund um E-Books, Kopierschutz und Dateiformate finden Sie in unserem Info- & Hilfebereich.
This updated edition of the Nutshell guide not only helps experienced Java programmers get the most out of versions through Java 17, it also serves as a learning path for new developers. Chock-full of examples that demonstrate how to take complete advantage of modern Java APIs and development best practices, this thoroughly revised book includes new material on recent enhancements to the Java object model that every developer should know about.
The first section provides a fast-paced, no-fluff introduction to the Java programming language and the core runtime aspects of the Java platform. The second section is a reference to core concepts and APIs that explains how to perform real programming work in the Java environment.
- Get up to speed on language details through Java 17
- Learn object-oriented programming using basic Java syntax
- Explore generics, enumerations, annotations, and lambda expressions
- Understand techniques used in object-oriented design
- Examine how concurrency and memory are intertwined
- Work with Java collections and handle common data formats
- Delve into Java''s latest I/O APIs including asynchronous channels
- Become familiar with development tools in OpenJDK
More details
Other editions
Additional editions

Content
- Intro
- Copyright
- Table of Contents
- Foreword
- Preface
- Changes in the Eighth Edition
- Contents of This Book
- Related Books
- Conventions Used in This Book
- Using Code Examples
- O'Reilly Online Learning
- How to Contact Us
- Acknowledgments
- Part I. Introducing Java
- Chapter 1. Introduction to the Java Environment
- The Language, the JVM, and the Ecosystem
- What Is the Java Language?
- What Is the JVM?
- What Is the Java Ecosystem?
- The Lifecycle of a Java Program
- Frequently Asked Questions
- Comparing Java to Other Languages
- Java Compared to JavaScript
- Java Compared to Python
- Java Compared to C
- Java Compared to C++
- Answering Some Criticisms of Java
- Overly Verbose
- Slow to Change
- Performance Problems
- Insecure
- Too Corporate
- A Brief History of Java and the JVM
- Summary
- Chapter 2. Java Syntax from the Ground Up
- Java Programs from the Top Down
- Lexical Structure
- The Unicode Character Set
- Case Sensitivity and Whitespace
- Comments
- Reserved Words
- Identifiers
- Literals
- Punctuation
- Primitive Data Types
- The boolean Type
- The char Type
- Integer Types
- Floating-Point Types
- Primitive Type Conversions
- Expressions and Operators
- Operator Summary
- Arithmetic Operators
- String Concatenation Operator
- Increment and Decrement Operators
- Comparison Operators
- Boolean Operators
- Bitwise and Shift Operators
- Assignment Operators
- The Conditional Operator
- The instanceof Operator
- Special Operators
- Statements
- Expression Statements
- Compound Statements
- The Empty Statement
- Labeled Statements
- Local Variable Declaration Statements
- The if/else Statement
- The switch Statement
- The switch Expression
- The while Statement
- The do Statement
- The for Statement
- The foreach Statement
- The break Statement
- The continue Statement
- The return Statement
- The synchronized Statement
- The throw Statement
- The try/catch/finally Statement
- The try-with-resources Statement
- The assert Statement
- Methods
- Defining Methods
- Method Modifiers
- Checked and Unchecked Exceptions
- Variable-Length Argument Lists
- Introduction to Classes and Objects
- Defining a Class
- Creating an Object
- Using an Object
- Object Literals
- Lambda Expressions
- Arrays
- Array Types
- Creating and Initializing Arrays
- Using Arrays
- Multidimensional Arrays
- Reference Types
- Reference Versus Primitive Types
- Manipulating Objects and Reference Copies
- Comparing Objects
- Boxing and Unboxing Conversions
- Packages and the Java Namespace
- Package Declaration
- Globally Unique Package Names
- Importing Types
- Importing Static Members
- Java Source File Structure
- Defining and Running Java Programs
- Summary
- Chapter 3. Object-Oriented Programming in Java
- Overview of Classes and Records
- Basic OO Definitions
- Records
- Other Reference Types
- Class Definition Syntax
- Fields and Methods
- Field Declaration Syntax
- Class Fields
- Class Methods
- Instance Fields
- Instance Methods
- How the this Reference Works
- Creating and Initializing Objects
- Defining a Constructor
- Defining Multiple Constructors
- Invoking One Constructor from Another
- Field Defaults and Initializers
- Record Constructors
- Subclasses and Inheritance
- Extending a Class
- Superclasses, Object, and the Class Hierarchy
- Subclass Constructors
- Constructor Chaining and the Default Constructor
- Hiding Superclass Fields
- Overriding Superclass Methods
- Sealed Classes
- Data Hiding and Encapsulation
- Access Control
- Data Accessor Methods
- Abstract Classes and Methods
- Reference Type Conversions
- Modifier Summary
- Summary
- Chapter 4. The Java Type System
- Interfaces
- Defining an Interface
- Extending Interfaces
- Implementing an Interface
- Records and Interfaces
- Sealed Interfaces
- Default Methods
- Marker Interfaces
- Java Generics
- Introduction to Generics
- Generic Types and Type Parameters
- Diamond Syntax
- Type Erasure
- Bounded Type Parameters
- Introducing Covariance
- Wildcards
- Generic Methods
- Compile and Runtime Typing
- Using and Designing Generic Types
- Enums and Annotations
- Enums
- Annotations
- Defining Custom Annotations
- Type Annotations
- Lambda Expressions
- Lambda Expression Conversion
- Method References
- Functional Programming
- Lexical Scoping and Local Variables
- Nested Types
- Static Member Types
- Nonstatic Member Classes
- Local Classes
- Anonymous Classes
- Describing the Java Type System
- Nominal Typing
- Nondenotable Types and var
- Summary
- Chapter 5. Introduction to Object-Oriented Design in Java
- Java Values
- Important Common Methods
- toString()
- equals()
- hashCode()
- Comparable::compareTo()
- clone()
- Constants
- Working with Fields
- Field Inheritance and Accessors
- Singleton
- Factory Methods
- Builders
- Interfaces Versus Abstract Classes
- Do Default Methods Change Java's Inheritance Model?
- OOD Using Lambdas
- Lambdas Versus Nested Classes
- Lambdas Versus Method References
- OOD Using Sealed Types
- OOD Using Records
- Instance Methods or Class Methods?
- A word about System.out.println()
- Composition Versus Inheritance
- Exceptions and Exception Handling
- Safe Java Programming
- Chapter 6. Java's Approach to Memory and Concurrency
- Basic Concepts of Java Memory Management
- Memory Leaks in Java
- Introducing Mark-and-Sweep
- How the JVM Optimizes Garbage Collection
- Evacuation
- Compaction
- The HotSpot Heap
- G1
- ParallelOld
- Serial
- Shenandoah
- ZGC
- Finalization
- Finalization Details
- Java's Support for Concurrency
- Thread Lifecycle
- Visibility and Mutability
- Exclusion and Protecting State
- volatile
- Useful Methods of Thread
- Deprecated Methods of Thread
- Working with Threads
- Summary
- Part II. Working with the Java Platform
- Chapter 7. Programming and Documentation Conventions
- Naming and Capitalization Conventions
- Practical Naming
- Java Documentation Comments
- Structure of a Doc Comment
- Doc-Comment Tags
- Inline Doc-Comment Tags
- Cross-References in Doc Comments
- Doc Comments for Packages
- Doclets
- Conventions for Portable Programs
- Summary
- Chapter 8. Working with Java Collections
- Introduction to Collections API
- The Collection Interface
- The Set Interface
- The List Interface
- The Map Interface
- The Queue and BlockingQueue Interfaces
- Adding Elements to Queues
- Removing Elements from Queues
- Utility Methods
- Arrays and Helper Methods
- Java Streams and Lambda Expressions
- Functional Approaches
- The Streams API
- Summary
- Chapter 9. Handling Common Data Formats
- Text
- Special Syntax for Strings
- String Immutability
- String Formatting
- Regular Expressions
- Numbers and Math
- How Java Represents Integer Types
- Java and Floating-Point Numbers
- Java's Standard Library of Mathematical Functions
- Date and Time
- Introducing the Java 8 Date and Time API
- Queries
- Adjusters
- Timezones
- Legacy Date and Time
- Summary
- Chapter 10. File Handling and I/O
- Classic Java I/O
- Files
- I/O Streams
- Readers and Writers
- try-with-resources Revisited
- Problems with Classic I/O
- Modern Java I/O
- Files
- Path
- NIO Channels and Buffers
- ByteBuffer
- Mapped Byte Buffers
- Async I/O
- Future-Based Style
- Callback-Based Style
- Watch Services and Directory Searching
- Networking
- HTTP
- TCP
- IP
- Summary
- Chapter 11. Classloading, Reflection, and Method Handles
- Class Files, Class Objects, and Metadata
- Examples of Class Objects
- Class Objects and Metadata
- Phases of Classloading
- Loading
- Verification
- Preparation and Resolution
- Initialization
- Secure Programming and Classloading
- Applied Classloading
- Classloader Hierarchy
- Reflection
- When to Use Reflection
- How to Use Reflection
- Dynamic Proxies
- Method Handles
- MethodType
- Method Lookup
- Invoking Method Handles
- Chapter 12. Java Platform Modules
- Why Modules?
- Modularizing the JDK
- Writing Your Own Modules
- Basic Modules Syntax
- Building a Simple Modular Application
- The Module Path
- Automatic Modules
- Open Modules
- Providing Services
- Multi-Release JARs
- Converting to a Multi-Release JAR
- Migrating to Modules
- Custom Runtime Images
- Issues with Modules
- Unsafe and Related Problems
- Lack of Versioning
- Slow Adoption Rates
- Summary
- Chapter 13. Platform Tools
- Command-Line Tools
- Introduction to JShell
- Introduction to Java Flight Recorder (JFR)
- Summary
- Appendix A. Beyond Java 17
- Long-Term JDK Projects
- Amber
- Java 18
- Panama
- Java 19
- Loom
- Future Java
- Valhalla
- Cloud-Native Java
- Index
System requirements
File format: ePUB
Copy protection: Adobe-DRM (Digital Rights Management)
System requirements:
- Computer (Windows; MacOS X; Linux): Install the free reader Adobe Digital Editions prior to download (see eBook Help).
- Tablet/smartphone (Android; iOS): Install the free app Adobe Digital Editions or the app PocketBook before downloading (see eBook Help).
- E-reader: Bookeen, Kobo, Pocketbook, Sony, Tolino and many more (not Kindle).
The file format ePub works well for novels and non-fiction books – i.e., „flowing” text without complex layout. On an e-reader or smartphone, line and page breaks automatically adjust to fit the small displays.
This eBook uses Adobe-DRM, a „hard” copy protection. If the necessary requirements are not met, unfortunately you will not be able to open the eBook. You will therefore need to prepare your reading hardware before downloading.
Please note: We strongly recommend that you authorise using your personal Adobe ID after installation of any reading software.
For more information, see our ebook Help page.