What's New in Java SE 8
Ce cours n'est actuellement pas prévu sur le calendrier ouvert, mais peuvent être organisé sur demande.
Demande de coursNombre de jours
1 day(s)
Audience
Java developers and architects who wish to delve into the new features and enhancements of Java SE 8
Prerequisites
Proficient with developing Java programs by using Java SE 7 or earlier
Objectives
Being aware of the new features and enhancements of Java SE 8
Methods
Classroom training with hands on exercises
Description
Java developers and architects who wish to delve into the new features and enhancements of Java SE 8
Contents
Agenda
- Agenda
Introduction
- The Java SE 8 Release
Interface Improvements
- Interfaces (As We Knew Them Up To SE7)
- Example of such an interface and its implementation
- Problems with this approach
- Default methods
- Example of a default method (not overwriting impl)
- Example of a default method (overwriting method)
- When executing method with default signature
- Who wins?
- Three Resolution Rules To Know
- Exercise on default methods.
- A real life example
- Static methods
- Static methods : a sample interface
- Static methods : a sample implementation
- Static Methods : a sample output
- Static Methods : Important Points
- (Revisiting the) Anonymous Inner Classes
- Functional Interfaces
- Functional interfaces: things to be aware of
- Exercise
Lambda?s
- Introduction to Lambda?s
- Syntax of Lambda Expressions
- Syntax of Lambda Expressions: Some More Rules
- Replacing Anonymous Inner Class
- Calling a Functional Interface With a Lambda Expression
- Method References
- Method References: IntPredicates class
- Using Lambdas to Run the Code
- Using Method Reference to Run the Code
- Exercise
- Exercise: Example prime detection
- Searching by Criteria
- Using Aggregate Operations
- Difference between Aggregate Operations an Iterators
- Target Typing
- Target Typing: Example
- Target Typing: Example (continued)
- Serialization
- Serialization: Advanced
- Lambda Expressions in GUI Applications
- java.util.function
- Java.util.function and lambda?s
- Supplier & Lambdas
- Consumer & Lambdas
- BiConsumer & Lambda
- Predicate & Lambda
- UnaryOperator & Lambda
- Functional Interface Naming Guide
- Functional Interface Naming Guide (Textually)
- Functional Interface Naming Guide (Methods)
Streams
- What is a Stream?
- Streams versus Collections
- Getting Streams from Collections
- Sequential Streams
- Parallel Streams
- The Fork/Join Mechanism
- Why Not Always Parallel
- Map, Filter, Reduce: An Example
- Map, Filter, Reduce : e.g. a List (same for other Collections)
- Java 8 and Big Data?
- Pipelines and Streams
- Collectors
- Specialized Streams
- Exercise
Java Date / Time API
- Old Date Classes: a root cause of trouble
- Old Date Classes: mutable objects
- Example
- Example of Defensive Copy
- java.time: Instant and Duration
- java.Time : LocalDate and Period
- java.time: TemporalAdjusters
- java.time: LocalTime / ZonedTime
- Formatting Dates: DateTimeFormatter
- Bridges Between the API?s
- Exercise
Collection API Additions
- Parallel Array Sorting
- Sorting Collections
- Bulk Data Operations on a Collection
- Exercise
Overview of Concurrence API Additions
- Two New Interfaces in java.util.concurrent
- Four New Classes in java.util.concurrent
- New Methods in java.util.concurrent.ConcurrentHashMap
- New classes in java.util.concurrent.atomic
- New methods in java.util.concurrent.ForkJoinPool
- New class java.util.concurrent.locks.StampedLock
Overview of IO/NIO API Additions
- IO/NIO API Additions
- Reading files (line per line): Cool new approach
Overview of Reflection and Annotation Changes
- Annotation changes: multiple annotations
- Creating your own repeatable annotation
- Annotation Changes: Allow Annotations on Types
- Reflection Changes
Other Enhancements
- Generic Type Inference Improvements
- Strings
- Comparators
- Numbers
- Hash code
- Small VM
- Nashorn Javascript Engine
- Removal of the Permanent Generation
- Metaspace Tuning
- JavaFX 8
Rounding Up
- What Have We Learned?
- Questions