Move Deliberately and Don't Break Anything
summary
Java evolution prioritizes compatibility over novelty: the platform supports millions of developers and billions of lines of code, so changes require careful economic tradeoffs, long iteration (default methods takes years and generics took ~10 years), and heavy interaction testing (serialization and lambdas cost hundreds of engineering hours). Rules like "superclass wins" preserve binary/source stability, Java 9 focuses on modularity, and upcoming work adds value types and generics over primitives to improve memory layout and locality without breaking existing code; changes ship only when they fit the ecosystem.
AI-written summary · about
chapters (17)
- 0:00Introduction
- 1:01Perception of time in software
- 2:58The myth of moving fast
- 5:23Economic decisions for platforms
- 7:19Programming as an economic act
- 10:19Engineering at the stack's base
- 12:25Compatibility and human factors
- 15:32The role of language architect
- 20:21Deciding what not to add
- 23:34The challenge of compatibility
- 28:19Embrace and extend philosophy
- 34:16Iterative design process
- 37:34Lessons from past failures
- 41:27Avoiding foolish consistency
- 43:31Aligning with modern hardware
- 50:09Value types and generics
- 54:55Concluding thoughts
related talks
51mMoving Java Forward Faster
49mBackward Compatibility in the Java World
47mSave or Reimplement?
15mJava Devs Go! the Wrong Way 7 Times
35mWhat You've Missed by Staying on Java 8
49mModular Development with JDK 9
53mApproaching the JDK 25 LTS release through real-world migration
59mDecomposing Java applications
