
Explore Java 9 features like jshell, jpms, jlink, http2 client, and process api updates, plus private interface methods, try-with-resources enhancements, and unmodifiable collections.
Explore the Java platform module system and jlink to replace jar-based development with modular runtimes. Learn how modules prevent classpath problems and enable lean runtimes for IoT and microservices.
Explore the basics of the Java 9 HTTP/2 client and the process API updates, highlighting easier HTTP requests and new process handling features.
Learn Java 9 highlights like private methods in interfaces, default and static methods, enhancements to try with resources, and factory methods to create unmodifiable collections with List.of, Set.of, and Map.of.
Explore Java 9 features, including stream api enhancements (takeWhile, dropWhile, three-argument iterate and stream of nullable), diamond operator extensions, safe vararg enhancements, and G1 GC.
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.
Learn how interface static methods work since Java 8, call them via the interface name, and how Java 9 introduces private methods in interfaces for code reuse without exposing them.
Trace the evolution of interfaces from Java 7 through Java 9, covering default methods and private methods, emphasizing code reusability and backward compatibility.
Explore try with resources enhancements in Java, tracing how 1.7 introduced try with resources to reduce boilerplate, eliminate unnecessary finally blocks, and automatically close resources for cleaner code.
Learn how try-with-resources simplifies resource management by allowing multiple auto closable resources separated by semicolons; it ensures automatic closing and eliminates the need for a finally block from Java 7.
Explore Java 9's try-with-resources enhancements that allow resource reference variables created outside the try block to be used inside it, improving readability and reducing code length for multiple resources.
Discover how try with resources evolved from 1.6 to 1.9, enabling auto closable resources and automatic closing of multiple resources to reduce boilerplate and improve readability.
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.
Discover how generics provide type safety and avoid casting headaches, using string lists and diamond operator enhancements introduced in Java 7 to simplify generic code.
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.
Enable the diamond operator for anonymous inner classes in Java 9, unlike 1.8. Show generics with custom classes and iterators, including anonymous inner class examples and compiler behavior.
Learn how the diamond operator evolved from Java 1.7 to 1.9, improving type inference and readability, including its use with anonymous inner classes and partial diamond ideas.
Demonstrate safe varargs annotation enhancements in Java nine, explain vararg methods and heap pollution, and connect concepts from Java seven to Java nine.
Explore the heap pollution problem when using generic type varargs, how internal conversions to object arrays can cause ClassCastException, and how compiler warnings flag unsafe generic vararg usage.
Learn how the SafeVarargs annotation suppresses compiler warnings for generic varargs methods and prevents heap pollution, ensuring safe handling of generic types in Java.
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.
Explore factory methods for creating unmodifiable collections in Java 9, understanding how lists, sets, and maps become immutable to enable safe reuse and memory-efficient design.
Explore how static factory methods create unmodifiable collections in Java 9, including unmodifiable and immutable objects, and their benefits for memory utilization and performance.
Explore factory methods for creating unmodifiable collections in Java 9, using List.of to build immutable lists and learn how null pointer exception and unsupported operation exception govern immutability.
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.
Java nine factory methods create unmodifiable sets with Set.of in one line. They avoid duplicates and nulls; modifications throw UnsupportedOperationException, with duplicates and nulls triggering IllegalArgumentException and NullPointerException.
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.
Explore Java 9 factory methods for creating unmodifiable maps, including map.of for up to ten entries and map.ofEntries for more than ten, using immutable entry objects.
Learn to create unmodifiable maps in Java 9 using map.of and map.ofEntries, and understand that map.entry objects are immutable and mutating them throws an exception.
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.
Understand stream API enhancements, including difference between collections and streams, the 1.8 default stream method, and creating streams from collections to process objects.
Learn how to create and process stream objects using filter, map, and flatMap in Java 8, and explore 1.9 version enhancements with predicate and lambda expressions.
Explore how map uses streams to apply a function to every element, producing a 1-to-1 transformed collection, squaring numbers and collecting to a list, unlike filter which may reduce elements.
Explore stream api enhancements, compare map and flatMap, and learn how to use stream.empty, stream.of, and flatMap to generate multiple outputs (square and cube) and collect them to a list.
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.
Java 9 adds a three-argument iterate method to the stream interface, complementing the Java 8 two-argument form. Introduce initial value, a predicate, and unary operator to generate values.
Explore Java 9 stream API enhancements such as takeWhile, dropWhile, iterate, and stream.ofNullable, and learn how stream.ofNullable helps prevent null pointer exceptions by safely handling null values.
Explore stream api enhancements for maps, using entry sets and stream.ofNullable to extract non-null keys and values while avoiding null pointer errors.
Explore Java 9 stream API enhancements like take while, drop while, three-argument stream.iterate, and stream.ofNullable, building on 1.8 concepts such as filter, map, and flatMap.
Discover JShell, the Java 9 repl tool, a playful playground to learn Java through interactive snippets, hello world examples, and quick code testing.
Explore jshell, Java's repl tool, an interactive console that reads, evaluates, prints, and loops to run Java snippets instantly for beginners and developers.
Discover how JShell provides ten default packages, including java.lang, enabling Math and list operations without imports; learn to view defaults with slash imports and practice basic code snippets.
Explore how JShell's compiler checks syntax, compiles, and executes code, and see its flexible handling of errors like cannot find symbol and checked exceptions.
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 JShell treats every valid Java statement as a snippet, including declarations, prints, and method calls, and how to list active snippets with slash list.
Learn how to list active, startup, and all snippets in JShell, using slash list with -start, -startup, and -all options, and understand scratch variables used for temporary values.
Master jshell snippets in java 9 by listing, executing, and dropping them by id or name, using slash commands and startup snippets, while noting package statements are not allowed.
Understand explicit vs implicit (scratch) variables in JShell, declare and override them, and manage with slash verse and slash drop for scratch variables like $3.
Explore declaring and calling JShell methods, including overloading and varargs, and learn how slash methods list active methods and undeclared variables behave.
Explore JShell methods in action, including dropping specific methods with slash drop, resolving ambiguity with snippet IDs, and understanding overloading and overriding.
Discover how to use an external editor with JShell, including slash set editor and slash edit, and set a permanent Notepad editor for smoother coding.
Learn to configure an external editor for jshell, set a permanent editor with slash set editor retain, and use edit plus as a Java-enabled editor for writing code snippets.
Learn how to declare and use classes, interfaces, and enums in JShell, including creating objects, static interface methods, and using the /types command with an external editor for longer code.
Learn how to load snippets from an external file into JShell and save your current snippets to a file for reuse.
Reload the previous JShell session by using slash reload hyphen restore to copy active snippets into the current session, then reset to defaults with slash reset as needed.
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 by adding your own snippets via the -startup option, combine with default startup snippets, and enable all Java packages for immediate use.
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 how to use jshell shortcuts for autocompletion and variable creation, including tab, shift tab, and auto import, to speed up Java coding.
Explore the Java platform module system (JPMS) introduced in Java nine, including the Jigsaw project and the shift to modular programming in Java development.
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.
Discover how the Java 9 module system fixes classpath issues, eliminates version conflicts, and enhances security by exporting only required packages for strong encapsulation.
Explore four jar file problems—no class dev found error, version conflicts, security, and monolithic size—and how JPMS and jlink enable small, customized runtimes.
Compare jar files and the Java nine module system, emphasize module-info.java, module path vs classpath, and upfront dependency checks to prevent mid-execution errors.
Explore how the Java platform module system tackles jar hell and classpath hell by enforcing reliable configuration, strong encapsulation, and scalable memory efficient performance.
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.
Discover how to create and run your first Java module application using jpms, including module-info.java, a pack, and test.java, and learn to compile and run with module-path and module-source-path.
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.
Master the Java platform module system (jpms) and intermodule dependencies by using module-info.java to declare required modules and exports, enabling encapsulation and cross-module access.
Explore intermodule dependencies with two modules, A and B; A exports pack one via module-info, and B requires A to access that pack.
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.
Explore transitive dependencies in the Java platform module system, showing how requires transitive propagates module access, boosts code reusability, and enhances implied readability across modules.
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 using requires static to make a module mandatory at compile time but optional at runtime, with modules A, B, and C.
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.
Explore how the module graph represents dependencies between Java modules, including transitive and optional dependencies, with examples like A requires B and B requires C, cycles are not allowed.
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.
Explain the aggregator module concept in jpms, showing how a travel agent aggregates visa, transport, lodging, and guide modules via transitive to the use module.
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.
Learn how the Java platform module system resolves dependencies at startup using the module path and show module resolution, ensuring root modules and dependencies are available.
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.
Discover how to use jlink to create a customized setup by combining a demo module with the java.base module, producing a smaller Durga with memory benefits.
Learn to build compact java runtimes with jlink by selecting modules and applying compress levels, then use launcher to run a custom app name from any path.
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