Applying Optimizations for Dynamically-typed Languages to Java
Matthias Grimmer, Stefan Marr, Mario Kahlhofer, Christian L. Wimmer, Thomas Würthinger, Hanspeter Mössenböck · 2017
While Java is a statically-typed language, some of its features make it behave like a dynamically-typed language at run time. This includes Java's boxing of primitive values as well as generics, which rely on type erasure.