SableVM
Deweloperzy | Sable Research Group na Uniwersytecie McGill |
---|---|
Ostateczne wydanie | 1.13 / 30 marca 2007
|
Magazyn | |
System operacyjny | Międzyplatformowe |
Typ | Maszyna wirtualna Java |
Licencja | Mniejsza Powszechna Licencja Publiczna GNU |
Strona internetowa |
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>