Skip to content

Commit eb9727e

Browse files
committed
add feature status matrix
1 parent 72e2470 commit eb9727e

2 files changed

Lines changed: 134 additions & 0 deletions

File tree

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,7 @@ Example classes contain JavaDoc. Test classes are written as executable document
9292
- [Demo Script](docs/demo-script.md): practical 5-10 minute live walkthrough.
9393
- [JEP Index](docs/jep-index.md): centralized JEP links with status labels.
9494
- [Feature Map](docs/feature-map.md): class-by-class navigation table.
95+
- [Status Matrix](docs/status-matrix.md): feature status, example class, test class, and reference links.
9596
- [JavaDoc Site](https://jrodolfo.github.io/java-evolution/): generated API documentation published by GitHub Pages.
9697

9798
## Feature Index

docs/status-matrix.md

Lines changed: 133 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,133 @@
1+
# Status Matrix
2+
3+
This matrix gives one place to answer three practical questions:
4+
5+
- Is the feature final, preview, incubator, runtime, tooling, security, documentation, or notes-only in this repository?
6+
- Which class should I open?
7+
- Which test proves or documents the behavior?
8+
9+
Use [feature-map.md](feature-map.md) for class-by-class navigation and [jep-index.md](jep-index.md) for the release-level JEP list.
10+
11+
Status vocabulary:
12+
13+
- `final`: stable feature in the named release
14+
- `preview`: available for feedback, may change later
15+
- `incubator`: non-final incubating API
16+
- `notes-only`: represented as a notes class in this repository
17+
- `runtime`: JVM, GC, diagnostics, startup, or migration behavior
18+
- `tooling`: command-line, launcher, JavaDoc, or development support
19+
- `security`: cryptography or security platform feature
20+
- `documentation`: JavaDoc or documentation syntax feature
21+
22+
| Java | Feature | Status | Example or Notes Class | Test Class | Reference |
23+
|---|---|---|---|---|---|
24+
| 8 | Lambdas | final | `LambdaExamples` | `LambdaExamplesTest` | [JEP 126](https://openjdk.org/jeps/126) |
25+
| 8 | Streams | final | `StreamExamples` | `StreamExamplesTest` | [JEP 107](https://openjdk.org/jeps/107) |
26+
| 8 | Optional | final | `OptionalExamples` | `OptionalExamplesTest` | [java08 README](../src/main/java/net/jrodolfo/java_evolution/java08/README.md) |
27+
| 8 | Method references | final | `MethodReferenceExamples` | `MethodReferenceExamplesTest` | [JEP 126](https://openjdk.org/jeps/126) |
28+
| 8 | CompletableFuture | final | `CompletableFutureExamples` | `CompletableFutureExamplesTest` | [java08 README](../src/main/java/net/jrodolfo/java_evolution/java08/README.md) |
29+
| 8 | Default methods | final | `DefaultMethodExamples` | `DefaultMethodExamplesTest` | [JEP 126](https://openjdk.org/jeps/126) |
30+
| 8 | Date/Time API | final | `DateTimeApiExamples` | `DateTimeApiExamplesTest` | [JEP 150](https://openjdk.org/jeps/150) |
31+
| 9 | Collection factories | final | `CollectionFactoryExamples` | `CollectionFactoryExamplesTest` | [JEP 269](https://openjdk.org/jeps/269) |
32+
| 9 | Optional enhancements | final | `OptionalEnhancementExamples` | `OptionalEnhancementExamplesTest` | [java09 README](../src/main/java/net/jrodolfo/java_evolution/java09/README.md) |
33+
| 9 | Stream enhancements | final | `StreamEnhancementExamples` | `StreamEnhancementExamplesTest` | [java09 README](../src/main/java/net/jrodolfo/java_evolution/java09/README.md) |
34+
| 9 | Private interface methods | final | `PrivateInterfaceMethodExamples` | `PrivateInterfaceMethodExamplesTest` | [JEP 213](https://openjdk.org/jeps/213) |
35+
| 9 | Try-with-resources improvement | final | `TryWithResourcesExamples` | `TryWithResourcesExamplesTest` | [JEP 213](https://openjdk.org/jeps/213) |
36+
| 9 | Process API | final | `ProcessApiExamples` | `ProcessApiExamplesTest` | [JEP 102](https://openjdk.org/jeps/102) |
37+
| 9 | StackWalker | final | `StackWalkerExamples` | `StackWalkerExamplesTest` | [JEP 259](https://openjdk.org/jeps/259) |
38+
| 9 | Module system | final, notes-only | `ModuleSystemNotes` | `ModuleSystemNotesTest` | [JEP 261](https://openjdk.org/jeps/261) |
39+
| 10 | Local variable type inference | final | `LocalVariableTypeInferenceExamples` | `LocalVariableTypeInferenceExamplesTest` | [JEP 286](https://openjdk.org/jeps/286) |
40+
| 10 | Unmodifiable collectors | final | `UnmodifiableCollectorsExamples` | `UnmodifiableCollectorsExamplesTest` | [java10 README](../src/main/java/net/jrodolfo/java_evolution/java10/README.md) |
41+
| 10 | `Optional.orElseThrow()` | final | `OptionalOrElseThrowExamples` | `OptionalOrElseThrowExamplesTest` | [java10 README](../src/main/java/net/jrodolfo/java_evolution/java10/README.md) |
42+
| 11 | String API additions | final | `StringApiExamples` | `StringApiExamplesTest` | [java11 README](../src/main/java/net/jrodolfo/java_evolution/java11/README.md) |
43+
| 11 | Files read/write string | final | `FilesApiExamples` | `FilesApiExamplesTest` | [java11 README](../src/main/java/net/jrodolfo/java_evolution/java11/README.md) |
44+
| 11 | HTTP Client | final | `HttpClientExamples` | `HttpClientExamplesTest` | [JEP 321](https://openjdk.org/jeps/321) |
45+
| 11 | `Predicate.not` | final | `PredicateNotExamples` | `PredicateNotExamplesTest` | [java11 README](../src/main/java/net/jrodolfo/java_evolution/java11/README.md) |
46+
| 11 | Lambda `var` | final | `LambdaVarExamples` | `LambdaVarExamplesTest` | [JEP 323](https://openjdk.org/jeps/323) |
47+
| 11 | `Optional.isEmpty` | final | `OptionalIsEmptyExamples` | `OptionalIsEmptyExamplesTest` | [java11 README](../src/main/java/net/jrodolfo/java_evolution/java11/README.md) |
48+
| 12 | Switch expressions preview | preview | `SwitchExpressionPreviewExamples` | `SwitchExpressionPreviewExamplesTest` | [JEP 325](https://openjdk.org/jeps/325) |
49+
| 12 | Teeing collector | final | `TeeingCollectorExamples` | `TeeingCollectorExamplesTest` | [java12 README](../src/main/java/net/jrodolfo/java_evolution/java12/README.md) |
50+
| 12 | `String.indent` | final | `StringIndentExamples` | `StringIndentExamplesTest` | [java12 README](../src/main/java/net/jrodolfo/java_evolution/java12/README.md) |
51+
| 12 | `Files.mismatch` | final | `FilesMismatchExamples` | `FilesMismatchExamplesTest` | [java12 README](../src/main/java/net/jrodolfo/java_evolution/java12/README.md) |
52+
| 12 | Compact number formatting | final | `CompactNumberFormatExamples` | `CompactNumberFormatExamplesTest` | [java12 README](../src/main/java/net/jrodolfo/java_evolution/java12/README.md) |
53+
| 13 | Text blocks preview | preview | `TextBlockPreviewExamples` | `TextBlockPreviewExamplesTest` | [JEP 355](https://openjdk.org/jeps/355) |
54+
| 13 | Switch `yield` preview | preview | `SwitchYieldPreviewExamples` | `SwitchYieldPreviewExamplesTest` | [JEP 354](https://openjdk.org/jeps/354) |
55+
| 13 | `FileSystems.newFileSystem(Path)` | final | `FileSystemsNewFileSystemExamples` | `FileSystemsNewFileSystemExamplesTest` | [java13 README](../src/main/java/net/jrodolfo/java_evolution/java13/README.md) |
56+
| 14 | Switch expressions final | final | `SwitchExpressionExamples` | `SwitchExpressionExamplesTest` | [JEP 361](https://openjdk.org/jeps/361) |
57+
| 14 | Helpful NullPointerExceptions | runtime | `HelpfulNullPointerExceptionExamples` | `HelpfulNullPointerExceptionExamplesTest` | [JEP 358](https://openjdk.org/jeps/358) |
58+
| 14 | Records preview | preview | `RecordPreviewExamples` | `RecordPreviewExamplesTest` | [JEP 359](https://openjdk.org/jeps/359) |
59+
| 14 | Pattern matching for `instanceof` preview | preview | `PatternMatchingInstanceofPreviewExamples` | `PatternMatchingInstanceofPreviewExamplesTest` | [JEP 305](https://openjdk.org/jeps/305) |
60+
| 15 | Text blocks final | final | `TextBlockExamples` | `TextBlockExamplesTest` | [JEP 378](https://openjdk.org/jeps/378) |
61+
| 15 | Sealed classes preview | preview | `SealedClassesPreviewExamples` | `SealedClassesPreviewExamplesTest` | [JEP 360](https://openjdk.org/jeps/360) |
62+
| 15 | Hidden classes | final, notes-only | `HiddenClassesNotes` | `HiddenClassesNotesTest` | [JEP 371](https://openjdk.org/jeps/371) |
63+
| 16 | Records final | final | `RecordExamples` | `RecordExamplesTest` | [JEP 395](https://openjdk.org/jeps/395) |
64+
| 16 | Pattern matching for `instanceof` final | final | `PatternMatchingInstanceofExamples` | `PatternMatchingInstanceofExamplesTest` | [JEP 394](https://openjdk.org/jeps/394) |
65+
| 16 | `Stream.toList()` | final | `StreamToListExamples` | `StreamToListExamplesTest` | [java16 README](../src/main/java/net/jrodolfo/java_evolution/java16/README.md) |
66+
| 16 | Unix-domain socket channels | final, notes-only | `UnixDomainSocketChannelNotes` | `UnixDomainSocketChannelNotesTest` | [JEP 380](https://openjdk.org/jeps/380) |
67+
| 17 | Sealed classes final | final | `SealedClassesExamples` | `SealedClassesExamplesTest` | [JEP 409](https://openjdk.org/jeps/409) |
68+
| 17 | Pattern matching for switch preview | preview | `PatternMatchingSwitchPreviewExamples` | `PatternMatchingSwitchPreviewExamplesTest` | [JEP 406](https://openjdk.org/jeps/406) |
69+
| 17 | Random Generator API | final | `RandomGeneratorExamples` | `RandomGeneratorExamplesTest` | [JEP 356](https://openjdk.org/jeps/356) |
70+
| 17 | `HexFormat` | final | `HexFormatExamples` | `HexFormatExamplesTest` | [java17 README](../src/main/java/net/jrodolfo/java_evolution/java17/README.md) |
71+
| 17 | Strong encapsulation | runtime, notes-only | `StrongEncapsulationNotes` | `StrongEncapsulationNotesTest` | [JEP 403](https://openjdk.org/jeps/403) |
72+
| 18 | UTF-8 default charset | final | `Utf8DefaultCharsetExamples` | `Utf8DefaultCharsetExamplesTest` | [JEP 400](https://openjdk.org/jeps/400) |
73+
| 18 | Simple Web Server | tooling, notes-only | `SimpleWebServerNotes` | `SimpleWebServerNotesTest` | [JEP 408](https://openjdk.org/jeps/408) |
74+
| 18 | JavaDoc snippets | documentation, notes-only | `CodeSnippetJavaDocNotes` | `CodeSnippetJavaDocNotesTest` | [JEP 413](https://openjdk.org/jeps/413) |
75+
| 18 | InetAddress resolver SPI | final, notes-only | `InetAddressResolutionNotes` | `InetAddressResolutionNotesTest` | [JEP 418](https://openjdk.org/jeps/418) |
76+
| 19 | Virtual threads preview | preview | `VirtualThreadsPreviewExamples` | `VirtualThreadsPreviewExamplesTest` | [JEP 425](https://openjdk.org/jeps/425) |
77+
| 19 | Record patterns preview | preview | `RecordPatternsPreviewExamples` | `RecordPatternsPreviewExamplesTest` | [JEP 405](https://openjdk.org/jeps/405) |
78+
| 19 | Pattern matching switch preview | preview | `PatternMatchingSwitchPreviewExamples` | `PatternMatchingSwitchPreviewExamplesTest` | [JEP 427](https://openjdk.org/jeps/427) |
79+
| 19 | Structured concurrency | incubator, notes-only | `StructuredConcurrencyPreviewNotes` | `StructuredConcurrencyPreviewNotesTest` | [JEP 428](https://openjdk.org/jeps/428) |
80+
| 19 | Foreign Function and Memory API | preview, notes-only | `ForeignFunctionMemoryApiPreviewNotes` | `ForeignFunctionMemoryApiPreviewNotesTest` | [JEP 424](https://openjdk.org/jeps/424) |
81+
| 20 | Record patterns second preview | preview | `RecordPatternsSecondPreviewExamples` | `RecordPatternsSecondPreviewExamplesTest` | [JEP 432](https://openjdk.org/jeps/432) |
82+
| 20 | Pattern matching switch fourth preview | preview | `PatternMatchingSwitchFourthPreviewExamples` | `PatternMatchingSwitchFourthPreviewExamplesTest` | [JEP 433](https://openjdk.org/jeps/433) |
83+
| 20 | Virtual threads second preview | preview, notes-only | `VirtualThreadsSecondPreviewNotes` | `VirtualThreadsSecondPreviewNotesTest` | [JEP 436](https://openjdk.org/jeps/436) |
84+
| 20 | Scoped values incubator | incubator, notes-only | `ScopedValuesIncubatorNotes` | `ScopedValuesIncubatorNotesTest` | [JEP 429](https://openjdk.org/jeps/429) |
85+
| 20 | Structured concurrency second incubator | incubator, notes-only | `StructuredConcurrencySecondIncubatorNotes` | `StructuredConcurrencySecondIncubatorNotesTest` | [JEP 437](https://openjdk.org/jeps/437) |
86+
| 20 | Foreign Function and Memory API second preview | preview, notes-only | `ForeignFunctionMemorySecondPreviewNotes` | `ForeignFunctionMemorySecondPreviewNotesTest` | [JEP 434](https://openjdk.org/jeps/434) |
87+
| 20 | Vector API fifth incubator | incubator, notes-only | `VectorApiFifthIncubatorNotes` | `VectorApiFifthIncubatorNotesTest` | [JEP 438](https://openjdk.org/jeps/438) |
88+
| 21 | Virtual threads final | final | `VirtualThreadsExamples` | `VirtualThreadsExamplesTest` | [JEP 444](https://openjdk.org/jeps/444) |
89+
| 21 | Record patterns final | final | `RecordPatternsExamples` | `RecordPatternsExamplesTest` | [JEP 440](https://openjdk.org/jeps/440) |
90+
| 21 | Pattern matching switch final | final | `PatternMatchingSwitchExamples` | `PatternMatchingSwitchExamplesTest` | [JEP 441](https://openjdk.org/jeps/441) |
91+
| 21 | Sequenced collections | final | `SequencedCollectionsExamples` | `SequencedCollectionsExamplesTest` | [JEP 431](https://openjdk.org/jeps/431) |
92+
| 21 | Unnamed patterns and variables preview | preview | `UnnamedPatternsVariablesPreviewExamples` | `UnnamedPatternsVariablesPreviewExamplesTest` | [JEP 443](https://openjdk.org/jeps/443) |
93+
| 21 | Key Encapsulation Mechanism API | security, notes-only | `KeyEncapsulationMechanismNotes` | `KeyEncapsulationMechanismNotesTest` | [JEP 452](https://openjdk.org/jeps/452) |
94+
| 21 | Scoped values preview | preview, notes-only | `ScopedValuesPreviewNotes` | `ScopedValuesPreviewNotesTest` | [JEP 446](https://openjdk.org/jeps/446) |
95+
| 21 | Structured concurrency preview | preview, notes-only | `StructuredConcurrencyPreviewNotes` | `StructuredConcurrencyPreviewNotesTest` | [JEP 453](https://openjdk.org/jeps/453) |
96+
| 22 | Unnamed variables and patterns final | final | `UnnamedVariablesPatternsExamples` | `UnnamedVariablesPatternsExamplesTest` | [JEP 456](https://openjdk.org/jeps/456) |
97+
| 22 | Statements before `super(...)` preview | preview, notes-only | `StatementsBeforeSuperPreviewNotes` | `StatementsBeforeSuperPreviewNotesTest` | [JEP 447](https://openjdk.org/jeps/447) |
98+
| 22 | Stream Gatherers preview | preview, notes-only | `StreamGatherersPreviewNotes` | `StreamGatherersPreviewNotesTest` | [JEP 461](https://openjdk.org/jeps/461) |
99+
| 22 | Foreign Function and Memory API final | final, notes-only | `ForeignFunctionMemoryApiNotes` | `ForeignFunctionMemoryApiNotesTest` | [JEP 454](https://openjdk.org/jeps/454) |
100+
| 22 | Multi-file source launcher | tooling, notes-only | `LaunchMultiFileSourceProgramsNotes` | `LaunchMultiFileSourceProgramsNotesTest` | [JEP 458](https://openjdk.org/jeps/458) |
101+
| 22 | Class-File API preview | preview, notes-only | `ClassFileApiPreviewNotes` | `ClassFileApiPreviewNotesTest` | [JEP 457](https://openjdk.org/jeps/457) |
102+
| 22 | Scoped values second preview | preview, notes-only | `ScopedValuesSecondPreviewNotes` | `ScopedValuesSecondPreviewNotesTest` | [JEP 464](https://openjdk.org/jeps/464) |
103+
| 22 | Structured concurrency second preview | preview, notes-only | `StructuredConcurrencySecondPreviewNotes` | `StructuredConcurrencySecondPreviewNotesTest` | [JEP 462](https://openjdk.org/jeps/462) |
104+
| 23 | Markdown documentation comments | documentation, notes-only | `MarkdownDocumentationCommentsNotes` | `Java23NotesTest` | [JEP 467](https://openjdk.org/jeps/467) |
105+
| 23 | Primitive patterns preview | preview, notes-only | `PrimitivePatternsPreviewNotes` | `Java23NotesTest` | [JEP 455](https://openjdk.org/jeps/455) |
106+
| 23 | Module import declarations preview | preview, notes-only | `ModuleImportDeclarationsPreviewNotes` | `Java23NotesTest` | [JEP 476](https://openjdk.org/jeps/476) |
107+
| 23 | Flexible constructor bodies second preview | preview, notes-only | `FlexibleConstructorBodiesSecondPreviewNotes` | `Java23NotesTest` | [JEP 482](https://openjdk.org/jeps/482) |
108+
| 23 | Stream Gatherers second preview | preview, notes-only | `StreamGatherersSecondPreviewNotes` | `Java23NotesTest` | [JEP 473](https://openjdk.org/jeps/473) |
109+
| 23 | Class-File API second preview | preview, notes-only | `ClassFileApiSecondPreviewNotes` | `Java23NotesTest` | [JEP 466](https://openjdk.org/jeps/466) |
110+
| 23 | Scoped values third preview | preview, notes-only | `ScopedValuesThirdPreviewNotes` | `Java23NotesTest` | [JEP 481](https://openjdk.org/jeps/481) |
111+
| 23 | Structured concurrency third preview | preview, notes-only | `StructuredConcurrencyThirdPreviewNotes` | `Java23NotesTest` | [JEP 480](https://openjdk.org/jeps/480) |
112+
| 23 | Unsafe memory-access deprecation | runtime, notes-only | `UnsafeMemoryAccessDeprecationNotes` | `Java23NotesTest` | [JEP 471](https://openjdk.org/jeps/471) |
113+
| 23 | ZGC generational mode | runtime, notes-only | `ZgcGenerationalModeNotes` | `Java23NotesTest` | [JEP 474](https://openjdk.org/jeps/474) |
114+
| 24 | Stream Gatherers final | final | `StreamGatherersExamples` | `StreamGatherersExamplesTest` | [JEP 485](https://openjdk.org/jeps/485) |
115+
| 24 | Class-File API final | final, notes-only | `ClassFileApiNotes` | `Java24NotesTest` | [JEP 484](https://openjdk.org/jeps/484) |
116+
| 24 | Security Manager disabled | runtime, notes-only | `SecurityManagerDisabledNotes` | `Java24NotesTest` | [JEP 486](https://openjdk.org/jeps/486) |
117+
| 24 | Virtual-thread synchronization | runtime, notes-only | `VirtualThreadSynchronizationNotes` | `Java24NotesTest` | [JEP 491](https://openjdk.org/jeps/491) |
118+
| 24 | Quantum-resistant crypto | security, notes-only | `QuantumResistantCryptoNotes` | `Java24NotesTest` | [JEP 496](https://openjdk.org/jeps/496), [JEP 497](https://openjdk.org/jeps/497) |
119+
| 24 | AOT class loading | runtime, notes-only | `AotClassLoadingNotes` | `Java24NotesTest` | [JEP 483](https://openjdk.org/jeps/483) |
120+
| 24 | KDF preview | security, preview, notes-only | `KeyDerivationFunctionPreviewNotes` | `Java24NotesTest` | [JEP 478](https://openjdk.org/jeps/478) |
121+
| 24 | Remaining preview/runtime notes | preview, runtime, notes-only | `*Notes` | `Java24NotesTest` | [java24 README](../src/main/java/net/jrodolfo/java_evolution/java24/README.md) |
122+
| 25 | Scoped values final | final | `ScopedValuesExamples` | `ScopedValuesExamplesTest` | [JEP 506](https://openjdk.org/jeps/506) |
123+
| 25 | Flexible constructor bodies final | final | `FlexibleConstructorBodiesExamples` | `FlexibleConstructorBodiesExamplesTest` | [JEP 513](https://openjdk.org/jeps/513) |
124+
| 25 | Module import declarations final | final, notes-only | `ModuleImportDeclarationsNotes` | `Java25NotesTest` | [JEP 511](https://openjdk.org/jeps/511) |
125+
| 25 | Compact source files final | final, notes-only | `CompactSourceFilesNotes` | `Java25NotesTest` | [JEP 512](https://openjdk.org/jeps/512) |
126+
| 25 | Key Derivation Function API final | security, notes-only | `KeyDerivationFunctionNotes` | `Java25NotesTest` | [JEP 510](https://openjdk.org/jeps/510) |
127+
| 25 | Primitive patterns third preview | preview, notes-only | `PrimitivePatternsThirdPreviewNotes` | `Java25NotesTest` | [JEP 507](https://openjdk.org/jeps/507) |
128+
| 25 | Stable values preview | preview, notes-only | `StableValuesPreviewNotes` | `Java25NotesTest` | [JEP 502](https://openjdk.org/jeps/502) |
129+
| 25 | PEM encodings preview | security, preview, notes-only | `PemEncodingsPreviewNotes` | `Java25NotesTest` | [JEP 470](https://openjdk.org/jeps/470) |
130+
| 25 | Structured concurrency fifth preview | preview, notes-only | `StructuredConcurrencyFifthPreviewNotes` | `Java25NotesTest` | [JEP 505](https://openjdk.org/jeps/505) |
131+
| 25 | Vector API tenth incubator | incubator, notes-only | `VectorApiTenthIncubatorNotes` | `Java25NotesTest` | [JEP 508](https://openjdk.org/jeps/508) |
132+
| 25 | AOT, JFR, object headers, GC notes | runtime, notes-only | `*Notes` | `Java25NotesTest` | [java25 README](../src/main/java/net/jrodolfo/java_evolution/java25/README.md) |
133+

0 commit comments

Comments
 (0)