Abstract
This paper presents a compilation framework that allows executable code to be shared across different Java Virtual Machine (JVM) instances. Current compliant JVMs for servers are burdened with large memory footprints (because of the size of the increasingly complicated compilers) and high startup costs, while compliant JVMs for embedded devices typically rely on interpretation. This paper describes a quasi-static approach that allows execution of a read-only version of the code, enabling compiled Java binaries to be embedded in ROM in an embedded environment or shared across multiple applications in a server environment. We have implemented this approach in the Quicksilver quasi-static compiler for the Jikes RVM (Jikes Research Virtual Machine). On the SPECjvm98 benchmark suite, our approach gives writable memory space savings of between 82–89% over that of our previous (non-sharable, non-ROMable) quasi-static approach, while delivering performance that is typically within 1–7% of that approach, and is competitive with the performance of the Jikes RVM adaptive optimization system.
Similar content being viewed by others
REFERENCES
J. Gosling, B. Joy, and G. Steele, The Java(TM) Language Specification, Addison-Wesley (1996).
IBM rewrites the book on Java performance, http://www.developer.ibm.com/java/j2/ j2perfpaper.html.
Sun Microsystems, Inc., The Java HotSpot Performance Engine Architecture, http:// java.sun.com/products/hotspot/whitepaper.html (April 1999).
M. Arnold, S. Fink, D. Grove, M. Hind, and P. Sweeney, Adaptive Optimization in the Jalapenõ JVM, Proc. ACM SIGPLAN Conf. Object-Oriented Progr. Syst. Lang. Appl.(OOPSLA), Minneapolis, Minnesota (October 2000).
Virtual machines are not all created equal: The J9 difference (2000), http://www.embedded.oti.com/learn/vaesvm.html.
HP ChaiVM white paper (2000), http://www.internetsolutions.enterprise.hp.com/chai/ infolibrary/whitepapers/chai_vm_wp.html.
EmbeddedJava(TM) application environment, http://java.sun.com/products/embedded java/.
D. Dillenberger, R. Bordawekar, C. Clark, D. Durand, D. Emmes, O. Gohda, S. Howard, M. Oliver, F. Samuel, and R. S. John, Building a Java Virtual Machine for Server Applications: The JVM on OS/390, IBM Syst. J., 39(1):194–210 (2000).
NaturalBridge, Inc. BulletTrain Description. At http://www.naturalbridge.com/bullettrain.html (2000).
V. Seshadri, IBM High Performance Compiler for Java, AIXpert Magazine (September 1997), URL: http://www.developer.ibm.com/library/aixpert.
Instantiations, Inc. Jove, Super Optimizing Deployment Environment for Java. At http://www.instantiations.com/_vti_bin/shtml.dll/JOVE/jovereportdownload.htm (2000).
R. Fitzgerald, T. Knoblock, E. Ruf, B. Steensgard, and D. Tarditi, Marmot: An Optimizing Compiler for Java, Technical Report 33, Microsoft Research (June 1999).
Tower Technology, TowerJ3-A New Generation Native Java Compiler and Runtime Environment, http://www.towerj.com/products/whitepapergnj.shtml (2000).
M. J. Serrano, R. Bordawekar, S. P. Midkiff, and M. Gupta, Quicksilver: A Quasi-Static Compiler for Java, Proc. Conf. Object-Oriented Progr. Syst. Lang. Appl. (OOPSLA), pp. 66–82, Minneapolis, Minnesota (October 2000).
B. Alpern, M. Charney, J.-D. Choi, A. Cocchi, and D. Lieber, Dynamic Linking on a Shared-Memory Multiprocessor, Proc. PACT'99, Los Angeles, California (June 1999).
B. Alpern, C. R. Attanasio, J. J. Barton, M. G. Burke, P. Cheng, J.-D. Choi, A. Cocchi, S. J. Fink, D. Grove, M. Hind, S. Flynn-Hummel, D. Lieber, V. Litvinov, M. F. Mergen, T. Ngo, J. R. Russell, V. Sarkar, M. J. Serrano, J. C. Shepherd, S. E. Smith, V. C. Sreedhar, H. Srinivasan, and J. Whaley, The Jalapenõ Virtual Machine, IBM Syst. J., 39(1):211–238 (2000).
J. Gosling, B. Joy, G. Steele, and G. Bracha, The Java Language Specification, 2nd Ed., The Java Series, Addison-Wesley Publishing Company, Redwood City, California 94065 (2000).
T. Lindholm and F. Yellin, The Java Virtual Machine Specification, 2nd Ed., The Java Series, Addison-Wesley, Redwood City, California 94065 (1999).
The Standard Performance Evaluation Corporation, SPEC JVM98 Benchmarks, http://www.spec.org/osg/jvm98/ (1998).
A. Zaks, V. Feldman, and N. Aizikowitz, Sealed Calls in Java Packages, Proc. Conf.Object-Oriented Progr. Syst. Lang. Appl. (OOPSLA'00), pp. 83–92 (October 2000).
P. Joisha, M. Serrano, S. Midkiff, and M. Gupta, Enabling Effcient Code Sharing in Java, 15th Int'l. Conf. Supercomputing, Sorrento, Italy (June 2000).
S. Midkiff, P. G. Joisha, M. Serrano, M. Gupta, A. Bolmarcich, and P. Wu, Quicksilver: A Quasi-Static Compiler for Embedded Systems. In V. Narayanan and M. Wolczko (eds.), Java MicroArchitectures, Kluwer Academic Publishers (April 2002).
T. Suganuma, T. Ogasawara, M. Takeuchi, T. Yasue, M. Kawahito, K. Ishizaki, H. Komatsu, and T. Nakatani, Overview of the IBM Java Just-in-Time Compiler, IBM Syst. J., 39(1):175–193 (2000).
MS SDK for Java 4.0, http://www.microsoft.com/java/vm.htm (1999).
H. Ogawa, K. Shumira, S. Matsuoka, F. Maruyama, Y. Sohda, and F. Kimura, OpenJIT: An Open-Ended, Reflective JIT Compiler Framework for Java, Proc. European Conf.Object-Oriented Progr., Cannes, France (June 2000).
Turbochai compiler, http://embedded.hp.com/products/devtools/turbochai.html.
P. Richards and D. Hicks, Virtual Integration, AS/400, pp. 50–56 (March 1998).
D. Yu, Z. Shao, and V. Trifonov, Supporting Binary Compatibility with Static Compilation, Proc. USENIX Symp. Java Virtual Machines (JVM'02) (Aug. 2002).
M. Jordan and M. Atkinson, Orthogonal Persistence for the Java Platform: Draft Specification (October 1999), http://www.sun.com/research/forest/index.html.
G. Czajkowski, Application Isolation in the Java Virtual Machine, Proc. Conf. Object-Oriented Progr. Syst. Lang. Appl. (OOPSLA), pp. 354–366, Minneapolis, Minnesota (October 2000).
IBM-developerworks-open source software-jikes' home, http://www-124.ibm.com/ developerworks/opensource/jike.
Author information
Authors and Affiliations
Rights and permissions
About this article
Cite this article
Joisha, P.G., Midkiff, S.P., Serrano, M.J. et al. Efficiently Adapting Java Binaries in Limited Memory Contexts. International Journal of Parallel Programming 30, 257–289 (2002). https://doi.org/10.1023/A:1019851929010
Issue Date:
DOI: https://doi.org/10.1023/A:1019851929010