Computer Science and Information Systems 2014 Volume 11, Issue 1, Pages: 47-68
https://doi.org/10.2298/CSIS130129018C
Full text ( 883 KB)
Cited by
JINDY: A java library to support invokedynamic
Conde Patricia (University of Oviedo, Computer Science Department Calvo Sotelo, Oviedo, Spain)
Ortin Francisco (University of Oviedo, Computer Science Department Calvo Sotelo, Oviedo, Spain)
Java 7 has included the new invokedynamic opcode in the Java virtual machine.
This new instruction allows the user to define method linkage at runtime.
Once the link is established, the virtual machine performs its common
optimizations, providing better runtime performance than reflection. However,
this feature has not been offered at the abstraction level of the Java
programming language. Since the functionality of the new opcode is not
provided as a library, the existing languages in the Java platform can only
use it at the assembly level. For this reason, we have developed the JINDY
library that offers invokedynamic to any programming language in the Java
platform. JINDY supports three modes of use, establishing a trade-off between
runtime performance and flexibility. A runtime performance and memory
consumption evaluation is presented. We analyze the efficiency of JINDY
compared to reflection, the MethodHandle class in Java 7 and the Dynalink
library. The memory and performance costs compared to the invokedynamic
opcode are also measured.
Keywords: invokedynamic, Java Virtual Machine, dynamically generated classes, reflection, runtime performance