Stage 1a (Optional) ↑ HOME
Stage 01a · Optional
Java Modernization
Upgrade the app from Java 11 to Java 17 — showcase Bob's modernization capability
💬 TALKING POINT · #8
  • We built the app on Java 11 — intentionally. This lets us showcase one of Bob's most compelling enterprise use cases: code modernization.
  • Many organizations are running legacy Java versions across hundreds of services. Bob can analyze the codebase, identify what needs to change, and produce a structured upgrade plan — before touching a single line of code.
This is an optional stage. Include it when the audience has legacy Java modernization challenges or when you want to showcase Bob's ability to plan large-scale code migrations.
1a · Java Modernization Action Plan
Analyze the payment application and create a detailed action plan to modernize it from Java 11 to Java 17. The plan should include: 1. Summary of changes required (dependencies, APIs, syntax, config) 2. List of deprecated or removed APIs that need replacing 3. New Java 17 features that can improve the codebase (records, sealed classes, text blocks, pattern matching) 4. Updated pom.xml changes required (Java version, Spring Boot compatibility) 5. Estimated effort and risk for each change 6. Recommended order of changes to minimize risk Do not make any code changes yet. Produce the plan as: JavaModernizationPlan.md
📝 PRESENTER NOTE · #10
Bob will produce a structured JavaModernizationPlan.md — walk the audience through the breakdown: what changes are required, what new Java 17 features can be adopted, and the recommended sequence. This is the kind of analysis that would normally take a senior developer days to produce manually.
💡 TIP · #37
This stage is optional — only include it if the audience has a Java modernization pain point or if time allows. It pairs well with a follow-up prompt asking Bob to execute the plan.

💡 Cost: ~0.07 bobcoins.
1b · Execute the Modernization
Execute the JavaModernizationPlan.md — modernize the payment application from Java 11 to Java 17. Apply all changes identified in the plan: 1. Update pom.xml — Java version to 17, Spring Boot and dependency versions 2. Replace any deprecated or removed APIs with Java 17 equivalents 3. Apply Java 17 features where they improve the code: - Records for immutable model classes - Text blocks for multi-line strings - Pattern matching for instanceof checks - Sealed classes where appropriate 4. Remove Lombok if present — replace with Java records or explicit methods 5. Verify the application still compiles and runs with: mvn spring-boot:run Output the modernized application in a new folder alongside the original: ``` payment-app/ ← original Java 11 (do not modify) payment-app-java17/ ← modernized Java 17 ├── src/ │ └── main/ │ ├── java/com/demo/payment/ │ │ ├── controller/ │ │ ├── service/ │ │ ├── model/ ← records replace verbose POJOs │ │ └── config/ │ └── resources/ │ ├── static/ │ └── application.properties ├── pom.xml ← updated to Java 17 + Spring Boot 3.x ├── Dockerfile └── README.md ``` Do not run the application. I will verify it myself.
💬 TALKING POINT · #9
Now we'll ask Bob to execute the plan. Watch it work through the codebase systematically — updating dependencies, replacing deprecated APIs, and adopting Java 17 features like records and text blocks.
📝 PRESENTER NOTE · #11
Point out specific Java 17 improvements as Bob makes them — records replacing verbose model classes is the most visual. Before: 50 lines of boilerplate. After: 3 lines. That's the kind of change that resonates with any Java developer in the room.

Bob will also summarize the changes when it wraps up.
💡 TIP · #38
This is a great moment to talk about Bob's value at scale — one service modernized in minutes. Now imagine doing this across 200 services.
💡 TIP · #39
Cost: ~0.17 bobcoins.
💡 TIP · #40
Make sure you have Java 17+ installed before running the modernized app — otherwise you may encounter compile or runtime errors. Java 17 or later will work (e.g. Java 21, Java 25). If you do hit issues, work with Bob to solve them.
payment-app-java17/ — modernized project folder
Updated pom.xml — Java 17 + Spring Boot 3.x
Modernized source — records, text blocks, pattern matching applied
📝 PRESENTER NOTE · #12
Optional: bring up the modernized app to validate it works.

cd payment-app-java17
mvn spring-boot:run

⚠️ Make sure you stop the previously running server first — otherwise you'll get a port conflict on localhost:8080. In the terminal where the original app is running, press Ctrl+C to stop it before starting the Java 17 version.