<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Java9 on Devops Monk</title><link>https://devops-monk.com/tags/java9/</link><description>Recent content in Java9 on Devops Monk</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Mon, 04 May 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://devops-monk.com/tags/java9/index.xml" rel="self" type="application/rss+xml"/><item><title>Collection Factory Methods (JEP 269): Immutable List, Set, and Map</title><link>https://devops-monk.com/tutorials/java11/collection-factory-methods/</link><pubDate>Mon, 04 May 2026 00:00:00 +0000</pubDate><guid>https://devops-monk.com/tutorials/java11/collection-factory-methods/</guid><description>Why Collection Factory Methods? Before Java 9, creating a small immutable collection was tedious:
// Java 8 — three lines, two classes, mutable intermediate List&amp;lt;String&amp;gt; names = Collections.unmodifiableList( Arrays.asList(&amp;#34;Alice&amp;#34;, &amp;#34;Bob&amp;#34;, &amp;#34;Charlie&amp;#34;) ); // Java 8 — even worse for Map Map&amp;lt;String, Integer&amp;gt; scores = new HashMap&amp;lt;&amp;gt;(); scores.put(&amp;#34;Alice&amp;#34;, 90); scores.put(&amp;#34;Bob&amp;#34;, 85); Map&amp;lt;String, Integer&amp;gt; immutableScores = Collections.unmodifiableMap(scores); JEP 269 (Java 9) introduced static factory methods that create truly immutable collections with a single expression:</description></item><item><title>Garbage Collection: G1GC, ZGC, Epsilon, and AppCDS</title><link>https://devops-monk.com/tutorials/java11/garbage-collection/</link><pubDate>Mon, 04 May 2026 00:00:00 +0000</pubDate><guid>https://devops-monk.com/tutorials/java11/garbage-collection/</guid><description>GC Changes Across Java 9–11 Release Change JEP Java 9 G1GC becomes the default GC JEP 248 Java 9 Unified GC logging (-Xlog:gc*) JEP 271 Java 10 Parallel Full GC for G1 JEP 307 Java 10 Application Class-Data Sharing (AppCDS) JEP 310 Java 11 Epsilon: No-Op GC JEP 318 Java 11 ZGC: Scalable Low-Latency GC (experimental) JEP 333 G1GC as Default (JEP 248, Java 9) G1 (Garbage-First) replaced Parallel GC as the default on systems with ≥2 CPUs and ≥2 GB heap.</description></item><item><title>Java 11 Overview: The Road from Java 8 Through Java 9, 10, to LTS</title><link>https://devops-monk.com/tutorials/java11/java11-overview/</link><pubDate>Mon, 04 May 2026 00:00:00 +0000</pubDate><guid>https://devops-monk.com/tutorials/java11/java11-overview/</guid><description>Why Java 11 Matters Java 8 was released in March 2014. It dominated enterprise Java for nearly a decade, but it misses a decade&amp;rsquo;s worth of language improvements, API modernisation, JVM advances, and security hardening. Java 11 (September 2018) is the first Long-Term Support release after Java 8, and it packages three releases of evolution into a single supported baseline.
For most teams the question is not whether to upgrade, but how.</description></item><item><title>Module System (JPMS, JEP 261): Project Jigsaw Deep Dive</title><link>https://devops-monk.com/tutorials/java11/module-system/</link><pubDate>Mon, 04 May 2026 00:00:00 +0000</pubDate><guid>https://devops-monk.com/tutorials/java11/module-system/</guid><description>The Problem JPMS Solves Before Java 9, the JDK had no real notion of encapsulation at the library level. public meant accessible to everyone — including internal JDK classes like sun.misc.Unsafe and com.sun.internal.*. Large codebases suffered from:
No reliable encapsulation: Any public class in any JAR was reachable from any other JAR. Classpath hell: Duplicate or conflicting classes from different JARs led to unpredictable behaviour. Monolithic JDK: The entire 60+ module JDK had to ship with every application.</description></item><item><title>Stream &amp; Optional API Enhancements (Java 9–11)</title><link>https://devops-monk.com/tutorials/java11/stream-optional-enhancements/</link><pubDate>Mon, 04 May 2026 00:00:00 +0000</pubDate><guid>https://devops-monk.com/tutorials/java11/stream-optional-enhancements/</guid><description>Stream API — New Methods (Java 9) Java 9 added four new instance methods to Stream&amp;lt;T&amp;gt;. All are terminal-ish or intermediate operations that make common patterns expressible without workarounds.
takeWhile(Predicate) Returns elements from the beginning of the stream as long as the predicate holds, then stops. The first element that fails the predicate (and all subsequent elements) are discarded.
Stream.of(1, 2, 3, 4, 5, 1, 2) .takeWhile(n -&amp;gt; n &amp;lt; 4) .</description></item><item><title>Tooling: JShell, jlink, and Single-File Programs (JEP 222, 282, 330)</title><link>https://devops-monk.com/tutorials/java11/tooling-jshell-jlink/</link><pubDate>Mon, 04 May 2026 00:00:00 +0000</pubDate><guid>https://devops-monk.com/tutorials/java11/tooling-jshell-jlink/</guid><description>Overview Java 9 and 11 added three tools that change how you write, test, and deploy Java code:
Tool JEP Release Purpose JShell JEP 222 Java 9 Interactive REPL for Java code jlink JEP 282 Java 9 Build minimal custom JRE images Single-file programs JEP 330 Java 11 Run .java files directly JShell — Interactive Java REPL JShell is Java&amp;rsquo;s Read-Eval-Print Loop: a command-line tool for evaluating Java expressions, statements, methods, and classes interactively, without creating a project.</description></item></channel></rss>