| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Name | Name | Last commit date | ||
|---|---|---|---|---|
A didactic, vanilla Java project (no frameworks) that showcases, in a practical way, the major evolutions of the language from Java 8 to Java 26.
Instead of toy snippets, the features are put to work inside a realistic — but deliberately bounded — iGaming / sports-betting domain: odds, stakes, betting tickets and the calculation of potential winnings.
Why this exists: most "what's new in Java X" resources are isolated one-liners. This repo is the opposite: one coherent domain, built with modern Java only, where every major language feature is used where it naturally fits and is marked with a comment explaining which version introduced it and what benefit it brings.
Features are introduced progressively, as the domain needs them.
| Feature | Version | Where it is used |
|---|---|---|
| var (local type inference) | Java 10 | local variables in calculations, tests and demos |
| Text blocks | Java 15 | multi-line ticket "receipt" in the demo (planned) |
| Records | Java 16 | Odds, Stake, Selection, and the bet types |
| Pattern matching for instanceof | Java 16 | targeted validations (planned) |
| Sealed interfaces | Java 17 | Bet and TicketStatus closed hierarchies (planned) |
| Pattern matching for switch | Java 21 | winnings calculation by bet type (planned) |
| Record patterns (deconstruction) | Java 21 | destructuring records inside the switch (planned) |
Minor, isolated API tweaks are deliberately omitted — the focus is the major language evolutions.
# Run the tests
./gradlew test
# Run the application entry point
./gradlew runSingle Gradle module, one package per domain area.
src/
├── main/java/com/adrianodiaz/igamingjavaevolution/
│ ├── IgamingJavaEvolutionApplication.java # entry point
│ ├── shared/
│ │ └── Messages.java # centralized string constants
│ └── betengine/ # first domain module
│ ├── Odds.java # record + validation (BigDecimal)
│ └── Stake.java # record + validation (BigDecimal)
└── test/java/com/adrianodiaz/igamingjavaevolution/
└── betengine/
├── OddsTest.java
└── StakeTest.java
docs/
└── design/
└── 2026-07-23-bet-engine-design.md # full design of the bet-engine module
The project grows module by module. The first module, bet-engine, is where the core value types and the winnings logic live.
bet-engine — in progress
Planned next
See docs/design/2026-07-23-bet-engine-design.md for the detailed design and step-by-step build guide.
Educational project — free to read, learn from, and adapt.
| Back | FazBrowse Home | New Git URL |