Lessons from a Large JVM Monorepo
summary
Airbnb runs a 30M+ LOC JVM monorepo with Java, Kotlin and Scala, thousands of contributors and ~8,000 third‑party versions; solutions include packaging JDKs as universal binaries to share caches across mac/linux and x86/arm, forcing remote persistent workers on RBE because builds are 2x slower without them, generating build files and an IntelliJ incremental path that yields up to 30x faster inner‑loop work, and direct‑to‑bytecode generation that cuts a critical path by ~40%.
AI-written summary · about
chapters (15)
- 0:00JVM monorepo at Airbnb
- 1:25Scale and complexity
- 3:10Cross-platform JVM builds
- 7:05Unexpected C++ in JVM builds
- 8:30Remote workers for JVM in Bazel
- 12:26JVM determinism checks
- 14:33Minimizing Bazel usage
- 17:05Build files at package level
- 18:06Multiple Java versions
- 20:14Custom Scala rules
- 21:38Kotlin schemas to bytecode
- 22:22Version resolution in Bazel
- 22:46Optimizing JVM tests
- 25:15Bazel flags and optimizations
- 27:02Q&A
related talks
01h 28mApps at Scale: An Industry Discussion
37mHow I learned to stop being afraid and love the JVM
47mLegal JVM Doping in Your Containers
48mJava's Hidden Gems: Tools and Libraries
54mJava's Hidden Gems
35mJava at Speed: Building a Better JVM
03h 35mJava ON 2024 Day 1
45mJVMs in Containers, Towards a Perfect Symbiosis!
