TY - JOUR
T1 - Techniques for obtaining high performance in Java programs
AU - Kazi, Iffat H.
AU - Chen, Howard H.
AU - Stanley, Berdenia
AU - Lilja, David J
PY - 2000
Y1 - 2000
N2 - This survey describes research directions in techniques to improve the performance of programs written in the Java programming language. The standard technique for Java execution is interpretation, which provides for extensive portability of programs. A Java interpreter dynamically executes Java bytecodes, which comprise the instruction set of the Java Virtual Machine (JVM). Execution time performance of Java programs can be improved through compilation, possibly at the expense of portability. Various types of Java compilers have been proposed, including Just-In-Time (JIT) compilers that compile bytecodes into native processor instructions on the fly; direct compilers that directly translate the Java source code into the target processor's native language; and bytecode-to-source translators that generate either native code or an intermediate language, such as C, from the bytecodes. Additional techniques, including bytecode optimization, dynamic compilation, and executing Java programs in parallel, attempt to improve Java run-time performance while maintaining Java's portability. Another alternative for executing Java programs is a Java processor that implements the JVM directly in hardware. In this survey, we discuss the basic features, and the advantages and disadvantages, of the various Java execution techniques. We also discuss the various Java benchmarks that are being used by the Java community for performance evaluation of the different techniques. Finally, we conclude with a comparison of the performance of the alternative Java execution techniques based on reported results. Categories and Subject Descriptors: A.I [General Literature]: Introductory and Survey; C.4 [Computer Systems Organization]: Performance of Systems; D.3 [Software]: Programming Languages General Terms: Languages, Performance.
AB - This survey describes research directions in techniques to improve the performance of programs written in the Java programming language. The standard technique for Java execution is interpretation, which provides for extensive portability of programs. A Java interpreter dynamically executes Java bytecodes, which comprise the instruction set of the Java Virtual Machine (JVM). Execution time performance of Java programs can be improved through compilation, possibly at the expense of portability. Various types of Java compilers have been proposed, including Just-In-Time (JIT) compilers that compile bytecodes into native processor instructions on the fly; direct compilers that directly translate the Java source code into the target processor's native language; and bytecode-to-source translators that generate either native code or an intermediate language, such as C, from the bytecodes. Additional techniques, including bytecode optimization, dynamic compilation, and executing Java programs in parallel, attempt to improve Java run-time performance while maintaining Java's portability. Another alternative for executing Java programs is a Java processor that implements the JVM directly in hardware. In this survey, we discuss the basic features, and the advantages and disadvantages, of the various Java execution techniques. We also discuss the various Java benchmarks that are being used by the Java community for performance evaluation of the different techniques. Finally, we conclude with a comparison of the performance of the alternative Java execution techniques based on reported results. Categories and Subject Descriptors: A.I [General Literature]: Introductory and Survey; C.4 [Computer Systems Organization]: Performance of Systems; D.3 [Software]: Programming Languages General Terms: Languages, Performance.
KW - Bytecode-to-source translators
KW - Direct compilers
KW - Dynamic compilation
KW - Interpreters
KW - Java
KW - Java virtual machine
KW - Just-in-time compilers
UR - http://www.scopus.com/inward/record.url?scp=0000158567&partnerID=8YFLogxK
UR - http://www.scopus.com/inward/citedby.url?scp=0000158567&partnerID=8YFLogxK
U2 - 10.1145/367701.367714
DO - 10.1145/367701.367714
M3 - Article
AN - SCOPUS:0000158567
SN - 0360-0300
VL - 32
SP - 213
EP - 240
JO - ACM Computing Surveys
JF - ACM Computing Surveys
IS - 3
ER -