4 ms·
> Contrary to popular belief, Java's choice of erasure was not dictated by backward compatibility concerns but because erasure is a sound approach for type syst
by dtech 8y ago
> Contrary to popular belief, Java's choice of erasure was not dictated by backward compatibility concerns but because erasure is a sound approach for type system representation.
This is false. I cannot find the source at the moment, but in a talk about implementing improved lambda support in Java 8 a Java compiler dev clearly labeled type erasure as technical debt they have to work around.
It frequently bites them when they try to implement new things, and causes weird interaction with new language features they have to work around.
- merb 8y agowell to be fair, with this debt they came up with something really useful. indy and lambdametafactory
- jayd16 8y agoIn other talks Java language devs mention it as a conscious design choice.
- Someone 8y agoReading JSR-14 (https://download.oracle.com/otndocs/jcp/7566-generics-0.1-prd-spec-oth-JSpec/ https://download.oracle.com/otndocs/jcp/7566-generics-0.1-pr...), it was a conscious choice: ”Supporting generic types at run time seems undesirable for the following reasons: - Lack of experience with such constructs in widely used languages - Burden of extensive VM changes on vendors throughout the industry - Increased footprint on small devices - Decreased performance for generic methods - Compatibility” However, that doesn’t rule out it is technical debt, too. “Conscious design choice” and “technical debt” do not rule out each other.