Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
SableVM
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
{{Infobox software | name = SableVM | logo = SableVM Logo.png | screenshot = | caption = | developer = Sable Research Group at [[McGill University]] | discontinued = yes | latest release version = 1.13 | latest release date = {{Start date and age|2007|03|30}} | latest preview version = | latest preview date = | operating system = [[Cross-platform]] | programming language = | genre = [[Java Virtual Machine]] | license = [[GNU Lesser General Public License]] | website = {{URL|http://sablevm.org/}} }} '''SableVM''' was a [[Clean room design|clean room implementation]] of [[Java platform|Java]] [[bytecode]] [[Interpreter (computing)|interpreter]] implementing the [[Java virtual machine]] ([[virtual machine|VM]]) specification, second edition. SableVM was designed to be a robust, extremely portable, efficient, and fully specifications-compliant (JVM spec, [[Java Native Interface]], Invocation interface, Debug interface, etc.) Java Virtual Machine that would be easy to maintain and to extend.{{citation needed|date=November 2012}} It is now no longer being maintained. The implementation was a part of the effort in the early 2000s to break the [[Java (programming language)|Java]] ecosystem free from [[Sun Microsystems]]'s control.<ref>{{cite web|url=http://www.theinquirer.net/inquirer/news/1027066/sun-approved-open-source-java-making-progress |archive-url=https://web.archive.org/web/20091203151009/http://www.theinquirer.net/inquirer/news/1027066/sun-approved-open-source-java-making-progress |url-status=unfit |archive-date=December 3, 2009 |title=Sun-approved Open Source java making progress |publisher=The Inquirer |date=2006-03-31 |accessdate=2012-12-02}}</ref><ref>{{cite web |url=http://onlamp.com/pub/wlg/6725 |title=O'Reilly Network wins a Jolt; SNAP Platform gets jolted |publisher=Onlamp.com |date= |accessdate=2012-12-02 |archive-date=2016-03-03 |archive-url=https://web.archive.org/web/20160303231206/http://www.onlamp.com/pub/wlg/6725 |url-status=dead }}</ref><ref>{{cite web|url=http://tv.sys-con.com/node/273937?page=0,1 |title=Barbarians at the Gate | SYS-CON.TV |publisher=Tv.sys-con.com |date=2006-09-22 |accessdate=2012-12-02}}</ref> ==Overview== The core engine is an [[Interpreter (computing)|interpreter]] which used ground-breaking techniques to deliver performance that can approach that of a "naive" [[just-in-time compilation|just-in-time (JIT) compiler]], while retaining the [[software engineering]] advantages of interpreters: [[Porting|portability]], [[maintainability]] and [[simplicity]].<ref>Gagnon, Etienne M., and Laurie J. Hendren. "SableVM: A research framework for the efficient execution of Java bytecode." Proceedings of the Java Virtual Machine Research and Technology Symposium. Vol. 1. 2001.</ref><ref>Prokopski, Gregory B., Etienne M. Gagnon, and Christian Arcand. Bytecode testing framework for SableVM code-copying engine. Technical Report SABLETR-2007-9, Sable Research Group, School of Computer Science, McGill University, Montréal, Québec, Canada, 2007.</ref> This simplicity makes SableVM's [[source code]] very accessible and easy to understand for new users/programmers. SableVM is [[Free Software]] — it is licensed under the [[GNU]] Lesser General Public License ([[LGPL]]). It also makes use of [[GNU Classpath]] (copyrighted by the [[Free Software Foundation|FSF]]) which is licensed under the [[GPL linking exception|GNU General Public License with linking exception]]. SableVM is the first [[open-source software|open-source]] virtual machine for Java to include the support for [[JVMDI]] (Java Virtual Machine Debugging Interface) and [[JDWP]] (Java Debug Wire Protocol).{{Citation needed|date=August 2008}} These standard Java debugging interfaces are used for example by [[Eclipse (software)|Eclipse]] to provide a rich and user-friendly Java development environment. ==Java Intermediate Language== Some versions of the SableVM use Java Intermediate Language, an intermediate language (which is a subset of [[XML]]) representing the type structure of a [[Java (programming language)|Java]] program. The language was proposed by the team of SableVM in [[McGill University]] in January 2002 to aid the analysis of a Java program with the goals of scalability and good performance.<ref>Eng, David. "JIL: an extensible intermediate language." Sable Research Group, McGill University (2002).</ref><ref>Eng, David. Combining static and dynamic data in code visualization. Vol. 28. No. 1. ACM, 2002.</ref> The language has not been widely adopted. Consider the following piece of Java code. <syntaxhighlight lang="Java"> public MyClass implements MyInterface extends MySupperClass { int MyField; void MyMethod (double x, double y) { double z; z = x + y; this.MyField = z } } </syntaxhighlight> This piece can be expressed in the language, as follows: <syntaxhighlight lang="xml"> <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> </syntaxhighlight> == See also == {{Portal|Free and open-source software|Computer programming}} * [[List of Java virtual machines]] * [[Free Java implementations]] ==References== {{Reflist}} ==External links== * {{Official website|http://www.sablevm.org/}} * [https://web.archive.org/web/20060104214933/http://sablevm.org/devel/ SableVM Development sub-site] * [https://web.archive.org/web/20050415051821/http://sablevm.org/wiki/Debug Information on debugging with SableVM and Eclipse] * [http://www.sable.mcgill.ca/jil/class.xml Java Intermediate Language] {{Java Virtual Machine}} [[Category:Cross-platform software]] [[Category:Discontinued Java virtual machines]]
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)
Pages transcluded onto the current version of this page
(
help
)
:
Template:Citation needed
(
edit
)
Template:Cite web
(
edit
)
Template:Infobox
(
edit
)
Template:Infobox software
(
edit
)
Template:Java Virtual Machine
(
edit
)
Template:Main other
(
edit
)
Template:Official website
(
edit
)
Template:Portal
(
edit
)
Template:Reflist
(
edit
)
Template:Template other
(
edit
)