SableVM - SableVM
Desenvolvedor (s) | Grupo de Pesquisa Sable da Universidade McGill |
---|---|
Último lançamento | 1.13 / 30 de março de 2007
|
Repositório | |
Sistema operacional | Plataforma cruzada |
Modelo | Máquina Virtual JAVA |
Licença | GNU Lesser General Public License |
Local na rede Internet | sablevm |
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>