Content deleted Content added
Jerryobject (talk | contribs) Small WP:EoS WP:COPYEDITs. WP:LINKs: adds, updates, fix-cut: WP:NOPIPEs, WP:EASTEREGGs, WP:OVERLINKs. WP:SLASH replaced. WP:BADEMPHASIS MOS:BOLDs > WP:ITALICs. Inline WP:EXTernal link > WP:REFerence. |
|||
Line 1:
{{refimprove|date=October 2011}}
'''Application virtualization software''' refers to both application [[virtual machine]]s and software responsible for implementing them. Application virtual machines are typically used
==Comparison of virtual machines==
The table here summarizes elements for which the virtual machine designs are intended to be efficient, not the list of
{| class="wikitable sortable"
|-
![[Virtual machine]]
![[Model of computation|Machine model]]
![[Memory management]]
![[Secure coding|Code security]]
![[Interpreter (computing)|Interpreter]]
![[Just-in-time compilation|JIT]]
![[Ahead-of-time compilation|AOT]]
![[Shared library|Shared libraries]]
!Common Language [[Object Model]]
![[Dynamic typing]]
|-
! [[Android Runtime]] (ART)
Line 29:
| {{no}}
|-
! [[Common Language Runtime
| [[Stack machine|stack]]
| automatic or manual
Line 62:
| {{no}}
|-
! [[Java
| [[Stack machine|stack]]
| automatic
Line 139:
| {{yes}}
|-
! [[Erlang (programming language)|
| [[Register machine|register]]
| automatic
| {{
| {{yes}}
| {{yes}}
Line 151:
|}
Virtual machine instructions process data in local variables using a main
An
''[[Just-in-time compilation]]
''[[Ahead-of-time compilation]]
==
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.
Line 171:
{| class="wikitable sortable"
|-
! [[Virtual machine]]
! [[Programming language|Languages]]
! Comments
! [[Interpreter (computing)|Interpreter]]
! [[Just-in-time compilation|JIT]]
! Implementation
! [[Source lines of code|SLoC]]
|-
! [[Common Language Runtime
| [[C Sharp (programming language)|C#]], [[C++/CLI]], [[F Sharp (programming language)|F#]], [[Visual Basic .NET|VB.NET]]
| bytecode is [[Common Intermediate Language|CIL]]; [https://github.com/dotnet/coreclr .NET Core Runtime on GitHub]
Line 203:
| 15k + 2850 per JIT arch + 500 per host OS
|-
! [[DotGNU]]
| [[List of CLI languages|CLI languages]] including: [[C Sharp (programming language)|C#]]
|
| {{no}}
| {{yes}}
Line 213:
! [[Forth virtual machine|Forth]]
| [[Forth (programming language)|Forth]]
| Features are simplified, usually include assembler, compiler, text-level and binary-level interpreters, sometimes editor, debugger and OS.
| {{yes}}
| {{no}}
Line 220:
|-
! [[Glulx]]
|
|
|
Line 237:
|-
! [[Icon (programming language)|Icon]]
| Icon
|
|
Line 244:
|
|-
! [[Java
| [[Java (programming language)|Java]], [[Jython]], [[Groovy (programming language)|Groovy]], [[JRuby]], [[C (programming language)|C]], [[C++]], [[Clojure]], [[Scala (programming language)|Scala]] and [http://www.is-research.de/info/vmlanguages/ several others]
| [http://java.sun.com/javase/ Reference implementation] by Sun ; [[OpenJDK]]: code under [[GPL]] ; [[IcedTea]]: code and tools under [[GPL]]
Line 261:
|-
! [[Lua (programming language)|Lua]]
| Lua
|
| {{yes}}
Line 269:
|-
! [[MMIX]]
| MMIXAL
|
|
Line 278:
! [[Mono (software)|Mono]]
| [[List of CLI languages|CLI languages]] including: [[C Sharp (programming language)|C#]], [[VB.NET]], [[IronPython]], [[IronRuby]], and others
|
| {{yes}}
| {{yes}}
Line 284:
| 2332k
|-
! [[
|
|
|
Line 317:
|-
! [[Parrot virtual machine|Parrot]]
| Perl ([[Perl 6|6]] & [[Perl#2000–present|5]]), NQP-rx, [[Parrot intermediary language|PIR]], [[Parrot
|
| {{yes}}
Line 350:
! [[Rubinius]]
| [[Ruby (programming language)|Ruby]]
| Virtual machine for another
| {{yes}}
| {{yes}}
Line 381:
|-
! [[Squirrel (programming language)|Squirrel]]
|
|
| {{yes}}
Line 389:
|-
! [[Smalltalk]]
|
|
|
Line 405:
|-
! [[Squeak]]
|
| [[Self hosting]] implementation of
| {{yes}}
| {{yes|Cog [http://www.mirandabanda.org/cog/] & Exupery}}
Line 444:
|
|-
! [[Vx32
| [[x86]] binaries
| Application-level virtualization for native code
Line 460:
|
|-
!
| [[Ruby (programming language)|Ruby]]
| Virtual machine of the reference implementation for [[Ruby (programming language)|Ruby]] 1.9 and newer versions
Line 469:
|-
! [[Z-machine]]
|
|
|
Line 492:
* [[Name mangling]]
* [[Application programming interface]] (API)
* [[Application
* [[Comparison of platform virtualization software]]
Line 500:
==External links==
*[http://lists.gnu.org/archive/html/dotgnu-libjit/2004-05/index.html "libJIT vs LLVM discussion" Rhys Weatherley (libJIT) and Chris Lattner (LLVM)]
*[http://java-virtual-machine.net/other.html List of Java
[[Category:Software comparisons|application virtualization software]]
|