Use this script when you want to walk through the repository live in an interview or technical conversation. The goal is to show that the project is organized, runnable, and tied to real Java evolution instead of being a folder of disconnected snippets.
Say:
I built this repository to study Java release by release. Each package focuses on features introduced in that Java version, and each example has tests that document the expected behavior.
Show:
README.md
docs/feature-map.md
src/main/java/net/jrodolfo/java_evolution
src/test/java/net/jrodolfo/java_evolution
Point out that Spring Boot is only the project shell. The examples are plain Java classes.
Show:
src/main/java/net/jrodolfo/java_evolution/java08
src/main/java/net/jrodolfo/java_evolution/java21
src/main/java/net/jrodolfo/java_evolution/java25
Say:
The package name tells you the Java release. Inside each package, the class names tell you the feature. That keeps the examples small enough to study independently.
Open:
src/main/java/net/jrodolfo/java_evolution/java08/StreamExamples.java
src/test/java/net/jrodolfo/java_evolution/java08/StreamExamplesTest.java
Say:
Java 8 changed everyday Java style. Streams let me describe collection transformations directly instead of writing manual loops for filtering, mapping, and grouping.
Run:
mvn "-Dtest=StreamExamplesTest" testExpected point: the test proves the behavior and acts as executable documentation.
Open:
src/main/java/net/jrodolfo/java_evolution/java21/VirtualThreadsExamples.java
src/test/java/net/jrodolfo/java_evolution/java21/VirtualThreadsExamplesTest.java
Say:
Java 21 is important because it is an LTS release. Virtual threads let blocking, thread-per-task code scale much better for I/O-heavy workloads without forcing every codebase into a reactive style.
Run:
mvn "-Dtest=VirtualThreadsExamplesTest" testExpected point: the example shows the API shape without turning the repository into a full web application.
Open:
src/main/java/net/jrodolfo/java_evolution/java25/scoped_values/README.md
src/main/java/net/jrodolfo/java_evolution/java25/scoped_values/ScopedValuesExamples.java
src/test/java/net/jrodolfo/java_evolution/java25/scoped_values/ScopedValuesExamplesTest.java
src/main/java/net/jrodolfo/java_evolution/java26/README.md
Say:
For newer releases, I separate final features from preview, incubator, runtime, tooling, security, and removal topics. Scoped values are represented as a final executable Java 25 LTS feature. Java 26 is a released feature release with executable examples for HTTP/3, final-field restrictions, Applet API removal, AOT object caching, PEM encodings, Lazy Constants, primitive patterns, Structured Concurrency, and the Vector API, while G1 synchronization reduction remains an explanatory note. The repository now builds on JDK 27, which is still pre-GA: it adds executable examples for compact headers, hybrid TLS, JFR redaction, and continuing previews, while keeping G1 default selection and Java 27 Vector API evolution explanatory.
Run:
mvn "-Dtest=ScopedValuesExamplesTest" testExpected point: current-release awareness is useful only if you can also explain feature maturity and the project's build baseline.
Show:
docs/learning-path.md
docs/interview-guide.md
docs/jep-index.md
docs/feature-map.md
Say:
The feature map helps me find examples quickly, the JEP index links features to official proposals, and the learning path gives me an order for studying the project.
Then run:
make check-buildExpected point: the whole repository is tested with JDK 27, while Java 27's platform lifecycle is still pre-GA.
Use this when time is short:
- Show
README.mdand explain the version-based structure. - Open
java08/StreamExamples.javato show Java 8 functional style. - Open
java21/VirtualThreadsExamples.javato show modern Java concurrency. - Open
java25/scoped_values/README.md,java26/README.md, andjava27/README.mdto show LTS/current-release awareness. - Run one focused command:
mvn "-Dtest=VirtualThreadsExamplesTest" testClose with:
The important part is not only that I read about these features. I wrote small examples, documented the problem each feature solves, and backed the examples with tests.
Run the full validation:
make check-buildRun the practical demo validation:
make run-demosUse this before a live walkthrough to verify that the hands-on demos still match your local environment.
Run one example:
mvn "-Dtest=StreamExamplesTest" test
mvn "-Dtest=VirtualThreadsExamplesTest" test
mvn "-Dtest=ScopedValuesExamplesTest" testGenerate JavaDoc:
make generate-docsOpen the generated JavaDoc:
target/site/apidocs/index.html
Show src/main/java/net/jrodolfo/java_evolution/java27/README.md and run the focused Java 27 tests. Explain that preview APIs use an isolated child JVM with matching Java 27 preview flags, while G1 default selection and the Vector API remain explanatory representations because their useful interpretation depends on runtime configuration or incubator evolution rather than a small performance claim.