java-evolution is a practical Java reference project covering features introduced from Java 1 through Java 26. It uses small plain-Java examples, focused JUnit tests, and JavaDoc to explain what changed, why it matters, and how the APIs are used.
Java keeps evolving, while everyday work can settle into older habits. This repository makes that evolution concrete through readable examples and tests suitable for study and interview preparation.
- JDK 26
- Maven 3.9+
- GNU Make for repository-level convenience targets
- Node.js for documentation audits
lycheefor Markdown and HTML link checks
See Platform Setup for platform-specific JDK helpers and optional-tool details.
On macOS, select JDK 26 for the current terminal session, then verify Java and Maven:
source scripts/use-java-26-mac.sh
mvn --versionUse the Linux or Windows helper described in Platform Setup on other platforms.
Run the main checks:
make checkUseful targets:
make test
make links
make demos
make docs
make docs-check
make release-checkThe generated JavaDoc is written to target/site/apidocs/index.html and is published at the JavaDoc site.
This is intentionally a single-module Maven project. The java01 through java26 packages are learning chapters, not separate libraries or deployable artifacts. One Maven project provides a single source tree, test suite, JavaDoc site, dependency configuration, and build model.
Maven owns compilation, testing, and JavaDoc generation. The Makefile does not replace Maven; it combines Maven with JDK checks, documentation audits, link checking, focused demo groups, and release validation.
The project uses one Java release for the build: 26. Each package still teaches features from its historical release. Feature maturity and repository representation are separate concerns: a feature may be final while its repository representation remains a Notes class or explanatory module when a small portable example would be misleading or impractical.
- Complete Java 1-26 Feature Index
- Class-by-Class Feature Map
- Feature Status Matrix
- Java Release Timeline
- JEP Index and Official References
- Study Guide: suggested learning order through Java 1-26.
- Learning Path: staged sessions with files, tests, and interview angles.
- Migration Guide: moving from older Java baselines to newer releases.
- Practical Demos: focused hands-on walkthroughs.
- Interview Guide: interview talking points and demo flow.
- Demo Script: a practical 5-10 minute project walkthrough.
- Glossary: recurring Java platform terms and acronyms.
- Changelog: repository release history.
- Release Checklist: repeatable release process.
Start with the package for the Java version you want to review. Read its version README, then the example class and matching test. The Study Guide provides a broader sequence.
To run one example, use its test class. For example:
mvn -Dtest=StreamExamplesTest test
mvn -Dtest=VirtualThreadsExamplesTest test
mvn -Dtest=ScopedValuesExamplesTest testUse the Feature Map to find the class and test for a specific topic.
Java 1 through Java 7 predate the modern OpenJDK release pages and JEP process, so their entries use historical release notes, specifications, and API documentation. Java 8 through Java 26 use the JEP process and OpenJDK release references where available. All historical and official links are organized in the JEP Index and Java Release Timeline.
- Software Developer: Rod Oliveira
- GitHub: https://github.com/jrodolfo
- Webpage: https://jrodolfo.net
- MIT License
- Copyright (c) 2026 Rod Oliveira
- See LICENSE