Skip to main content
Log in

Efficiently Adapting Java Binaries in Limited Memory Contexts

  • Published:
International Journal of Parallel Programming Aims and scope Submit manuscript

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.

This is a preview of subscription content, log in via an institution to check access.

Access this article

Price excludes VAT (USA)
Tax calculation will be finalised during checkout.

Instant access to the full article PDF.

Similar content being viewed by others

REFERENCES

  1. J. Gosling, B. Joy, and G. Steele, The Java(TM) Language Specification, Addison-Wesley (1996).

  2. IBM rewrites the book on Java performance, http://www.developer.ibm.com/java/j2/ j2perfpaper.html.

  3. Sun Microsystems, Inc., The Java HotSpot Performance Engine Architecture, http:// java.sun.com/products/hotspot/whitepaper.html (April 1999).

  4. 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).

    Google Scholar 

  5. Virtual machines are not all created equal: The J9 difference (2000), http://www.embedded.oti.com/learn/vaesvm.html.

  6. HP ChaiVM white paper (2000), http://www.internetsolutions.enterprise.hp.com/chai/ infolibrary/whitepapers/chai_vm_wp.html.

  7. EmbeddedJava(TM) application environment, http://java.sun.com/products/embedded java/.

  8. 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).

    Google Scholar 

  9. NaturalBridge, Inc. BulletTrain Description. At http://www.naturalbridge.com/bullettrain.html (2000).

  10. V. Seshadri, IBM High Performance Compiler for Java, AIXpert Magazine (September 1997), URL: http://www.developer.ibm.com/library/aixpert.

  11. Instantiations, Inc. Jove, Super Optimizing Deployment Environment for Java. At http://www.instantiations.com/_vti_bin/shtml.dll/JOVE/jovereportdownload.htm (2000).

  12. R. Fitzgerald, T. Knoblock, E. Ruf, B. Steensgard, and D. Tarditi, Marmot: An Optimizing Compiler for Java, Technical Report 33, Microsoft Research (June 1999).

  13. Tower Technology, TowerJ3-A New Generation Native Java Compiler and Runtime Environment, http://www.towerj.com/products/whitepapergnj.shtml (2000).

  14. 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).

    Google Scholar 

  15. 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).

    Google Scholar 

  16. 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).

    Google Scholar 

  17. 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).

    Google Scholar 

  18. T. Lindholm and F. Yellin, The Java Virtual Machine Specification, 2nd Ed., The Java Series, Addison-Wesley, Redwood City, California 94065 (1999).

    Google Scholar 

  19. The Standard Performance Evaluation Corporation, SPEC JVM98 Benchmarks, http://www.spec.org/osg/jvm98/ (1998).

  20. 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).

  21. P. Joisha, M. Serrano, S. Midkiff, and M. Gupta, Enabling Effcient Code Sharing in Java, 15th Int'l. Conf. Supercomputing, Sorrento, Italy (June 2000).

    Google Scholar 

  22. 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).

  23. 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).

    Google Scholar 

  24. MS SDK for Java 4.0, http://www.microsoft.com/java/vm.htm (1999).

  25. 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).

    Google Scholar 

  26. Turbochai compiler, http://embedded.hp.com/products/devtools/turbochai.html.

  27. P. Richards and D. Hicks, Virtual Integration, AS/400, pp. 50–56 (March 1998).

  28. D. Yu, Z. Shao, and V. Trifonov, Supporting Binary Compatibility with Static Compilation, Proc. USENIX Symp. Java Virtual Machines (JVM'02) (Aug. 2002).

  29. M. Jordan and M. Atkinson, Orthogonal Persistence for the Java Platform: Draft Specification (October 1999), http://www.sun.com/research/forest/index.html.

  30. 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).

    Google Scholar 

  31. IBM-developerworks-open source software-jikes' home, http://www-124.ibm.com/ developerworks/opensource/jike.

Download references

Author information

Authors and Affiliations

Authors

Rights and permissions

Reprints 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

Download citation

  • Issue Date:

  • DOI: https://doi.org/10.1023/A:1019851929010

Navigation