Move Deliberately and Don’t Break Anything: Lessons from...Java
summary
Java evolution prioritizes compatibility over novelty: it measures compatibility across binary, source, behavioral, serialization surfaces, runs corpus analysis on 20–30 million lines of Java to count real-world patterns, and spends hundreds of hours resolving interactions (e.g., making default methods binary and source compatible, redesigning lambdas for serialization). Recent work builds value types and generics-over-values to fix object-layout and performance issues; generics-for-values costs roughly ten times the effort of value types alone. Designs iterate for years until rules fit existing mental models.
AI-written summary · about
chapters (9)
- 0:00Introduction to the talk
- 2:25Move fast and break things philosophy
- 11:17Why Java is at the bottom of the stack
- 13:46What a language designer really does
- 27:00Evolving compatibly is possible
- 35:55Complexity and the middle of design
- 41:11Java’s future directions
- 53:28Constraints of success
- 54:10Q&A session
related talks
56mJava Sucks (So C# Didn't Have To)
41mThis Ain’t Your Parents’ Java
40mFuture-Proofing Java: The Art of Crafting Resilient APIs
43mRolling with New Java Enhancements: Practical Design Patterns
24mPostcards from the Peak of Complexity
01h 02mThe Amazing Features of Modern Java
01h 04mStewardship: the Sobering Parts
46mWhere is the Java language going?
