Overview
The Transitioning to Java course is designed for developers currently working on the Java 6 or Java 7 platform, who need to migrate their skills or applications to Java 8. The course helps participants master the skills necessary to implement the latest features and benefits of Java 8 and enable them to be effective Java 8 developers. The course covers Java 8 features such as functional programming, anonymous functions, lambda expressions and default methods, streams and collectors, new date/time API, StringJoiner and repeating annotations.
What You'll Learn
- What functional programming means and what it brings to the table
- How Lambda expressions and functional interfaces can greatly enhance other aspects of Java
- Explore the new ‘features’ of the Collection API
- To use the new Stream constructs to work with Collections and Collectors
- How to work with default methods and pass methods as arguments
- How to use the new features to support concurrency in multi-code systems
- To work with the new Date/Time API and other new features
Curriculum
- Overview of Java 8 features and enhancements
- Anonymous functions, Streams
- Interfaces in Java 8
- Default methods
- Static methods
- Multiple Inheritance?
- Exercise: Interfaces
- Functional vs OO Programming
- Anonymous Inner-classes
- Utility Methods
- Lambda Expressions
- Lambda Expression Syntax
- Functional Interfaces
- Type Inference in Java 8
- Method references
- Exercise: Using Lambda
- Introduce the ConcurrentHashMap
- Lambda expressions and Collections
- Exercise: Functional Collections
- Processing Collections of data
- The Stream interface
- Reduction and Parallelism
- Filtering collection data
- Sorting Collection data
- Map collection data
- Find elements in Stream
- Numeric Streams
- Create infinite Streams
- Sources for using Streams
- Exercise: Working with Streams
- Creating Collections from a Stream
- Group elements in the Stream
- Multi-level grouping of elements
- Partitioning Streams
- Exercise: Collecting
- Introduce the new Date/Time API
- LocalDate, LocalDateTime, etc.
- Formatting Dates
- Working with time zones
- Manipulate date/time values
- Exercise: Agenda
- Introduce Optional
- Implement Optional attributes
- Lambda expressions and Optional
- Exercise: Optional
- StringJoiner
- Repeating and Type Annotations
- Parallel Array Sorting
- Improved type inference
- Method parameter reflection
- Updated command line tooling
- Exercise: Reflection
- Exercise: Annotation Processing
- The common thread pool
- Atomic variables
- LongAdder and LongAccumulator
- CompletableFuture
- Non-blocking asynchronous tasks
- Exercise: CompletableFuture
- Working with JavaScript and Java
- Accessing Nashorn
- Executing JavaScript from Java
- Executing Java from JavaScript
- Implementing a Java Interface
- Alternatives to Nashorn
- Exercise: Using JavaScript