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.
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- D. Buttlar, J. Farrell, and B. Nichols. PThreads Programming: A POSIX Standard for Better Multiprocessing. O'Reilly Media, 1996. Google ScholarDigital Library
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- 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 Scholar
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- DotGNU portable.NET. dotgnu.org/pnet.html.Google Scholar
- The Dwarf Debugging Standard. http://dwarfstd.org.Google Scholar
- ECMA International. Common Language Infrastructure (CLI), 4th Edition.Google Scholar
- 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 Scholar
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- 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 ScholarCross Ref
- The GNU Classpath Project. http://www.gnu.org/software/classpath.Google Scholar
- The GNU Compiler Collection. http://gcc.gnu.org/.Google Scholar
- J. Gosling, B. Joy, G. Steele, and G. Bracha. The Java Language Specification Second Edition. Addison-Wesley, Boston, USA, 2000. Google ScholarDigital Library
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- The ikvm.net project. http://www.ikvm.net/.Google Scholar
- The Jikes Research Virtual Machine. http://www-124.ibm.com/developerworks/oss/jikesrvm.Google Scholar
- Jonas web site. http://jonas.ow2.org.Google Scholar
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- 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 ScholarDigital Library
- T. Lindholm and F. Yellin. The Java(TM) Virtual Machine Specification (2nd Edition). Addison-Wesley, 1997. Google ScholarDigital Library
- 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 ScholarDigital Library
- The Mono Project. www.mono-project.org.Google Scholar
- Objective-C 2.0 overview. http://developer.apple.com/leopard/overview/objectivec2.html.Google Scholar
- 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 ScholarDigital Library
- M. Poletto and V. Sarkar. Linear Scan Register Allocation. ACM Transactions on Programming Languages and Systems, 21(5):895--913, 1999. Google ScholarDigital Library
- D. Stutz. The Microsoft shared source CLI implementation. Technical report, Microsoft, Mar. 2002. http://msdn.microsoft.com/enus/library/ms973879.aspx.Google Scholar
- 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 ScholarDigital Library
- D. Sugalski. Building a multi-language interpreter engine. In International Python Conference, Feb. 2002.Google Scholar
- 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 ScholarDigital Library
- 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 ScholarDigital Library
Index Terms
- VMKit: a substrate for managed runtime environments
Recommendations
VMKit: a substrate for managed runtime environments
VEE '10Managed 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, ...
Dynamic selection of application-specific garbage collectors
ISMM '04: Proceedings of the 4th international symposium on Memory managementMuch prior work has shown that the performance enabled by garbage collection (GC) systems is highly dependent upon the behavior of the application as well as on the available resources. That is, no single GC enables the best performance for all programs ...
An experimental study of the influence of dynamic compiler optimizations on Scala performance
SCALA '13: Proceedings of the 4th Workshop on ScalaJava Virtual Machines are optimized for performing well on traditional Java benchmarks, which consist almost exclusively of code generated by the Java source compiler (javac). Code generated by compilers for other languages has not received nearly as ...
Comments