ABSTRACT
Can virtual machine developers benefit from religiously observing the principles more often embraced for exploratory programming? To find out, we are concurrently constructing two artifacts--a Self VM entirely in Self (the Klein VM), and a specialized development environment--with strict adherence to pure object-orientation, metacircularity, heavy code reuse, reactivity, and mirror-based reflection. Although neither artifact is yet complete, the environ-ment supports many remote debugging and incremental update operations, and the exported virtual machine has successfully run the whole compiler.As a result of our adherence to these principles, there have been both positive and negative consequences. We have been able to find and exploit many opportunities for parsimony. For example, the very same code creates objects in the bootstrap image, builds ob-jects in the running VM, and implements a remote debugger. On the other hand, we have been forced to expend effort to optimize the performance of the environment. Overall, this approach trades off the performance of the environment against the architectural sim-plicity and ease of development of the resulting VM artifact. As computers continue to improve in performance, we believe that this approach will increase in value.
Supplemental Material
- 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. F. 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 Jalapeño Virtual Machine. IBM System Journal, Vol 39, No 1, February 2000. http://www 106.ibm.com/developerworks/java/library/j-jalapeno]] Google ScholarDigital Library
- Bowen Alpern, C. R. Attanasio, John J. Barton, Anthony Cocchi, Susan Flynn Hummel, Derek Lieber, Ton Ngo, Mark Mergen, Janice C. Shepherd, Stephen Smith. Implementing Jalapeño in Java. In Proceeings of the 1999 ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages & Applications (OOPSLA'99), volume 34.10 of ACM SIGPLAN Notices, pages 314--324. ACM Press, November 1999.]] Google ScholarDigital Library
- Ole Agesen and David Ungar. Sifting Out the Gold: Delivering Compact Applications From an Exploratory Object-Oriented Environment. In OOPSLA'94 Conference Proceedings, Portland, OR.]] Google ScholarDigital Library
- Gilad Bracha and David Ungar. Mirrors: Design Principles for Meta-level Facilities of Object-Oriented Programming Languages. In OOPSLA'04 Conference Proceedings,, October 2004.]] Google ScholarDigital Library
- Craig Chambers. The Design and Implementation of the Self Compiler, an Optimizing Compiler for Object-Oriented Programming Languages. Ph.D. Dissertation, Stanford University, 1992.]] Google ScholarDigital Library
- Craig Chambers and David Ungar. Customization: Optimizing Compiler Technology for Self, a Dynamically-Typed Object-Oriented Programming Language. In PLDI'89, pp. 146--160, Portland, OR, June, 1989.]] Google ScholarDigital Library
- Craig Chambers, David Ungar, and Elgin Lee. An Efficient Implementation of Self, a Dynamically-Typed Object-Oriented Language Based on Prototypes. In OOPSLA '89 Conference Proceedings, pp. 49--70, New Orleans, LA, October, 1989.]] Google ScholarDigital Library
- M. Dmitriev. Towards Flexible and Safe Technology for Runtime Evolution of Java Language Applications. Presented at the Workshop on Engineering Complex Object-Oriented Systems for Evolution, at OOPSLA'01, October, 2001.]]Google Scholar
- Urs Hölzle. Adaptive Optimization for Self: Reconciling High Performance with Exploratory Programming. Ph.D. Dissertation, Stanford University, 1994.]]Google Scholar
- Urs Hölzle and David Ungar. Optimizing Dynamically-Dispatched Calls with Run-Time Type Feedback. In PLDI'94 Conference Proceedings, pp. 326--336, Orlando, FL, June 1994.]] Google ScholarDigital Library
- Urs Hölzle, David Ungar. A Third-Generation Self Implementation: Reconciling Responsiveness with Performance. In OOPSlA'94 Conference Proceedings, Portland, OR, August 1994.]]Google Scholar
- Dan Ingalls, Ted Kaehler, John Maloney, Scott Wallace, and Alan Kay. The Story of Squeak, A Practical Smalltalk Written in Itself. In OOPSLA'97 Conference Proceedings, Atlanta, GA (October 5-9, 1997), pp. 318--326. http://users.ipa.net/~dwighth/squeak/oopsla_squeak.html]] Google ScholarDigital Library
- Krasner, Glen (editor). Smalltalk-80: Bits of History, Words of Advice. Addison-Wesley, 1983.]] Google ScholarDigital Library
- Ton Ngo and John Barton, Debugging by Remote Reflection, Euro-Par 2000, Munich, Germany, August 2000. http://jikesrvm.sourceforge.net/info/pubs.shtml#remotereflect]] Google ScholarDigital Library
- Ian Piumarta. Late Binding and Dynamic Implementation. Invitational Workshop on the Future of Virtual Execution Environments, Sept. 2004. http://www.research.ibm.com/vee04/video.html#piumarta]]Google Scholar
- Self language website. http://research.sun.com/self]]Google Scholar
- Randall B. Smith and David Ungar. Programming as an Experience: The Inspiration for Self. In ECOOP '95 Conference Proceedings, Aarhus, Denmark, August 1995.]] Google ScholarDigital Library
- Nik Shaylor, Douglas Simon, William Bush. A Java Virtual Machine Architecture for Very Small Devices. In LCTES'03 Conference Proceedings, pp 34--41, San Diego, CA, July 2003.]] Google ScholarDigital Library
- Ken Thompson. Reflections on Trusting Trust. In CACM, Vol. 27, No. 8, August 1984, pp. 761--763. Also in ACM Turing Award Lectures: The First Twenty Years 1965-1985, Copyright 1987, and in Computers Under Attack: Intruders, Words and Viruses, Copyright 1990, both from the ACM press. http://www.acm.org/classics/sep95/]] Google ScholarDigital Library
- David Ungar. Annotating Objects for Transport to Other Worlds. In OOPSLA'95, pp 73--87, Oct. 1995.]] Google ScholarDigital Library
Index Terms
- Constructing a metacircular Virtual machine in an exploratory programming environment
Recommendations
A feather-weight virtual machine for windows applications
VEE '06: Proceedings of the 2nd international conference on Virtual execution environmentsMany fault-tolerant and intrusion-tolerant systems require the ability to execute unsafe programs in a realistic environment without leaving permanent damages. Virtual machine technology meets this requirement perfectly because it provides an execution ...
Performance Analysis of Virtual Machine Introspection Tools in Cloud Environment
ICIA-16: Proceedings of the International Conference on Informatics and AnalyticsVirtual Machine (VM) security is one of the biggest issues with a cloud environment. This issue could be solved with the help of Virtual Machine Introspection (VMI) tools. VMI tools monitor the state of Virtual machine running in the cloud environment. ...
Resource availability based performance benchmarking of virtual machine migrations
ICPE '13: Proceedings of the 4th ACM/SPEC International Conference on Performance EngineeringVirtual machine migration enables load balancing, hot spot mitigation and server consolidation in virtualized environments. Live VM migration can be of two types - adaptive, in which the rate of page transfer adapts to virtual machine behaviour (mainly ...
Comments