How We Got the Generics We Have (Or, how I learned to stop worrying and love erasure) by @BrianGoetz openjdk.java.net/projects/valha… After 18+ months, I finally got around to read this one and it's really informative. Here are the closing arguments to what pushed Java to erasure. 🧵
Migration compatibility There was no known translation scheme at the time that would have allowed a migration to reified generics to be source- and binary-compatible, thus creating flag days and invalidating developer’s considerable investment in their existing code.
Run-time Costs #1 A heterogeneous translation entails run-time costs: greater static+dynamic footprint, greater class-loading costs, greater JIT costs and code cache pressure, … This might have put devs in a position where they had to choose between type-safety and performance.