|
ABSTRACT
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 bytecode 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 basis 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.
REFERENCES
Note: OCR errors may be found in this Reference List extracted from the full text article. ACM has opted to expose the complete List rather than only correct and linked references.
| |
1
|
ARMSTRONG, E. 1998. HotSpot: A new breed of virtual machine. Java World, Mar.
|
| |
2
|
|
| |
3
|
Alfred V. Aho , Ravi Sethi , Jeffrey D. Ullman, Compilers: principles, techniques, and tools, Addison-Wesley Longman Publishing Co., Inc., Boston, MA, 1986
|
 |
4
|
Ana Azevedo , Alex Nicolau , Joe Hummel, Java annotation-aware just-in-time (AJIT) complilation system, Proceedings of the ACM 1999 conference on Java Grande, p.142-151, June 12-14, 1999, San Francisco, California, United States
[doi> 10.1145/304065.304115]
|
 |
5
|
Ali-Reza Adl-Tabatabai , Michał Cierniak , Guei-Yuan Lueh , Vishesh M. Parikh , James M. Stichnoth, Fast, effective code generation in a just-in-time Java compiler, Proceedings of the ACM SIGPLAN 1998 conference on Programming language design and implementation, p.280-290, June 17-19, 1998, Montreal, Quebec, Canada
|
| |
6
|
BIK, A. AND GANNON, D. 1997. Automatically exploiting implicit parallelism in Java. In Concurrency: Practice and Experience, vol. 9, no. 6, 579-619.
|
| |
7
|
BIK, A. AND GANNON, D. 1998. Javab-A prototype bytecode parallelization tool, ACM Workshop on Java for High-Performance Network Computing.
|
 |
8
|
David F. Bacon , Ravi Konuru , Chet Murthy , Mauricio Serrano, Thin locks: featherweight synchronization for Java, Proceedings of the ACM SIGPLAN 1998 conference on Programming language design and implementation, p.258-268, June 17-19, 1998, Montreal, Quebec, Canada
|
 |
9
|
Michael G. Burke , Jong-Deok Choi , Stephen Fink , David Grove , Michael Hind , Vivek Sarkar , Mauricio J. Serrano , V. C. Sreedhar , Harini Srinivasan , John Whaley, The Jalapeño dynamic optimizing compiler for Java, Proceedings of the ACM 1999 conference on Java Grande, p.129-141, June 12-14, 1999, San Francisco, California, United States
[doi> 10.1145/304065.304113]
|
| |
10
|
ByteMark, http://www.byte.com.
|
| |
11
|
CIERNIAK, M. AND LI, W. 1997a. Optimizing Java bytecodes. In Concurrency: Practice and Experience, vol. 9, no. 6, 427-444.
|
| |
12
|
CIERNIAK, M. AND LI, W. 1997b. Just-in-time optimizations for high-performance Java programs. In Concurrency: Practice and Experience, vol. 9, no. 11, 1063-1073.
|
 |
13
|
Pohua P. Chang , Scott A. Mahlke , William Y. Chen , Nancy J. Warter , Wen-mei W. Hwu, IMPACT: an architectural framework for multiple-instruction-issue processors, Proceedings of the 18th annual international symposium on Computer architecture, p.266-275, May 27-30, 1991, Toronto, Ontario, Canada
|
| |
14
|
CaffeineMark, http://www.pendragon-software.com/ pendragon/cm3/info.html.
|
| |
15
|
CUP Parser Generator for Java, http://www.cs. princeton.edu/ appel/modern/java/CUP.
|
| |
16
|
|
 |
17
|
Jeffrey Dean , Greg DeFouw , David Grove , Vassily Litvinov , Craig Chambers, Vortex: an optimizing compiler for object-oriented languages, Proceedings of the 11th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications, p.83-100, October 06-10, 1996, San Jose, California, United States
|
| |
18
|
DashO Pro, http://www.preemptive.com/DashO/.
|
| |
19
|
Dhrystone Benchmark, http://www.netlib.org/ benchmark/dhry-c.
|
| |
20
|
Dhrystone Benchmark in Java, http://www.ccreators.co.jp/okayan/DhrystoneApplet/.
|
| |
21
|
EBCIOGLU, K., ALTMAN, E., AND HOKENEK, E. 1997. A Java ILP machine based on fast dynamic compilation. In International Workshop on Security and Efficiency Aspects of Java, Eilat, Israel, Jan. 9-10.
|
| |
22
|
EspressoGrinder, http://wwwipd.ira.uka.de/~espresso/.
|
| |
23
|
FAJITA FAJITA Compiler Project, http://www.ri. silicomp.fr/adv-dvt/java/fajita/index-b.htm.
|
| |
24
|
|
| |
25
|
|
| |
26
|
|
| |
27
|
ICHISUGI, Y. AND ROUDIER, Y. 1997. Integrating data-parallel and reactive constructs into Java. In Proceedings of France-Japan Workshop on Object-Based Parallel and Distributed Computation (OBPDC '97), France.
|
| |
28
|
IVANNIKOV, V., GAISSARAYAN, S., DOMRACHEV, M., ETCH, V., AND SHTALTOVNAYA, N. 1997. DPJ: Java Class Library for Development of Data- Parallel Programs. Institute for Systems Programming, Russian Academy of Sciences, http://www.ispras.ru/~dpj/.
|
 |
29
|
Kazuaki Ishizaki , Motohiro Kawahito , Toshiaki Yasue , Mikio Takeuchi , Takeshi Ogasawara , Toshio Suganuma , Tamiya Onodera , Hideaki Komatsu , Toshio Nakatani, Design, implementation, and evaluation of optimizations in a just-in-time compiler, Proceedings of the ACM 1999 conference on Java Grande, p.119-128, June 12-14, 1999, San Francisco, California, United States
[doi> 10.1145/304065.304111]
|
| |
30
|
Jas: Bytecode Assembler, http://www.meurrens. org/ip-Links/Java/codeEngineering/blackDown/ jas.html.
|
| |
31
|
Java Benchmarks-VolanoMark, http://www.volano. com/mark.html.
|
| |
32
|
Java Compiler Technology, http://www.gr.opengroup. org/compiler/index.htm.
|
| |
33
|
Java Grande Forum Benchmark: Links to Other Java Benchmarks, http://www.epcc.ed.ac.uk/ research/javagrande/links.html.
|
| |
34
|
Java Grande Forum Benchmark Suite, http://www.
|
| |
35
|
epcc.ed.ac.uk/research/javagrande/benchmarking. html.
|
| |
36
|
Java Grande Forum Report: Making Java Work for High-End Computing, JavaGrande Forum Panel, SC98, Nov. 1998, http://www.javagrande. org/reports.htm.
|
| |
37
|
Java Microbenchmarks, http://www.cs.cmu.edu/jch/ java/benchmarks.html.
|
| |
38
|
Jax: Scanner Generator, http://www.meurrens. org/ip-Links/Java/codeEngineering/blackDown/ jax.html.
|
| |
39
|
Jell: Parser Generator, http://www.meurrens.org/ ip-Links/Java/codeEngineering/blackDown/jell. html.
|
| |
40
|
JHLUnzip-A Zippy Utility, http://www.easynet. it/jhl/apps/zip/unzip.html.
|
| |
41
|
JHLZip-Another Zippy Utility, http://www. easynet. it/jhl/apps/zip/zip.html.
|
| |
42
|
JLex: A Lexical Analyzer Generator for Java, http://www.cs.princeton.edu/appel/modern/java/ JLex.
|
| |
43
|
Just-In-Time Compilation and the Microsoft VM for Java, http://premium.microsoft.com/msdn/ library/sdkdoc/java/htm/Jit Structure.htm.
|
| |
44
|
|
| |
45
|
KRALL, A. AND GRAFL, R. 1997. CACAO-A 64 bit Java VM just-in-time compiler. In Principles & Practice of Parallel Programming (PPoPP) '97 Java Workshop.
|
| |
46
|
KRALL, A. AND PROBST, M. 1998. Monitors and exceptions: How to implement Java efficiently. In ACM Workshop on Java for High-Performance Network Computing.
|
 |
47
|
Brad Calder , Chandra Krintz , Urs Hölzle, Reducing transfer delay using Java class file splitting and prefetching, Proceedings of the 14th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications, p.276-291, November 01-05, 1999, Denver, Colorado, United States
|
| |
48
|
|
| |
49
|
LAUNAY, P. AND PAZAT, J. L. 1997. A Framework for Parallel Programming in Java. IRISA, France, Tech. Rep. 1154, Dec.
|
| |
50
|
|
| |
51
|
Linpack Benchmark-Java Version, http://www. netlib.org/benchmark/linpackjava/.
|
| |
52
|
|
| |
53
|
|
| |
54
|
MULLER, G., MOURA, B., BELLARD, F., AND CONSEL, C. 1997. Harissa: A flexible and efficient Java environment mixing bytecode and compiled code. In Conference on Object-Oriented Technologies and Systems (COOTS).
|
| |
55
|
MATSUOKA, S., OGAWA, H., SHIMURA, K., KIMURA, Y., HOTTA, K., AND TAKAGI, H. 1998. OpenJIT-A reflective Java JIT compiler. In Proceedings of OOPSLA '98 Workshop on Reflective Programming in C++ and Java, 16-20.
|
| |
56
|
J. E. Moreira , S. P. Midkiff , M. Gupta , P. V. Artigas , M. Snir , R. D. Lawrence, Java programming for high-performance numerical computing, IBM Systems Journal, v.39 n.1, p.21-56, January 2000
|
| |
57
|
Microsoft SDK Tools, http://premium.microsoft.com/ msdn/library/sdkdoc/java/htm.
|
| |
58
|
|
| |
59
|
POSTEL, J. B. 1981. Transmission Control Protocol. RFC 791, Sept.
|
 |
60
|
|
| |
61
|
PROEBSTING, T. A., TOWNSEND, G., BRIDGES, P., HARTMAN, J. H., NEWSHAM, T., AND WATTERSON, S. A. 1997. Toba: Java for applications a way ahead of time (WAT) compiler. In Conference on Object-Oriented Technologies and Systems (COOTS).
|
| |
62
|
Patriot Scientific Corporation. Java on Patriot's PSC1000 Microprocessor, http://www.ptsc.com/ PSC1000/java psc1000.html.
|
| |
63
|
PC Magazine Test Center: JMark 1.01, http:// www8. zdnet.com/pcmag/pclabs/bench/benchjm.htm.
|
| |
64
|
Remote Method Invocation Specification, http://java. sun.com/products/jdk/1.1/docs/guide/rmi-/spec/ rmiTOC.doc.html.
|
| |
65
|
SESHADRI, V. 1997. IBM high performance compiler for Java. AIXpert Magazine, Sept., http://www. developer.ibm.com/library/aixpert.
|
| |
66
|
|
| |
67
|
T. Suganuma , T. Ogasawara , M. Takeuchi , T. Yasue , M. Kawahito , K. Ishizaki , H. Komatsu , T. Nakatani, Overview of the IBM Java just-in-time compiler, IBM Systems Journal, v.39 n.1, p.175-193, January 2000
|
| |
68
|
SPEC JVM98 Benchmarks, http://www.spec.org/ org/jvm98/.
|
| |
69
|
Sun Microsystems-The Source for Java Technology, http://java.sun.com.
|
| |
70
|
Sun Microsystems. MicroJava-701 Processor, http:// www.sun.com/microelectronics/microJava-701.
|
| |
71
|
Symantec-Just-In-Time Compiler Performance Analysis, http://www.symantec.com/jit/jit pa. html.
|
| |
72
|
SYSmark J, http://www.bapco.com/SYSmarkJ.html.
|
| |
73
|
TURLEY, J. 1997. MicroJava Pushes Bytecode Performance-Sun's MicroJava 701 Based on New Generation of PicoJava Core. Microprocessor Rep., vol. 11, no. 15, Nov. 17.
|
 |
74
|
Frank Tip , Peter F. Sweeney, Class hierarchy specialization, Proceedings of the 12th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications, p.271-285, October 05-09, 1997, Atlanta, Georgia, United States
|
 |
75
|
Frank Tip , Chris Laffra , Peter F. Sweeney , David Streeter, Practical experience with an application extractor for Java, Proceedings of the 14th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications, p.292-305, November 01-05, 1999, Denver, Colorado, United States
|
| |
76
|
The Java Hotspot Performance Engine Architecture, http://java.sun.com/products/hotspot/- whitepaper.html.
|
| |
77
|
TurboJ Benchmark's Results, http://www.camb. opengroup.org/openitsol/turboj/technical/ benchmarks.htm.
|
| |
78
|
TurboJ Java to Native Compiler, http://www. ri.silicomp.fr/adv-dvt/java/turbo/index-b.htm.
|
| |
79
|
UCSD Benchmarks for Java, http://www-cse.ucsd. edu/users/wgg/JavaProf/javaprof.html.
|
| |
80
|
UW Cecil/Vortex Project, http://www.cs.washington. edu/research/projects/cecil.
|
| |
81
|
|
| |
82
|
|
| |
83
|
Welcome to Harissa, http://www.irisa.fr/compose/ harissa/.
|
| |
84
|
Welcome to JMark 2.0, http://www.zdnet.com/ zdbop/jmark/jmark.html.
|
| |
85
|
Wilkinson, T., Kaffe v0.10.0-A Free Virtual Machine to Run Java Code, Mar. 1997. Available at http://www.kaffe.org/.
|
CITED BY 7
|
|
Mikel Luján , Mikel Luján , John R. Gurd , T. L. Freeman , José Miguel, Elimination of Java array bounds checks in the presence of indirection, Proceedings of the 2002 joint ACM-ISCOPE conference on Java Grande, p.76-85, November 03-05, 2002, Seattle, Washington, USA
|
|
|
|
|
|
|
|
|
I. H. Kazi , D. P. Jose , B. Ben-Hamida , C. J. Hescott , C. Kwok , J. A. Konstan , D. J. Lilja , P.-C. Yew, JaViz: a client/server Java profiling tool, IBM Systems Journal, v.39 n.1, p.96-117, January 2000
|
|
|
|
|
|
|
|
|
|
|