Abstract
The Java programming language has its origins in the development of portable internet applications, that are interpreted on the client machine. However, a number of software projects have adopted it as the language of choice for a wide variety of applications, including numerically intensive scientific computing. Given its heritage, the suitability of Java for such application domains remains questionable, which is reflected in large number of users reporting poor performance compared to native compilers for C or Fortran.
At heart, Java is an object-oriented language enabling the rapid development of modular and maintainable programs. It provides an integral security modeland features array bounds checking, arbitrarily shaped arrays, a deterministic floating-point arithmetic on all platforms, automatic memory management using garbage collection, multi-threaded execution and a portable byte code representation. These features ease the development of scientific applications but may hinder efficient execution of the applications. This article shows state of the art compilation techniques addressing these language features to achieve optimal performance. Efficient solutions for a large number of performance problems encountered in the past are available in the current generation of Java compilers. We may thus conclude that a maturing Java is suited for large scale scientific applications.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
Similar content being viewed by others
References
R. Bodik, R. Gupta, and V. Sarkar. ABCD: Eliminating array bound checks on demand, in Conference on Programming Language Design and Implementation, SIGPLAN, Vancouver, ACM, 35(5), 321–333, 2000.
D. F. Bacon, R. Konuru, C. Mruthy, and M. Serrano. Thin locks: Featherweight synchronization for Java, in Conference on Programming Language Design and Implementation, SIGPLAN, Montreal, ACM, 33(5), 258–268, 1998.
D. Detlefs and O. Agesen. The case for multiple compilers, in Proc. OOPSLA 1999 VM Workshop on Simplicity, Performance and Portability in Virtual Machine Design, 1997.
R. Fitzgerald, T. B. Knoblock, E. Ruf, B. Steensgaard, and D. Tarditi. Marmot: an optimizing compiler for Java, Software-Practice and Experience, 30(3), 199–232, 2000.
S. Gehmawat, K. H. Randall, and D.J. Scales. Field analysis: Getting useful and low-cost interprocedural information, in Conference on Programming Language Design and Implementation, SIGPLAN, Vancouver, ACM, 35(5), 334–344, 2000.
A. Krall and R. Grafl. CACAO-a 64 bit JavaVM just-in-time compiler, Concurrency: Practice and Experience, 9(11), 1017–1030, 1997.
A. Krall and M. Probst. Monitors and exceptions: How to implement Java efficiently, Concurrency: Practice and Experience, 10(11–13), 837–850, 1998.
A. Krall. Efficient JavaVM just-in-time compilation, in Jean-Luc Gaudiot, (ed.), International Conference on Parallel Architectures and Compilation Techniques, Paris, IFIP,ACM,IEEE, North-Holland, 205–212, 1998.
A. Krall and P. Tomsich. Garbage collection for large memory Java applications, in Proc. of the 7th European Conference on High-Performance Computing and Networking (HPCN Europe‘99), Lecture Notes in Computer Science,1593, Springer Verlag, 895–907, 1999.
J. E. Moreira, S. P. Midkoff, M. Gupta, P. V. Artigas, M. Snir, and R. D. Lawrence. Java programming for high-performance numericalcomputing, IBM Systems Journal, 39(1), 21–56, 2000.
NaturalBridge. BulletTrainTM optimizing compiler and runtime for JVM bytecode, http://www.naturalbridge.com.
P. Pominville, F. Quian, R. Vallee-Rai, L. Hendren, and C. Verbrugge. A framework for optimizing Java using attrributes, in CASCON, Mississauga, IBM, 2000.
E. Ruf. Effective synchronization removalfor Java, in Conference on Programming Language Design and Implementation, SIGPLAN, Vancouver, ACM, 35(5) 208–218, 2000.
T. Suganuma, T. Ogasawara, M. TaT. Yasuekeuchi,, M. Kawahito, K. Ishizaki, and H. Komatsuatani. Overview of the IBM Java just-in-time compiler, IBM Systems Journal, 39(1), 175–193, 2000.
D. J. Scales, K. H. Randall, S. Ghemawat, and J. Dean. The Swift compiler: Design and implementation, Technical Report 2000/2, Compaq Western Research Laboratory, April2000.
T. Smith, S. Srinivas, P. Tomsich, and J. Park. Practicalexp eriences with Java compilation, in Proceedings of the Intl. Conf. on High-Performance Computing, Lecture Notes in Computer Science, Springer, 1970, 2000.
Tower Technologies. TowerJ 3.0: A new generation native Java compiler and runtime environment, http://www.towerj.com .
J. Vitek, N. Horspool, and A. Krall. Efficient type inclusion tests, in T. Bloom, (ed.), Conference on Object Oriented Programming Systems, Languages & Applications (OOPSLA ‘97), Atlanta, ACM, 142–157, 1997.
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2001 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Krall, A., Tomsich, P. (2001). Java for Large-Scale Scientific Computations?. In: Margenov, S., Waśniewski, J., Yalamov, P. (eds) Large-Scale Scientific Computing. LSSC 2001. Lecture Notes in Computer Science, vol 2179. Springer, Berlin, Heidelberg. https://doi.org/10.1007/3-540-45346-6_23
Download citation
DOI: https://doi.org/10.1007/3-540-45346-6_23
Published:
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-43043-8
Online ISBN: 978-3-540-45346-8
eBook Packages: Springer Book Archive