SableVM

SableVM
Utvecklare Sable Research Group vid McGill University
Slutlig utgåva
1.13 / 30 mars 2007 ; 15 år sedan ( 2007-03-30 )
Förvar
Operativ system Cross-platform
Typ Java Virtual Machine
Licens GNU Lesser General Public License
Hemsida sablevm .org

SableVM var en renrumsimplementering av Java- bytekodtolkare som implementerade Java Virtual Machine ( VM )-specifikationen, andra upplagan. SableVM designades för att vara en robust, extremt portabel, effektiv och helt specifikationer-kompatibel (JVM-specifikation, Java Native Interface , Invocation-gränssnitt, Debug-gränssnitt, etc.) Java Virtual Machine som skulle vara lätt att underhålla och utöka. [ citat behövs ] Det underhålls nu inte längre.

Implementeringen var en del av ansträngningen i början av 2000-talet för att bryta Java- ekosystemet från Sun Microsystems kontroll.

Översikt

Kärnmotorn är en tolk som använde banbrytande tekniker för att leverera prestanda som kan närma sig den hos en "naiv" just-in-time (JIT) kompilator , samtidigt som tolkarnas mjukvarutekniska fördelar: portabilitet , underhållbarhet och enkelhet . Denna enkelhet gör SableVM:s källkod mycket tillgänglig och lätt att förstå för nya användare/programmerare.

SableVM är fri programvara — den är licensierad under GNU Lesser General Public License ( LGPL ). Den använder också GNU Classpath (upphovsrättsskyddad av FSF ) som är licensierad under GNU General Public License med undantag för länkning .

SableVM är den första virtuella maskinen med öppen källkod för Java som inkluderar stöd för JVMDI (Java Virtual Machine Debugging Interface) och JDWP (Java Debug Wire Protocol). [ citat behövs ] Dessa standard Java-felsökningsgränssnitt används till exempel av Eclipse för att tillhandahålla en rik och användarvänlig Java-utvecklingsmiljö.

Java mellanspråk

Vissa versioner av SableVM använder Java Intermediate Language, ett mellanspråk (som är en delmängd av XML ) som representerar typstrukturen för ett Java -program. Språket föreslogs av teamet från SableVM vid McGill University i januari 2002 för att underlätta analysen av ett Java-program med målen skalbarhet och bra prestanda. Språket har inte blivit allmänt antaget.

Tänk på följande del av Java-kod.

      
   

        
     
        
      
  
 public  MyClass  implementerar  MyInterface  utökar  MySupperClass  {  int  MyField  ;  void  MyMethod  (  dubbel  x  ,  dubbel  y  )  {  dubbel  z  ;  z  =  x  +  y  ;  detta  .  MyField  =  z  }  } 

Detta stycke kan uttryckas på språket, enligt följande:


  
    
    
    
  
       
  

  
      
    
         
         
    
    
         
    
    
      


      
        



        
      
    
    
  

 <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=  "dubbel"  />  </locals>  <statements>  <!-- Varje påstående uttrycks av något mellanformat för  kodgenerator som tre adresskoder. I nedanstående   används ett språk som kallas baf. -->   <baf>  <![CDATA[  $r2 = $r0 + $r1;  this.MyField = (dubbel) $r2;  ]]>  <!-- Här antar vi att x uttrycks som $r0, y $r1 och z $r2. -->   </baf>  </statements>  </method>  </methods>  </class>  </jil> 

Se även

externa länkar