You are previewing Java SE 8 for the Really Impatient.
O'Reilly logo
Java SE 8 for the Really Impatient

Book Description

Eagerly anticipated by millions of programmers, Java SE 8 is the most important Java update in many years. The addition of lambda expressions (closures) and streams represents the biggest change to Java programming since the introduction of generics and annotations.

Now, with Java SE 8 for the Really Impatient, internationally renowned Java author Cay S. Horstmann concisely introduces Java 8’s most valuable new features (plus a few Java 7 innovations that haven’t gotten the attention they deserve). If you’re an experienced Java programmer, Horstmann’s practical insights and sample code will help you quickly take advantage of these and other Java language and platform improvements. This indispensable guide includes

  • Coverage of using lambda expressions (closures) to write computation “snippets” that can be passed to utility functions

  • The brand-new streams API that makes Java collections far more flexible and efficient

  • Major updates to concurrent programming that make use of lambda expressions (filter/map/reduce) and that provide dramatic performance improvements for shared counters and hash tables

  • A full chapter with advice on how you can put lambda expressions to work in your own programs

  • Coverage of the long-awaited introduction of a well-designed date/time/calendar library (JSR 310)

  • A concise introduction to JavaFX, which is positioned to replace Swing GUIs, and to the Nashorn Javascript engine

  • A thorough discussion of many small library changes that make Java programming more productive and enjoyable

  • This is the first title to cover all of these highly anticipated improvements and is invaluable for anyone who wants to write tomorrow’s most robust, efficient, and secure Java code. 

    Table of Contents

    1. About This eBook
    2. Title Page
    3. Copyright Page
    4. Dedication Page
    5. Contents
    6. Preface
    7. About the Author
    8. Chapter 1. Lambda Expressions
      1. 1.1. Why Lambdas?
      2. 1.2. The Syntax of Lambda Expressions
      3. 1.3. Functional Interfaces
      4. 1.4. Method References
      5. 1.5. Constructor References
      6. 1.6. Variable Scope
      7. 1.7. Default Methods
      8. 1.8. Static Methods in Interfaces
      9. Exercises
    9. Chapter 2. The Stream API
      1. 2.1. From Iteration to Stream Operations
      2. 2.2. Stream Creation
      3. 2.3. The filter, map, and flatMap Methods
      4. 2.4. Extracting Substreams and Combining Streams
      5. 2.5. Stateful Transformations
      6. 2.6. Simple Reductions
      7. 2.7. The Optional Type
      8. 2.8. Reduction Operations
      9. 2.9. Collecting Results
      10. 2.10. Collecting into Maps
      11. 2.11. Grouping and Partitioning
      12. 2.12. Primitive Type Streams
      13. 2.13. Parallel Streams
      14. 2.14. Functional Interfaces
      15. Exercises
    10. Chapter 3. Programming with Lambdas
      1. 3.1. Deferred Execution
      2. 3.2. Parameters of Lambda Expressions
      3. 3.3. Choosing a Functional Interface
      4. 3.4. Returning Functions
      5. 3.5. Composition
      6. 3.6. Laziness
      7. 3.7. Parallelizing Operations
      8. 3.8. Dealing with Exceptions
      9. 3.9. Lambdas and Generics
      10. 3.10. Monadic Operations
      11. Exercises
    11. Chapter 4. JavaFX
      1. 4.1. A Brief History of Java GUI Programming
      2. 4.2. Hello, JavaFX!
      3. 4.3. Event Handling
      4. 4.4. JavaFX Properties
      5. 4.5. Bindings
      6. 4.6. Layout
      7. 4.7. FXML
      8. 4.8. CSS
      9. 4.9. Animations and Special Effects
      10. 4.10. Fancy Controls
      11. Exercises
    12. Chapter 5. The New Date and Time API
      1. 5.1. The Time Line
      2. 5.2. Local Dates
      3. 5.3. Date Adjusters
      4. 5.4. Local Time
      5. 5.5. Zoned Time
      6. 5.6. Formatting and Parsing
      7. 5.7. Interoperating with Legacy Code
      8. Exercises
    13. Chapter 6. Concurrency Enhancements
      1. 6.1. Atomic Values
      2. 6.2. ConcurrentHashMap Improvements
      3. 6.3. Parallel Array Operations
      4. 6.4. Completable Futures
      5. Exercises
    14. Chapter 7. The Nashorn JavaScript Engine
      1. 7.1. Running Nashorn from the Command Line
      2. 7.2. Running Nashorn from Java
      3. 7.3. Invoking Methods
      4. 7.4. Constructing Objects
      5. 7.5. Strings
      6. 7.6. Numbers
      7. 7.7. Working with Arrays
      8. 7.8. Lists and Maps
      9. 7.9. Lambdas
      10. 7.10. Extending Java Classes and Implementing Java Interfaces
      11. 7.11. Exceptions
      12. 7.12. Shell Scripting
      13. 7.13. Nashorn and JavaFX
      14. Exercises
    15. Chapter 8. Miscellaneous Goodies
      1. 8.1. Strings
      2. 8.2. Number Classes
      3. 8.3. New Mathematical Functions
      4. 8.4. Collections
      5. 8.5. Working with Files
      6. 8.6. Annotations
      7. 8.7. Miscellaneous Minor Changes
      8. Exercises
    16. Chapter 9. Java 7 Features That You May Have Missed
      1. 9.1. Exception Handling Changes
      2. 9.2. Working with Files
      3. 9.3. Implementing the equals, hashCode, and compareTo Methods
      4. 9.4. Security Requirements
      5. 9.5. Miscellaneous Changes
      6. Exercises
    17. Index