Comparison of application virtualization software

This is an old revision of this page, as edited by Jeskeca (talk | contribs) at 22:53, 12 June 2008 (Design focus of some Portable Virtual Machines). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

Design focus of some Portable Virtual Machines

This comparison lists some software virtual machines that implement the concept of application virtualization, typically for the purpose of allowing application binaries to be portably run on many different computer architectures and operating systems. The application is usually run on the computer using an interpreter or just-in-time compilation. There are often many implementations of a given virtual machine, each covering a different functionality footprint. The table here summarizes elements for which the virutal machine designs intended to be efficient, not the list of capabilities present in any implementation.

Virtual Machine Local Variables Memory Management Code Security Interpreter JIT Precompiling / Shared libraries
CIL stack automatic or manual y n y y
Dis, Inferno memory automatic n y y y
JVM stack automatic y y y n
LLVM register automatic or manual n y y y
Parrot stack automatic n y y n

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 virutal machines.

Virtual machine Languages Comments
Common Language Runtime C#, Visual Basic .NET, J#, Managed C++, Python, Ruby and other .NET languages. reference implementation by Microsoft
Forth virtual machine Forth
Glulx Glulx, Z-code
Dis, Inferno Limbo
Java virtual machine Java, Groovy, Jython, JRuby, Scala and several others reference implementation by Sun
Low Level Virtual Machine (LLVM) C, C++, Objective-C, Ada, and Fortran
Lua
Adobe Flash Player ActionScript, SWF (file format) interactive web authoring tool
MMIX MMIXAL
Mono .NET languages
Neko virtual machine currently Neko and haXe
O-code machine BCPL
p-code machine Pascal UCSD Pascal, widespread in late 70s including Apple II
Parrot Perl 6, and others experimentally
Perl virtual machine Perl
Portable.NET C#, Visual Basic .NET, J#, Managed C++
Python virtual machine Python
ScummVM Scumm computer game engine
SECD machine ISWIM, Lispkit Lisp
Shotgun Ruby virtual machine of the Rubinius project
Smalltalk virtual machine Smalltalk
Sqlite virtual machine Sqlite opcodes virtual database engine
Squeak virtual machine Squeak
TaoGroup VP/VP2 C, Java propritary embedded VM
TrueType virtual machine TrueType font rendering engine
Valgrind x86/x86 64 binaries checking of memory accesses and leaks under Linux
VX32 virtual machine application-level virtualization for native code
Waba Virtual machine for small devices, similar to Java
Warren Abstract Machine Prolog
Yet Another Ruby VM (YARV) Ruby virtual machine of the reference implementation for Ruby 1.9 and newer versions
Z-machine Z-Code
Zend Engine PHP

See also