Concept
This course starts by making your Kotlin instincts visible. Java is not worse Kotlin. It has a different shape: records for shallow values, explicit Optional boundaries, stream pipelines, checked exceptions, and a thread model that solves concurrency without suspension coloring.
Task
- Open the kata test and complete five examples that translate common Kotlin idioms into Java 25.
- Annotate each example with one place Java is noisier and one place the explicitness helps.
- Keep JPA entities out of the record examples. That mistake comes back later in Hibernate.
Run
java --version./gradlew test --tests "*JavaDeltaKataTest"Expected Result
- The kata test passes.
- Your notes contain at least five Kotlin-to-Java comparisons.
Common Traps
- Turning records into entities because they look like data classes.
- Using Optional as a field type instead of a return-boundary signal.
- Describing virtual threads as coroutines with a different syntax.
Hint Ladder
Hint 1
Start with the type boundary, not the syntax.
Hint 2
A record is excellent for an API response DTO and awkward for a mutable ORM entity.
Hint 3
Virtual threads still run blocking-looking code. There is no suspend marker to chase.
Solution
Reference solution will link to the phase-0-done tag once the learner repo is public.
Boot 3 to 4 Delta
The Java language work is independent of Spring Boot. Later Boot 3 to 4 notes should cite official Spring lifecycle docs rather than dates from memory.