SableVM - SableVM

SableVM
SableVM Logo.png
Desenvolvedor (s) Grupo de Pesquisa Sable da Universidade McGill
Último lançamento
1.13 / 30 de março de 2007 ; 14 anos atras ( 2007-03-30 )
Repositório Edite isso no Wikidata
Sistema operacional Plataforma cruzada
Modelo Máquina Virtual JAVA
Licença GNU Lesser General Public License
Local na rede Internet sablevm .org

SableVM foi uma implementação de sala limpa do interpretador de bytecode Java implementando a especificação da máquina virtual Java ( VM ), segunda edição. SableVM foi projetado para ser uma máquina virtual Java robusta, extremamente portátil, eficiente e totalmente compatível com as especificações (especificação JVM, Java Native Interface , Invocation interface, Debug interface, etc.) que seria fácil de manter e estender. Agora não está mais sendo mantido.

A implementação foi parte do esforço no início dos anos 2000 para libertar o ecossistema Java do controle da Sun Microsystems .

Visão geral

O mecanismo principal é um intérprete que usou técnicas inovadoras para fornecer desempenho que pode se aproximar de um compilador just-in-time (JIT) "ingênuo" , mantendo as vantagens de engenharia de software dos intérpretes: portabilidade , facilidade de manutenção e simplicidade . Essa simplicidade torna o código-fonte do SableVM muito acessível e fácil de entender para novos usuários / programadores.

SableVM é um Software Livre - é licenciado sob a GNU Lesser General Public License ( LGPL ). Ele também faz uso do GNU Classpath (com direitos autorais da FSF ), que é licenciado pela GNU General Public License com exceção de links .

SableVM é a primeira máquina virtual de código aberto para Java a incluir o suporte para JVMDI (Java Virtual Machine Debugging Interface) e JDWP (Java Debug Wire Protocol). Essas interfaces de depuração Java padrão são usadas, por exemplo, pelo Eclipse para fornecer um ambiente de desenvolvimento Java rico e amigável.

Java Intermediate Language

Algumas versões do SableVM usam Java Intermediate Language, uma linguagem intermediária (que é um subconjunto de XML ) que representa a estrutura de tipo de um programa Java . A linguagem foi proposta pela equipe do SableVM da McGill University em janeiro de 2002 para auxiliar na análise de um programa Java com os objetivos de escalabilidade e bom desempenho. A linguagem não foi amplamente adotada.

Considere a seguinte parte do código Java.

public MyClass implements MyInterface extends MySupperClass {
  int MyField;

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

Esta peça pode ser expressa na linguagem da seguinte forma:

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

Veja também

Referências

links externos