Move Deliberately & Don't Break Anything
summary
Explains why Java prioritizes binary compatibility (call-site linkage), source and behavioral compatibility, and serialization, showing concrete examples: default methods resolve conflicts by preferring superclass implementations (keeps old code working), autoboxing adds a two-step overload rule to preserve resolves, and generics took roughly a decade to get right. Describes current VM work on value types and making generics work over primitives, mentions an OpenJDK prototype, and emphasizes long iteration cycles (multiple years, six-plus iterations) before shipping.
AI-written summary · about
chapters (17)
- 0:00Intro
- 3:55Move fast and break things
- 10:00Engineering closer to the bottom
- 12:50The people part
- 17:42The hard work
- 19:53Compatibility
- 22:53Developers overestimate the importance of code
- 24:48How to evolve
- 26:20Example
- 28:16Evolutionary Track
- 29:27Embrace and Extend
- 32:25Steve Jobs Quote
- 37:19Ralph Waldo Emerson Quote
- 39:16Hardware
- 42:29Arrays
- 45:22Values
- 47:37Generics
related talks
40mDemystifying the Most Significant Java Language Features from 9 to 11
49mNot Your Father's Java, Not Your Mother's JavaScript
42mA Game of Theories: Why languages do what they do
26mJavaScript VMs 101
01h 10mA Penny for Every Object
31mJavaScript Compilation Techniques or "Wasn't JavaScript supposed to be slow?"
20mSymbiotic Languages
26mJavaScript Level 9000
