From Wikipedia, the free encyclopedia
SableVM
Developer(s)Sable Research Group at McGill University
Final release
1.13 / March 30, 2007; 17 years ago (2007-03-30)
Repository
Operating system Cross-platform
Type Java Virtual Machine
License GNU Lesser General Public License
Website sablevm.org

SableVM was a clean room implementation of Java bytecode interpreter implementing the Java virtual machine ( VM) specification, second edition. SableVM was designed to be a robust, extremely portable, efficient, and fully specifications-compliant (JVM spec, Java Native Interface, Invocation interface, Debug interface, etc.) Java Virtual Machine that would be easy to maintain and to extend.[ citation needed] It is now no longer being maintained.

The implementation was a part of the effort in the early 2000s to break the Java ecosystem free from Sun Microsystems's control. [1] [2] [3]

Overview

The core engine is an interpreter which used ground-breaking techniques to deliver performance that can approach that of a "naive" just-in-time (JIT) compiler, while retaining the software engineering advantages of interpreters: portability, maintainability and simplicity. [4] [5] This simplicity makes SableVM's source code very accessible and easy to understand for new users/programmers.

SableVM is Free Software — it is licensed under the GNU Lesser General Public License ( LGPL). It also makes use of GNU Classpath (copyrighted by the FSF) which is licensed under the GNU General Public License with linking exception.

SableVM is the first open-source virtual machine for Java to include the support for JVMDI (Java Virtual Machine Debugging Interface) and JDWP (Java Debug Wire Protocol).[ citation needed] These standard Java debugging interfaces are used for example by Eclipse to provide a rich and user-friendly Java development environment.

Java Intermediate Language

Some versions of the SableVM use Java Intermediate Language, an intermediate language (which is a subset of XML) representing the type structure of a Java program. The language was proposed by the team of SableVM in McGill University in January 2002 to aid the analysis of a Java program with the goals of scalability and good performance. [6] [7] The language has not been widely adopted.

Consider the following piece of Java code.

public MyClass implements MyInterface extends MySupperClass {
  int MyField;

  void MyMethod (double x, double y) {
    double z;
    z = x + y;
    this.MyField = z
  }
}

This piece can be expressed in the language, as follows:

<jil>
<class name="MyClass" extends="MySupperClass">
  <modifiers><modifier name="public" /></modifiers>
  <interfaces><interface name="myinterface" /></interfaces>
    
  <fields>
    <field name="MyField" type="int" />
  </fields>

  <methods>
    <method name="MyMethod" returntype="void">
    <parameters>
      <parameter name="x" type="double" />
      <parameter name="y" type="double" />
    </parameters>
    <locals>
      <local name="z" type="double" />
    </locals>
    <statements>
      <!-- Each statement is expressed by some intermediate format for
           code generator like three address code. In the below
           a language called baf is used. -->
      <baf>
        <![CDATA[
          $r2 = $r0 + $r1;
          this.MyField = (double) $r2;
        ]]>
        <!-- Here, we are assuming x is expressed as $r0, y $r1 and z $r2. -->
      </baf>
    </statements>
    </method>
  </methods>
</class>
</jil>

See also

References

  1. ^ "Sun-approved Open Source java making progress". The Inquirer. 2006-03-31. Archived from the original on December 3, 2009. Retrieved 2012-12-02.{{ cite web}}: CS1 maint: unfit URL ( link)
  2. ^ "O'Reilly Network wins a Jolt; SNAP Platform gets jolted". Onlamp.com. Archived from the original on 2016-03-03. Retrieved 2012-12-02.
  3. ^ "Barbarians at the Gate | SYS-CON.TV". Tv.sys-con.com. 2006-09-22. Retrieved 2012-12-02.
  4. ^ Gagnon, Etienne M., and Laurie J. Hendren. "SableVM: A research framework for the efficient execution of Java bytecode." Proceedings of the Java Virtual Machine Research and Technology Symposium. Vol. 1. 2001.
  5. ^ Prokopski, Gregory B., Etienne M. Gagnon, and Christian Arcand. Bytecode testing framework for SableVM code-copying engine. Technical Report SABLETR-2007-9, Sable Research Group, School of Computer Science, McGill University, Montréal, Québec, Canada, 2007.
  6. ^ Eng, David. "JIL: an extensible intermediate language." Sable Research Group, McGill University (2002).
  7. ^ Eng, David. Combining static and dynamic data in code visualization. Vol. 28. No. 1. ACM, 2002.

External links