
Explore private methods within interfaces introduced in Java 9, and understand how interface evolution from 1.8 to 1.9 enables this feature without breaking implementations.
Explain the purpose and rules of interface default methods, including conflict resolution with multiple interfaces; introduce Java 9 private interface methods for code reuse without exposing implementations.
Demonstrate private methods in interfaces (Java 9) to enable code reuse without affecting implementations, compare with Java 8 default and static interface methods, and discuss log4j logging levels.
Unpack the diamond operator and its Java nine enhancements, tracing its 1.7 introduction and 1.9 improvements under milling Project Coin, and explore generics' type safety and type casting implications.
Explore the diamond operator and its type inference to simplify generics, with 1.7 improvements and 1.9 additions that allow diamond usage with anonymous inner classes, boosting readability.
Explore SafeVarargs enhancements across Java 7 to 9, including applicability to constructors, static and final methods, and from Java 9 onward private methods, to suppress heap pollution warnings.
Java 9 adds unmodifiable lists via List.of, with 0 to 10 element overloads and a varargs option. These lists are immutable; null elements throw NullPointerException and modifications throw UnsupportedOperationException.
Learn to create unmodifiable maps in java 9 with map.of in one line, replacing 1.8 code, and heed constraints: no null keys/values and no duplicate keys.
Java 9 introduces factory methods like list.of, set.of, and map.of to create unmodifiable collections in one line, while disallowing nulls and duplicates and throwing exceptions on modification.
Explore stream api enhancements by using flatMap to generate zero or multiple values from inputs, applying even/odd logic. Preview Java 9 additions like take while, drop while, iterate, and ofNullable.
Explore java 9 stream api enhancements: takeWhile, dropWhile, stream.iterate, and stream.ofNullable, and compare takeWhile with filter—stop on first false predicate versus processing all elements.
Explore Java 9 stream API enhancements by comparing filter and takeWhile, and learn how takeWhile stops processing when a predicate fails, with examples and notes on dropWhile.
Explains takeWhile and dropWhile in Java 9 streams, showing how they stop processing when the predicate fails and drop elements while the predicate holds.
Learn to access JShell help and version information, explore commands and options from the command prompt and JShell console, and use slash help, slash intro, and slash list.
learn how to use jar files in jshell by making the oracle jdbc six jar available via classpath, environment variables, or shell options to connect and fetch employee data.
Learn to customize jshell startup with the printing option and startup snippets, using print and println shortcuts that internally call System.out.println, with 21 overloaded methods and available startup values.
Learn the Java platform module system, a jar replacement in Java 9, and how module-info.java defines a module as a group of packages.
Explore how Java 9's JPMS addresses jar file problems by enforcing module dependencies declared in module-info.java. Understand how modules prevent version conflicts, security issues, and monolithic bloat.
Modules are groups of packages with a required module-info.java. Use requires and exports to declare dependencies and package visibility for correct compilation and execution.
Explore how to build a first Java module based application with the Java platform module system, covering mandatory module-info.java, mandatory package statements, and compile and run approaches.
Learn JPMS inter-module dependencies, including exporting packages, using requires, and using the upgrade module path option to run modules from multiple directories.
Explore how the Java Platform Module System enforces dependencies at startup, preventing no class not found errors, via module-info.java, exports, and requires in multi-module projects.
Demonstrate how JPMS uses requires transitive to propagate dependencies, letting Module C access Module B and Module A via Module B, unlike case without transitive where Module A is unavailable.
Explore optional dependencies in the Java Platform Module System, where compile-time checks are mandatory but runtime can succeed without a dependent module, using static to mark optional modules.
Explore cyclic dependencies in the Java 9 modular system, showing how module A requires module B and module B requires module A, which triggers a cyclic dependency error.
Discover the Java platform module system (JPMS) by learning how exports control package visibility, and how qualified exports restrict access to specific modules such as Module A and Module B.
Identify observable modules as those observed by the JVM at runtime, including predefined java modules and those on the module path. Learn to list them with java --list-modules.
Explore how JPMS prevents package naming conflicts by ensuring two modules cannot share the same package name, avoiding compile-time errors, version conflicts, and runtime abnormality, unlike traditional jar files.
Explore jlink, Java's runtime image tool, to build a custom, small runtime by including only required modules and dependencies, ideal for IoT and microservices.
After completing this course,Student will get Overview of new features
introduced
in Java 9. The following topics discussed in detail. Java 7 and 8
features also explained based on requirement. Hence even student not
familiar with old versions,still he can able to attend the course.
1. Private Methods in Interfaces
2. Try With Resources Enhancements
3. Diamond Operator Enhancements
4. SafeVarargs Annotation Enhancements
5. Factory Methods for Creating unmodifiable Collections
6. Stream API Enhancements
7. The Java Shell(RPEL)
8. The Java Platform Module System(JPMS)
9. JLINK(JAVA LINKER)
10. Process API Updates
11. HTTP/2 Client