A New Model for Java Object Initialization
summary
Proposal repurposes the ACC_STRICT flag and adds Flexible Constructor Bodies so instance fields, statics and arrays can be strictly initialized and never observed in a larval state. It introduces library forms like newInstanceWith to create strictly-initialized arrays, changes serialization to deserialize fields before publishing, and enforces that value-class fields get ACC_STRICT. A corpus analysis of 2.3M classes finds 63% of final fields movable to early init, 12% maybe, 25% requiring refactor. Goal: enable safe flattening, reliable null-restrictions and predictable final-field caching.
AI-written summary · about
chapters (4)
- 0:00Java object initialization challenges
- 13:12Strict initialization proposal
- 27:07Instance fields and arrays solutions
- 40:29Strict initialization benefits
related talks
41mA New Model for Java Object Initialization
46mFrom Final to Immutable: The not-so-final word on `final`
39mEverything You Never Wanted to Know about Java Class Initialization
53mWhy We Hate Java Serialization And What We're Doing About It
37mRecords, Not Just Constant Classes, A Deep Dive
37mTruly Final Fields
55mNew Bytecodes, New Objects
49mMarshalling: Data-Oriented Serialization
