Result: Towards An Extensible Virtual Machine
Further Information
is rapidly emerging as the de-facto standard for representing portable code and Java Virtual Machines (JVMs) are increasingly being used as standard platforms for running applications. But how suitable are the JVMs and the associated JVML for this purpose? This paper argues that JVML has a serious drawback in that it is not extensible enough. This lack of extensibility hinders the process of deploying new innovations in applications that run on the JVM platform. This paper also describes how a standard for portable code can be designed to be significantly more extensible than JVML. The paper explores the issues involved in designing such an extensible virtual machine (EVM), and reviews some recent research on formal techniques like type systems, logic frameworks, and analysis algorithms to show how an EVM can safely execute untrusted code. 1 Introduction Standardized protocols and languages are essential in any heterogeneous networked environment. For example, TCP/IP has long been the standard way of exchanging bytes and has been fundamental to the growth of the Internet. More recently, XML is increasingly being accepted as the standard way shipping data across the web. Similarly, the Java bytecodes, or the Java Virtual Machine Language (JVML) [30] is becoming the de-facto standard for shipping computation and Java Virtual Machines (JVMs) are increasingly being used as a standard platform for running applications--so much so that they are beginning to resemble operating systems in the scope of their functionality. The idea of standardized machine independent program representations is quite old. The first intermediate language UNCOL (UNiversal Computer Oriented Language) [46] was proposed in 1961 for use in compilers to reduce the development effort of compiling many different languages to many different architectures.