List of Application Virtual Machine Implementations
In addition to the portable virtual machines described above, virtual machines are often used as an execution model for individual scripting languages, usually by an interpreter. This table lists specific virtual machine implementations, both of the above portable virtual machines, and of scripting language virtual machines.
Virtual machine | Languages | Comments | Interpreter | JIT | Implementation Language | SLoC |
---|---|---|---|---|---|---|
Adobe Flash Player (aka Tamarin) | ActionScript, SWF (file format) | interactive web authoring tool. bytecode is named "ActionScript Byte Code (.abc)" | Yes | Yes | C++ | 135k (initially released) |
BEAM | Erlang, Reia, Lisp Flavoured Erlang, Elixir | There exists a native-code compiler, HiPE. | Yes | No | C | 247k |
Clipper p-code | Clipper, Harbour | plankton, HVM | Yes | No | C | |
Dis (Inferno) | Limbo | Dis Virtual Machine Specification | Yes | Yes | C | 15k + 2850 per JIT arch + 500 per host OS |
DotGNU/Portable.NET | CLI languages including: C# | Clone of Common Language Runtime | No | Yes | C, C# | |
Forth | Forth | Features are simplified, usually include assembler, compiler, text-level and binary-level interpreters, sometimes editor, debugger and OS. Compilation speeds are >20 SKLOC/S and behave much like JIT. | Yes | No | Forth, Forth Assembler | 2.8K to 5.6K; advanced, professional implementations are smaller. |
Glulx | Glulx, Z-code | |||||
Icon | Icon | |||||
JVM | Java, Jython, Groovy, JRuby, C, C++, Clojure, Scala and several others | Reference implementation by Sun ; OpenJDK: code under GPL ; IcedTea: code and tools under GPL | Yes | Yes | JDK, OpenJDK & IcedTea with regular JIT : Java, C, ASM ; IcedTea with the "Zero" JIT : Java, C | JVM is around 6500k lines; TCK is 80k tests and around 1000k lines |
LLVM | C, C++, Objective-C, Ada, and Fortran | MSIL, C and C++ output are supported. ActionScript Byte Code output is supported by Adobe Alchemy. bytecode is named "LLVM Bytecode (.bc)". assembly is named "LLVM Assembly Language (*.ll)". | Yes | Yes | C++ | 811k |
Lua | Lua | Yes | LuaJIT | C | 13k + 7k LuaJIT | |
MMIX | MMIXAL | |||||
Mono | CLI languages including: C#, VB.NET, IronPython, IronRuby, and others | clone of Common Language Runtime. | Yes | Yes | C#, C | 2332k |
Oz | Oz, Alice | |||||
NekoVM | currently Neko and haXe | Yes | x86 only | C | 46k | |
O-code machine | BCPL | |||||
p-code machine | Pascal | UCSD Pascal, widespread in late 70s including Apple II | ||||
Parrot | Perl (6 & 5), NQP-rx, PIR, PASM, PBC, BASIC, bc, C, ECMAScript, Lisp, Lua, m4, Tcl, WMLScript, XML, and others | Yes | Yes | C, Perl | 111k C, 240k Perl | |
Perl virtual machine | Perl | op-code tree walker | Yes | No | C, Perl | 175k C, 9k Perl |
CPython | Python | Yes | Psyco | C | 387k C, 368k Python, 10k ASM, 31k Psyco | |
PyPy | Python | Self-hosting implementation of Python, next generation of Psyco | Yes | Yes | Python | |
Rubinius | Ruby | Virtual machine for another Ruby implementation | Yes | Yes | C++, Ruby | |
Silverlight | C#, VB.NET | A Micro-version of Microsoft .NET Framework to let applications run sandboxed inside browser | Yes | Yes | C++ | 7MB (initially released) |
SEAM | Alice | |||||
ScummVM | Scumm | Computer game engine | ||||
SECD | ISWIM, Lispkit Lisp | |||||
Squirrel | Squirrel | Yes | Squirrel_JIT | C++ | 12k | |
Smalltalk | Smalltalk | |||||
SQLite | SQLite opcodes | Virtual database engine | ||||
Squeak | Squeak Smalltalk | Self hosting implementation of Squeak virtual machine. Rich multi-media support. | Yes | Cog & Exupery | Smalltalk/Slang | 110k Smalltalk, ~300K C |
TaoGroup VP/VP2 | C, Java | Proprietary embedded VM | ||||
TraceMonkey | JavaScript | Based on Tamarin | No | Yes | C++ | 173k |
Translator Engine | Flat File Tables/Global C++ variable declarations | IDE, programming by demonstration | ||||
TrueType | TrueType | Font rendering engine | Yes | No | C (typically) | |
Valgrind | x86/x86-64 binaries | Checking of memory accesses and leaks under Linux | C | 467k | ||
VisualWorks | Smalltalk | No | Yes | C | ||
VMKit | JVM and CLI virtual machine based on LLVM. | No | Yes | |||
Vx32 virtual machine | x86 binaries | Application-level virtualization for native code | No | Yes | ||
Waba | Virtual machine for small devices, similar to Java | |||||
Yet Another Ruby VM (YARV) | Ruby | Virtual machine of the reference implementation for Ruby 1.9 and newer versions | Yes | Yes | C | |
Z-machine | Z-Code | |||||
Zend Engine | PHP | Yes | No | C | 75k | |
libJIT Library for Just-In-Time compilation | Common Intermediate Language Java bytecode Domain-specific programming language | Virtual machine is used in Portable.NET Just-In-Time compiler, ILDJIT, HornetsEye | Yes | Yes | C, ia32, arm, amd64, alpha, low-level CPU architecture specific machine code |
Read more about this topic: Comparison Of Application Virtual Machines
Famous quotes containing the words list of, list, application, virtual and/or machine:
“The advice of their elders to young men is very apt to be as unreal as a list of the hundred best books.”
—Oliver Wendell Holmes, Jr. (18411935)
“Modern tourist guides have helped raised tourist expectations. And they have provided the nativesfrom Kaiser Wilhelm down to the villagers of Chichacestenangowith a detailed and itemized list of what is expected of them and when. These are the up-to- date scripts for actors on the tourists stage.”
—Daniel J. Boorstin (b. 1914)
“It is known that Whistler when asked how long it took him to paint one of his nocturnes answered: All of my life. With the same rigor he could have said that all of the centuries that preceded the moment when he painted were necessary. From that correct application of the law of causality it follows that the slightest event presupposes the inconceivable universe and, conversely, that the universe needs even the slightest of events.”
—Jorge Luis Borges (18991986)
“Tragedy dramatizes human life as potentiality and fulfillment. Its virtual future, or Destiny, is therefore quite different from that created in comedy. Comic Destiny is Fortunewhat the world will bring, and the man will take or miss, encounter or escape; tragic Destiny is what the man brings, and the world will demand of him. That is his Fate.”
—Susanne K. Langer (18951985)
“One machine can do the work of fifty ordinary men. No machine can do the work of one extraordinary man.”
—Elbert Hubbard (18561915)