skip to main content
10.1145/1735997.1736006acmconferencesArticle/Chapter ViewAbstractPublication PagesveeConference Proceedingsconference-collections
research-article

VMKit: a substrate for managed runtime environments

Authors Info & Claims
Published:17 March 2010Publication History

ABSTRACT

Managed Runtime Environments (MREs), such as the JVM and the CLI, form an attractive environment for program execution, by providing portability and safety, via the use of a bytecode language and automatic memory management, as well as good performance, via just-in-time (JIT) compilation. Nevertheless, developing a fully featured MRE, including e.g. a garbage collector and JIT compiler, is a herculean task. As a result, new languages cannot easily take advantage of the benefits of MREs, and it is difficult to experiment with extensions of existing MRE based languages.

This paper describes and evaluates VMKit, a first attempt to build a common substrate that eases the development of high-level MREs. We have successfully used VMKit to build two MREs: a Java Virtual Machine and a Common Language Runtime. We provide an extensive study of the lessons learned in developing this infrastructure, and assess the ease of implementing new MREs or MRE extensions and the resulting performance. In particular, it took one of the authors only one month to develop a Common Language Runtime using VMKit. VMKit furthermore has performance comparableto the well established open source MREs Cacao, Apache Harmony and Mono, and is 1.2 to 3 times slower than JikesRVM on most of the Dacapo benchmarks.

References

  1. B. Alpern, A. Cocchi, S. Fink, and D. Grove. Efficient implementation of Java interfaces: Invokeinterface considered harmless. In Proceedings of the Object Oriented Programming, Systems, Languages, and Applications Conference, pages 108--124, Tampa Bay, FL, USA, 2001. Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. D. Bacon, R. Konuru, C. Murthy, and M. Serrano. Thin locks: Featherweight synchronization for Java. In Proceedings of the Programming Language Design and Implementation Conference, pages 258--268, Montreal, Canada, 1998. Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. S.M. Blackburn, P. Cheng, and K.S. McKinley. Oil and water? High performance garbage collection in Java with MMTk. In InternationalConference on Software Engineering, pages 137--146, Edinburgh, Scotland, May 2004. IEEE Computer Society. Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. S.M. Blackburn, R. Garner, C. Hoffmann, A.M. Khang, K.S. McKinley, R. Bentzur, A. Diwan, D. Feinberg, D. Frampton, S.Z. Guyer, M. Hirzel, A. Hosking, M. Jump, H. Lee, J.E.B. Moss, B. Moss, A. Phansalkar, D. Stefanovi , T. VanDrunen, D. von Dincklage, and B. Wiedermann. The DaCapo benchmarks: Java benchmarking development and analysis. In 21st annual ACM SIGPLAN conference on Object--oriented programming systems,languages, and applications (OOPSLA'06), pages 169--190, Portland, OR, USA, Oct. 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. S.M. Blackburn and A.L. Hosking. Barriers: friend or foe? In 4th international symposium on Memory management (ISMM'04), pages 143--151, Vancouver, BC, Canada, Oct. 2004. Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. S.M. Blackburn and K.S. McKinley. Immix: a mark-region garbage collector with space efficiency, fast collection, and mutator performance. In PLDI '08: Proceedings of the 2008 ACM SIGPLAN conference on Programming language design and implementation, pages 22--32, Tucson, AZ, USA, 2008. ACM. Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. R. Bodík, R. Gupta, and V. Sarkar. ABCD: eliminating array bounds checks on demand. In Proceedings of the Programming Language Design and Implementation Conference, pages 321--333, Vancouver, Canada, June 2000. ACM. Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. H. Boehm, A. Demers, and S. Shenker. Mostly parallel garbage collection. In Proceedings of the Programming Language Design and Implementation Conference, pages 157--164, Toronto, Canada, June 1991. Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. D. Buttlar, J. Farrell, and B. Nichols. PThreads Programming: A POSIX Standard for Better Multiprocessing. O'Reilly Media, 1996. Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. M. Chang, E. Smith, R. Reitmaier, M. Bebenita, A. Gal, C. Wimmer, B. Eich, and M. Franz. Tracing for web 3.0: trace compilation forthe next generation web applications. In VEE '09: Proceedings of the 2009 ACM SIGPLAN/SIGOPS international conference on Virtual execution environments, pages 71--80, New York, NY, USA, 2009. ACM. Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. P. Charles, C. Grothoff, V. Saraswat, C. Donawa, A. Kielstra, K. Ebcioglu, C. von Praun, and V. Sarkar. X10: an object-oriented approach to non-uniform cluster computing. In Proceedings of the Object-oriented programming, systems, languages, and applications Conference, pages 519--538, San Diego, USA, October 2005. ACM. Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. P. Cheng, D. Grove, M. Hirzel, R. O'Callahan, and N. Swamy. Parley: Federated virtual machines. In Workshop on the Future of Virtual Execution Environments, Sept. 2004.Google ScholarGoogle Scholar
  13. M. Cierniak, B.T. Lewis, and J.M. Stichnoth. Open runtime platform: Flexibility with performance using interfaces. In Proceedings of the Java Grande Conference, pages 156--164, Seattle, USA, 2002. Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. M. Cierniak, G. Lueh, and J. Stichnoth. Practicing JUDO: Java under Dynamic Optimizations. In Proceedings of the Programming Language Design and Implementation Conference, pages 13--26, Vancouver, BC, Canada, 2000. ACM. Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. C. Click and J. Rose. Fast subtype checking in the HotSpot JVM. In JGI '02: Proceedings of the 2002 joint ACM-ISCOPE conference on Java Grande, pages 96--107, Seattle, Washington, USA, 2002. ACM. Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. G. Czajkowski and L. Daynès. Multitasking without compromise: a virtual machine evolution. Proceedings of the Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA'01), pages 125--138, October 2001. Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. L. Daynès and G. Czajkowski. Sharing the runtime representation of classes across class loaders. In Proceedings of the European Conference on Object-Oriented Programming (ECOOP'05), pages 97--120, Glasgow, UK, 2005. Springer-Verlag. Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. DotGNU portable.NET. dotgnu.org/pnet.html.Google ScholarGoogle Scholar
  19. The Dwarf Debugging Standard. http://dwarfstd.org.Google ScholarGoogle Scholar
  20. ECMA International. Common Language Infrastructure (CLI), 4th Edition.Google ScholarGoogle Scholar
  21. C. Escoffier, D. Donsez, and R.S. Hall. Developing an OSGilike service platform for .NET. In Proceedings of the Consumer Communications and Networking Conference, Las Vegas, NV, USA, Jan. 2006. IEEE Computer Society.Google ScholarGoogle Scholar
  22. B. Ford, G. Back, G. Benson, J. Lepreau, A. Lin, and O. Shivers. The Flux OSKit: A substrate for kernel and language research. In Proceedings of the Symposium on Operating Systems Principles (SOSP'97), pages 38--51, Saint-Malo, France, Oct. 1997. Google ScholarGoogle ScholarDigital LibraryDigital Library
  23. D. Frampton, S.M. Blackburn., P. Cheng, R.J. Garner, D. Grove, J.E.B. Moss, and S. I. Salishev. Demystifying magic: high-level low-level programming. In VEE '09: Proceedings of the 2009 ACM SIGPLAN/SIGOPS international conference on Virtual execution environments, pages 81--90, New York, NY, USA, 2009. ACM. Google ScholarGoogle ScholarDigital LibraryDigital Library
  24. N. Geoffray, G. Thomas, C. Clément, and B. Folliot. A lazy developer approach: Building a JVM with third party software. In International Conference on Principles and Practice of Programming In Java (PPPJ 2008), Modena, Italy, September 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  25. N. Geoffray, G. Thomas, G. Muller, P. Parrend, S. Frénot, and B. Folliot. I-JVM: a Java virtual machine for component isolation in OSGi. In Proceedings of the 39th International Conference on Dependable Systems and Networks (DSN 2009), pages 544--553, Estoril, Portugal, June 2009. IEEE Computer Society.Google ScholarGoogle ScholarCross RefCross Ref
  26. The GNU Classpath Project. http://www.gnu.org/software/classpath.Google ScholarGoogle Scholar
  27. The GNU Compiler Collection. http://gcc.gnu.org/.Google ScholarGoogle Scholar
  28. J. Gosling, B. Joy, G. Steele, and G. Bracha. The Java Language Specification Second Edition. Addison-Wesley, Boston, USA, 2000. Google ScholarGoogle ScholarDigital LibraryDigital Library
  29. N. Grcevski, A. Kielstra, K. Stoodley, M. Stoodley, and V. Sundaresan. Java just-in-time compiler and virtual machine improvements for server and middleware applications. In Proceedings of the 3rd conference on Virtual Machine Research And Technology Symposium, pages 12--24, San Jose, USA, May 2004. USENIX Association. Google ScholarGoogle ScholarDigital LibraryDigital Library
  30. A.L. Hosking, J.E.B. Moss, and D. Stefanovic. A comparative performance evaluation of write barrier implementations. In OOPSLA, pages 92--109, Vancouver, BC, Canada, Oct. 1992. Google ScholarGoogle ScholarDigital LibraryDigital Library
  31. The ikvm.net project. http://www.ikvm.net/.Google ScholarGoogle Scholar
  32. The Jikes Research Virtual Machine. http://www-124.ibm.com/developerworks/oss/jikesrvm.Google ScholarGoogle Scholar
  33. Jonas web site. http://jonas.ow2.org.Google ScholarGoogle Scholar
  34. G. Kliot, E. Petrank, and B. Steensgaard. A lock-free, concurrent, and incremental stack scanning for garbage collectors. In VEE'09: Proceedings of the 2009 ACM SIGPLAN/SIGOPS international conference on Virtual execution environments, pages 11--20, New York, NY, USA, 2009. ACM. Google ScholarGoogle ScholarDigital LibraryDigital Library
  35. C. Lattner and V. Adve. LLVM: A compilation framework for lifelong program analysis & transformation. In Proceedings of the International Symposium on Code Generation and Optimization, pages 75--86, Palo Alto, USA, Mar. 2004. IEEE Computer Society. Google ScholarGoogle ScholarDigital LibraryDigital Library
  36. S. Liang and G. Bracha. Dynamic class loading in the Java virtual machine. In Proceedings of the Conference on Object-oriented Programming, Systems, Languages, and Applications (OOPSLA'98), pages 36--44, Oct. 1998. Google ScholarGoogle ScholarDigital LibraryDigital Library
  37. T. Lindholm and F. Yellin. The Java(TM) Virtual Machine Specification (2nd Edition). Addison-Wesley, 1997. Google ScholarGoogle ScholarDigital LibraryDigital Library
  38. M. Lujàn, J. R. Gurd, T. L. Freeman, and J. Miguel. Elimination of Java array bounds checks in the presence of indirection. In Proceedings of the Conference on Java Grande, pages 76--85, Seattle, USA, Nov. 2002. Google ScholarGoogle ScholarDigital LibraryDigital Library
  39. The Mono Project. www.mono-project.org.Google ScholarGoogle Scholar
  40. Objective-C 2.0 overview. http://developer.apple.com/leopard/overview/objectivec2.html.Google ScholarGoogle Scholar
  41. I. Piumarta. The virtual processor: Fast, architecture-neutral dynamic code generation. In Proceedings of the Virtual Machine Research and Technology Symposium, pages 97--110, San Jose, CA, USA, May 2004. Google ScholarGoogle ScholarDigital LibraryDigital Library
  42. M. Poletto and V. Sarkar. Linear Scan Register Allocation. ACM Transactions on Programming Languages and Systems, 21(5):895--913, 1999. Google ScholarGoogle ScholarDigital LibraryDigital Library
  43. D. Stutz. The Microsoft shared source CLI implementation. Technical report, Microsoft, Mar. 2002. http://msdn.microsoft.com/enus/library/ms973879.aspx.Google ScholarGoogle Scholar
  44. S. Subramanian, M. Hicks, and K.S. McKinley. Dynamic software updates: a VM-centric approach. In PLDI '09: Proceedings of the 2009 ACM SIGPLAN conference on Programming Language Design and Implementation, pages 1--12, Dublin, Ireland, 2009. ACM. Google ScholarGoogle ScholarDigital LibraryDigital Library
  45. D. Sugalski. Building a multi-language interpreter engine. In International Python Conference, Feb. 2002.Google ScholarGoogle Scholar
  46. G. Thomas, N. Geoffray, C. Clément, and B. Folliot. Designing highly flexible virtual machines: the JnJVM experience. Software: Practice and Experience, 38(15):1643--1675, 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  47. L. Ziarek, A. Welc, A.-R. Adl-Tabatabai, V. Menon, T. Shpeisman, and S. Jagannathan. A uniform transactional execution environment for Java. In ECOOP '08: Proceedings of the 22nd European conference on Object-Oriented Programming, pages 129--154, Paphos, Cypress, 2008. Springer-Verlag. Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. VMKit: a substrate for managed runtime environments

    Recommendations

    Reviews

    William M. Waite

    A managed runtime environment (MRE) is a particular kind of system that implements an abstract computer on a physical machine. It provides a just-in-time (JIT) compiler to translate abstract machine code to the native code of the underlying machine, and normally supports garbage collection storage management. Common MREs are the Java Virtual Machine (JVM) and the .NET Common Language Runtime (CLR). Ever since its introduction more than 50 years ago [1], one of the drawbacks of this concept is that a single abstract computer cannot do everything well. Thus, new applications may result in new abstractions, requiring new MREs. Geoffray et al. try to simplify the construction of a new MRE. Their approach for VMKit is the standard one: introduce a low-level abstraction with its own JIT compiler and memory manager. To create a new MRE, designers must write a translator from their abstraction to the low-level abstraction and also provide functions that allow the memory manager to extract information about their abstraction's data model. The paper explains the structure of VMKit and how to use it to create a new MRE. Geoffray et al. describe two MREs they built using VMKit: one (J3) implementing the JVM and the other (N3) implementing the .NET CLR. They provide measurements that evaluate the performance of J3 and N3 relative to handmade MREs, for the same abstractions. I found the paper interesting and well written. The measurements support the authors' thesis that VMKit is a viable tool for building prototype MREs for new abstractions. Online Computing Reviews Service

    Access critical reviews of Computing literature here

    Become a reviewer for Computing Reviews.

    Comments

    Login options

    Check if you have access through your login credentials or your institution to get full access on this article.

    Sign in
    • Published in

      cover image ACM Conferences
      VEE '10: Proceedings of the 6th ACM SIGPLAN/SIGOPS international conference on Virtual execution environments
      March 2010
      176 pages
      ISBN:9781605589107
      DOI:10.1145/1735997
      • cover image ACM SIGPLAN Notices
        ACM SIGPLAN Notices  Volume 45, Issue 7
        VEE '10
        July 2010
        161 pages
        ISSN:0362-1340
        EISSN:1558-1160
        DOI:10.1145/1837854
        Issue’s Table of Contents

      Copyright © 2010 ACM

      Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

      Publisher

      Association for Computing Machinery

      New York, NY, United States

      Publication History

      • Published: 17 March 2010

      Permissions

      Request permissions about this article.

      Request Permissions

      Check for updates

      Qualifiers

      • research-article

      Acceptance Rates

      Overall Acceptance Rate80of235submissions,34%

    PDF Format

    View or Download as a PDF file.

    PDF

    eReader

    View online with eReader.

    eReader