Going Java::Current in Production
summary
Revolut migrates from Java 8 → 11 → 17 across microservices, choosing OpenJDK and upgrading build tooling (need Gradle 7.3 for Java 17, use Maven compiler plugin). Use jdeps and japi-scan to find internal API and deprecated usages, run tests compiled on Java 11 then flip runtimes. Observed single-digit percent memory savings from compact strings, G1 “just works” on 30GB heaps but triggers earlier OOMs with native buffers, and records/flight-recorder adoption already shows measurable developer productivity.
AI-written summary · about
chapters (25)
- 0:00Intro
- 3:08Which Java are you on?
- 5:08The state of Java
- 6:45Why upgrade?
- 8:36java.lang.String
- 10:39Upgrade and Ops
- 12:53Why not Oracle JDK
- 13:57A word from Java 17
- 14:43Java - release cadence reminder
- 15:36Java 11
- 18:17jdeprscan
- 19:10Maven
- 21:48Mockito
- 23:58Flyway
- 25:37Scala
- 28:21Bouncy Castle
- 28:52XX changes
- 31:43Recommendation
- 34:00Life with G1 by default
- 37:49Java Flight Record && Mission Control
- 39:19Helpful NullPointerExceptions
- 39:37JDK 14
- 40:19JDK 16
- 40:52JDK 17
- 44:54Resources
related talks
42mMoving to Java 17 in production
53mA year with jdk11 in production.
47mJava. Migrating to 11 in real app
50mJava. Migrating to 11 in real app
55mWhy You Should Migrate to Java 11 Right Now.
46mBeam Me Up, Java! A Journey through Java LTS Versions 11 to 21
50mHow We Migrated New Relic to Java 11
01h 05mJava 11 to 17 - Exciting New Features
