World 0 / Quest 0.1

Java 25 for Kotlin Developers

Build the translation table you will use for the rest of the course.

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

  1. Open the kata test and complete five examples that translate common Kotlin idioms into Java 25.
  2. Annotate each example with one place Java is noisier and one place the explicitness helps.
  3. 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.