Session: The Java Module system (Jigsaw)
Lesson: Why JigSaw?
- Problems with Classpath
- Encapsulation and the public access modifier
- Application memory footprint
- Java 8’s compact profile
- Using internal JDK APIs
Lesson: Introduction to the Module System
- Introduce Project Jigsaw
- Classpath and Encapsulation
- The JDK internal APIs
- Java 9 Platform modules
- Defining application modules
- Define module dependencies
- Implicit dependencies
- Implied Readability
- Exporting packages
Lesson: The Module Descriptor
- Define module requirements
- Explain qualified exports
- Open modules for reflection
- Use ServiceLoader
- The provides and uses keywords
Lesson: Working with Modules
- Being backwards compatible
- The ModulePath and ClassPath
- Unnamed Modules
- Automatic Modules
- The JLink tool
Session: JShell
Lesson: JShell
- Introduction to JShell
- Running Expressions in JShell
- Importing packages
- Defining methods and types
- Using the JShell editor
- Save and loading state
Session: Accessing Resources
Lesson: Java Data Access JDBC API
- Connecting to the Database
- Statement and PreparedStatement
- ResultSet
- Executing Inserts, Updates, and Deletes
- Controlling Transactions and Concurrency
Lesson: Introduction to Annotations
- Annotations Overview
- Working with Java Annotations
Lesson: The HTTP Client API
- Making HTTP (Hypertext Transfer Protocol) requests
- Explain Incubator Modules
- HTTP2 Client API
- Introduce WebSockets
- Communicate with WebSocket endpoints
Lesson: Introduction to CDI
- Context Dependency Injection (CDI)
- The @Inject Annotation
- The @Default Annotation
- The @Alternative Annotation
- The @Named Annotation
Lesson: Overview of JPA
- Introduce the Java Persistence API (JPA)
- Benefits of Using an ORM framework
- Hibernate and JPA
Session: More Java
Lesson: Other New Java Features
- Enhancements on the Optional class
- Improvements made in the Process API
- The Stack-Walking API
- The HTTP2 Client
- The Multi-Resolution API
Lesson: Performance Optimizations
- Ahead-Of-Time Compilation
- Hotspot Diagnostic commands
- Variable and Method Handles
Session: Multithreading and Concurrency
Lesson: Introduction to Multithreading and Concurrency
- Principles of Multithreading
- The Thread class and Runnable interface
- Explore thread synchronization
- Introduce the Java Concurrency API
Lesson: Concurrent Java
- Thread management using Executors
- The common thread-pool
- Submitting and controlling asynchronous tasks
- Explore the locking API
Lesson: Non-blocking asynchronous tasks
- The CompletableFuture
- Define non-blocking processes
- Exception handling in multithreaded processes
- The Fork-Join framework
Session: Reflection and References
Lesson: Introspection and Reflection
- Reflection classes
- Introspection
- Dynamic invocation of methods
- Using annotations
- Type annotations
- Receiver parameter
Lesson: Reference Objects
- List the kinds of object references available in Java
- Introduce Weak, Soft and PhantomReference
- Explain the ReferenceQueue
Additional Topics: Time Permitting
Lesson: Memory Management
- Understand memory management in Java
- Discuss the various garbage collectors
- The Garbage-First (G1) Garbage Collector
- The No-Op and ZGS Garbage Collectors
Lesson: Project Lombok
- Introduce the Lombok Project
- Configure the Lombok Annotation processor
- Introduce some of the commonly used Lombok annotations