ACM Home Page
Please provide us with feedback. Feedback
Techniques for obtaining high performance in Java programs
Full text PdfPdf (816 KB)
Source ACM Computing Surveys (CSUR) archive
Volume 32 ,  Issue 3  (September 2000) table of contents
Pages: 213 - 240  
Year of Publication: 2000
ISSN:0360-0300
Authors
Iffat H. Kazi  Minnesota Supercomputing Institute, Univ. of Minnesota
Howard H. Chen  Minnesota Supercomputing Institute, Univ. of Minnesota
Berdenia Stanley  Minnesota Supercomputing Institute, Univ. of Minnesota
David J. Lilja  Minnesota Supercomputing Institute, Univ. of Minnesota
Publisher
ACM  New York, NY, USA
Bibliometrics
Downloads (6 Weeks): 91,   Downloads (12 Months): 487,   Citation Count: 7
Additional Information:

abstract   references   cited by   index terms   collaborative colleagues  

Tools and Actions: Request Permissions Request Permissions    Review this Article  
DOI Bookmark: Use this link to bookmark this Article: http://doi.acm.org/10.1145/367701.367714
What is a DOI?

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
4
5
 
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
9
 
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
 
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
 
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
 
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
 
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
 
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
 
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
75
 
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

Collaborative Colleagues:
Iffat H. Kazi: colleagues
Howard H. Chen: colleagues
Berdenia Stanley: colleagues
David J. Lilja: colleagues