SableVM

SableVM
Deweloperzy Sable Research Group na Uniwersytecie McGill
Ostateczne wydanie
1.13 / 30 marca 2007 ; 15 lat temu ( 30.03.2007 )
Magazyn
System operacyjny Międzyplatformowe
Typ Maszyna wirtualna Java
Licencja Mniejsza Powszechna Licencja Publiczna GNU
Strona internetowa sablevm.org _

SableVM była implementacją interpretera kodu bajtowego Java w czystym pomieszczeniu , implementującą specyfikację maszyny wirtualnej Java ( VM ), wydanie drugie. SableVM został zaprojektowany jako solidna, wyjątkowo przenośna, wydajna iw pełni zgodna ze specyfikacjami (specyfikacja JVM, Java Native Interface , interfejs Invocation, interfejs debugowania itp.) Java Virtual Machine, która byłaby łatwa w utrzymaniu i rozbudowie. [ potrzebne źródło ] Obecnie nie jest już utrzymywany.

Implementacja była częścią wysiłków podjętych na początku XXI wieku, aby uwolnić ekosystem Java spod kontroli firmy Sun Microsystems .

Przegląd

Podstawowym silnikiem jest interpreter , który wykorzystał przełomowe techniki, aby zapewnić wydajność, która może zbliżyć się do „naiwnego” kompilatora just-in-time (JIT) , zachowując jednocześnie zalety inżynierii oprogramowania tłumaczy: przenośność , łatwość konserwacji i prostota . Ta prostota sprawia, że ​​kod źródłowy SableVM jest bardzo przystępny i łatwy do zrozumienia dla nowych użytkowników/programistów.

SableVM jest Wolnym Oprogramowaniem — jest licencjonowany na licencji GNU Lesser General Public License ( LGPL ). Wykorzystuje również ścieżkę GNU Classpath (chronioną prawami autorskimi FSF ), która jest objęta licencją GNU General Public License z wyjątkiem linków .

SableVM to pierwsza wirtualna maszyna typu open source dla języka Java, która obsługuje JVMDI (Java Virtual Machine Debugging Interface) i JDWP (Java Debug Wire Protocol). [ potrzebne źródło ] Te standardowe interfejsy debugowania Java są używane na przykład przez Eclipse , aby zapewnić bogate i przyjazne dla użytkownika środowisko programistyczne Java.

język pośredni Java

Niektóre wersje SableVM używają Java Intermediate Language, języka pośredniego (będącego podzbiorem XML ) reprezentującego strukturę typu programu Java . Język został zaproponowany przez zespół SableVM na Uniwersytecie McGill w styczniu 2002 r., aby pomóc w analizie programu Java pod kątem skalowalności i dobrej wydajności. Język nie został powszechnie przyjęty.

Rozważ następujący fragment kodu Java.

      
   

        
     
        
      
  
 public  MyClass  implementuje  MyInterface  extends  MySupperClass  {  int  MyField  ;  void  MojaMetoda  (  podwójne  x  ,  podwójne  y  )  {  podwójne  z  ;  z  =  x  +  y  ;  to  .  Moje Pole  =  z  }  } 

Utwór ten można wyrazić w języku w następujący sposób:


  
    
    
    
  
       
  

  
      <jil>  <class  name=  "MyClass"  extends=  "MySupperClass"  >  <modyfikatory><modifier  name=  "public"  /></modifiers>  <interfejsy><interface  name=  "myinterface"  /></interfaces>  <pola >  <  nazwa pola =  "Moje pole"  type =  "int"  />  </pola>  <metody>  <  nazwa metody =  "Moja metoda"  
    
         
         
    
    
         
    
    
       returntype=  "void"  >  <parameters>  <parameter  name=  "x"  type=  "double"  />  <parameter  name=  "y"  type=  "double"  />  </parameters>  <locals>  <local  name=  "z "  type=  "double"  />  </locals>  <statements>  <!-- Każda instrukcja jest wyrażona przez pośredni format dla 


      
        



        
      
    
    
  

 generator kodu, taki jak trzy kody adresowe. Poniżej   używany jest język zwany baf. -->   <baf>  <![CDATA[  $r2 = $r0 + $r1;  to.MojePole = (podwójne) $r2;  ]]>  <!-- Tutaj zakładamy, że x jest wyrażone jako $r0, y $r1 iz $r2. -->   </baf>  </statements>  </metoda>  </metody>  </class>  </jil> 

Zobacz też

Linki zewnętrzne