SableVM
Utvecklare | Sable Research Group vid McGill University |
---|---|
Slutlig utgåva | 1.13 / 30 mars 2007
|
Förvar | |
Operativ system | Cross-platform |
Typ | Java Virtual Machine |
Licens | GNU Lesser General Public License |
Hemsida |
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>