Interesting ... can you find technical details on that? ...
I guess the more static typing you have to deal with when generating bytecode, the harder it is for dynamic language writers.
Still, generics are used to great effect in the DLR for the call-sites inline caches ... like when you have a "doSomething(x, 2)" ... you know that "2" is an integer constant, and the generated call-site method that does the inline caching (to avoid hash-lookups) is using an "int" as the second parameter ... they can do that because method references are getting specialized so you can avoid boxing/unboxing for obvious cases, like passing integer/double constants.
[EDIT]
The MethodHandler from OpenJDK's invokedynamic proposal is a light-weight method reference, resembling System.Reflection.Emit.DynamicMethod from dotNet. MethodHandler will be used for call-sites and I think MethodHandler also gets reified.
The thing I don't like about the JVM are the inconsistencies ... you've got primitive types, but you can't define your own. Arrays are reified (and now MethodHandlers too) ... but you have no way to have your own reified generic data-structures.
Still ... in the long-run I think the JVM is a better platform than .NET ... if only Oracle would not stagnate it (or maybe now that it's open-source, some fork might be in order ... but I don't think it's doable unless it's a big company with lots of resources ... maybe Google, but I'm not holding my breath).
I guess the more static typing you have to deal with when generating bytecode, the harder it is for dynamic language writers.
Still, generics are used to great effect in the DLR for the call-sites inline caches ... like when you have a "doSomething(x, 2)" ... you know that "2" is an integer constant, and the generated call-site method that does the inline caching (to avoid hash-lookups) is using an "int" as the second parameter ... they can do that because method references are getting specialized so you can avoid boxing/unboxing for obvious cases, like passing integer/double constants.
[EDIT]
The MethodHandler from OpenJDK's invokedynamic proposal is a light-weight method reference, resembling System.Reflection.Emit.DynamicMethod from dotNet. MethodHandler will be used for call-sites and I think MethodHandler also gets reified.
The thing I don't like about the JVM are the inconsistencies ... you've got primitive types, but you can't define your own. Arrays are reified (and now MethodHandlers too) ... but you have no way to have your own reified generic data-structures.
Still ... in the long-run I think the JVM is a better platform than .NET ... if only Oracle would not stagnate it (or maybe now that it's open-source, some fork might be in order ... but I don't think it's doable unless it's a big company with lots of resources ... maybe Google, but I'm not holding my breath).