SableVM
DeveloperSable Research Group at McGill University
Final release
1.13 / March 30, 2007; 19 years ago (2007-03-30)
Operating systemCross-platform
TypeJava Virtual Machine
LicenseGNU Lesser General Public License
Websitesablevm.org
Repository

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

edit

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

edit

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

edit

References

edit
  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.
  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.
edit

📚 Artikel Terkait di Wikipedia

Comparison of Java virtual machines

Retrieved 31 July 2012. "kaffe/kaffe". GitHub. 9 November 2021. "SableVM - Browse /sablevm/1.13 at". Sourceforge.net. 30 March 2007. Retrieved 31 July 2012

Free Java implementations

for parsing Java. Examples of free runtime environments include Kaffe, SableVM and gcj. GNU Classpath is the main free software class library for Java

GNU Classpath

needed] GNU Classpath is used by many free Java runtimes (like Kaffe, SableVM, JamVM, Jikes RVM, and VMKit) because every full-featured Java virtual

Java Class Library

the Class Library, and is used by many free Java runtimes (like Kaffe, SableVM, JamVM). Apache Harmony was another free software class library. Its aim

Laurie Hendren

framework for analyzing and transforming Java and Android Applications SableVM: an open implementation of a Java virtual machine abc: the AspectBench

Apache Harmony

a simple bootstrapping virtual machine, contributed by Daniel Lydick. SableVM, an advanced, portable interpreter, contributed by authors from the Sable

List of Java virtual machines

AVR microcontroller (Asuro) hardware. Simple GC. Interpreter N/A No TCK. SableVM Inactive 1.3 … 1.5 Research-oriented portable interpreter. Cross-platform

GNU Compiler for Java

C++ Excelsior JET (Excelsior Java native code compiler) IcedTea Kaffe SableVM JamVM Apache Harmony Jikes GraalVM Java virtual machine Free Java implementations