Comparison of application virtualization software: Difference between revisions

Content deleted Content added
(21 intermediate revisions by 14 users not shown)
Line 1:
{{short description|None}}
{{refimprove|date=October 2011}}
 
{{refimprovemore citations needed|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 to allow application [[bytecode]] to run portably on many different computer architectures and operating systems. The application is usually run on the computer using an [[Interpreter (computing)|interpreter]] or [[just-in-time compilation]] (JIT). There are often several implementations of a given virtual machine, each covering a different set of functions.
 
==Comparison of virtual machines==
{{Hatnote|[[JavaScript]] machines not included. See [[List of ECMAScript engines]] to find them.}}
 
The table here summarizes elements for which the virtual machine designs are intended to be efficient, not the list of abilities present in any implementation.
 
Line 22 ⟶ 26:
| automatic
| {{yes}}
| {{noyes}}
| {{noyes}}
| {{yes}}
| {{dunno}}
| {{noyes}}
| {{noyes}}
|-
! [[Common Language Runtime]] (CLR)
Line 48 ⟶ 52:
| {{yes}}
| {{yes}}
| {{noyes}}
| {{noyes}}
|-
! [[DotGNU]] [[Portable.NET]]
| [[Stack machine|stack]]
| automatic or manual
| {{noyes}}
| {{noyes}}
| {{yes}}
| {{yes}}
Line 62 ⟶ 66:
| {{no}}
|-
! [[JavaHotSpot (virtual machine)|HotSpot]] ([[Java virtual machine|JVM)]]
| [[Stack machine|stack]]
| automatic
Line 76 ⟶ 80:
| [[Stack machine|stack]]
| automatic
| {{no}}
| {{no}}
| {{yes}}
| {{noyes}}
| {{yes}}
| {{yes}}
| {{dunno}}
| {{noyes}}
| {{noyes}}
|-
! [[LLVM]]
Line 140 ⟶ 144:
|-
! [[BEAM (Erlang virtual machine)|BEAM]] ([[Erlang (programming language)|Erlang]])
| [[Register machine|register]]
| automatic
| {{dunno}}
| {{yes}}
| {{yes}}
| {{yes}}
| {{yes}}
| {{yes}}
| {{yes}}
|-
! [[MoarVM]]
| [[Register machine|register]]
| automatic
Line 172 ⟶ 187:
|-
! [[Virtual machine]]
! [[Programming language|Languages]] executed
! Comments
! [[Interpreter (computing)|Interpreter]]
Line 178 ⟶ 193:
! Implementation language
! [[Source lines of code|SLoC]]
|-
! [[JavaBEAM (Erlang virtual machine)|JVMBEAM]]
| [[JavaErlang (programming language)|JavaErlang]], [[Kotlin_Elixir (programming_languageprogramming language)|KotlinElixir]], [[Jython]], [[GroovyGleam (programming language)|GroovyGleam]], [[JRuby]], [[CCuneiform (programming language)|CCuneiform]], [[C++]], [[Clojure]], [[ScalaLFE (programming language)|ScalaLFE]], and severalClojerl, othersLuerl
| {{yes}}<ref>https://www.erlang.org/blog/a-closer-look-at-the-interpreter/</ref>
| {{yes}}<ref>https://www.erlang.org/blog/a-first-look-at-the-jit/</ref>
|Erlang, C, C++
|1561k including [[Open Telecom Platform|OTP]]
|-
! [[Common Language Runtime]] (CLR)
| [[C Sharp (programming language)|C#]], [[C++/CLI]], [[F Sharp (programming language)|F#]], [[Visual Basic (.NET)|VB.NET]]
| bytecode is [[Common Intermediate Language|CIL]]; [[.NET]] Core Runtime on GitHub
| {{no}}
| {{yes}}
Line 187 ⟶ 210:
|
|-
! [[Adobe Flash Player]] (aka [[Tamarin (JavaScript enginesoftware)|Tamarin]])
| [[ActionScript]], [[SWF]] (file format)
| interactive web authoring tool.; bytecode is named "''ActionScript Byte Code (.abc)"''
| {{yes}}
| {{yes}}
Line 203 ⟶ 226:
| 15k + 2850 per JIT arch + 500 per host OS
|-
! [[DotGNU]]-[[Portable.NET]]
| [[List of CLI languages|CLI languages]] including: [[C Sharp (programming language)|C#]]
| Common Language Runtime clone
Line 211 ⟶ 234:
|
|-
! [[Forth virtual(programming machinelanguage)|Forth]]
| [[Forth (programming language)|Forth]]
| Features are simplified, usually include assembler, compiler, text-level and binary-level interpreters, sometimes editor, debugger and OS.; Compilingcompile speedsspeed areis >20 SKLOC/S, and behavebehaves much like JIT.
| {{yes}}
| {{no}}
Line 235 ⟶ 258:
| C++, OCaml
|
|-
! [[HotSpot (virtual machine)|HotSpot]]
| [[Java (programming language)|Java]], [[Kotlin (programming language)|Kotlin]], [[Jython]], [[Groovy (programming language)|Groovy]], [[JRuby]], [[C (programming language)|C]], [[C++]], [[Clojure]], [[Scala (programming language)|Scala]] and several others
| Reference[[Java virtual machine|JVM]] reference implementation by Sun ; [[OpenJDK]]: code under [[GPL]] ; [[IcedTea]]: code and tools under [[GPL]]
| {{yes}}
| {{yes}}
| [[JDK]], [[OpenJDK]] & [[IcedTea]] with regular JIT : Java, C, C++, ASM ; [[IcedTea]] with the "Zero" JIT : Java, C, C++
| JVMHotSpot is around 6500k lines; [[Technology Compatibility Kit|TCK]] is 80k tests and around 1000k lines
|-
! [[Icon (programming language)|Icon]]
Line 243 ⟶ 274:
|C, RTT (a custom front-end to C, provided with the base source for Icon).
| ~180k total. (source to bytecode: ~11k, bytecode interpreter: ~46k, iconc: ~23k, common/headers: ~13k, rtt: ~15k)
|-
! [[Java virtual machine|JVM]]
| [[Java (programming language)|Java]], [[Kotlin_(programming_language)|Kotlin]], [[Jython]], [[Groovy (programming language)|Groovy]], [[JRuby]], [[C (programming language)|C]], [[C++]], [[Clojure]], [[Scala (programming language)|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; [[Technology Compatibility Kit|TCK]] is 80k tests and around 1000k lines
|-
! [[LLVM]]
| [[C (programming language)|C]], [[C++]], [[Kotlin_Kotlin (programming_languageprogramming language)|Kotlin]], [[Objective-C]], [[Swift (programming language)|Swift]], [[Ada (programming language)|Ada]], [[Fortran]], and [[Rust (programming language)|Rust]]
| 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 <ref name="ohloh-llvm">[http://www.ohloh.net/p/llvm The LLVM Compiler Infrastructure] {{Webarchive|url=https://web.archive.org/web/20120731043158/http://www.ohloh.net/p/llvm |date=2012-07-31}}, ohloh.net, 2011 NovNovember 30</ref>
|-
! [[Lua (programming language)|Lua]]
Line 277 ⟶ 300:
|-
! [[Mono (software)|Mono]]
| [[List of CLI languages|CLI languages]] including: [[C Sharp (programming language)|C#]], [[Visual Basic (.NET)|VB.NET]], [[IronPython]], [[IronRuby]], and others
| Common Language Runtime clone
| {{yes}}
Line 283 ⟶ 306:
| C#, C
| 2332k
|-
! [[Oz (programming language)|Oz]]
| Oz, [[Alice (programming language)|Alice]]
|-
! [[NekoVM]]
Line 299 ⟶ 314:
| C
| 46k
|-
! [[Oz (programming language)|Oz]]
| Oz, [[Alice (programming language)|Alice]]
|-
! [[O-code machine]]
Line 311 ⟶ 334:
| [[Pascal (programming language)|Pascal]]
| UCSD Pascal, widespread in late 70s including Apple II
|{{yes}}
| {{no}}
|assembly, Pascal
|
|-
! [[Parrot virtual machine|Parrot]]
| Perl ([[Perl#2000–present|Perl 6|65]] &, [[Perl#2000–presentRaku (programming language)|5Raku]]), NQP-rx, [[Parrot intermediary language|PIR]], [[Parrot assembly language|PASM]], [[bytecode|PBC]], [[BASIC]], [[bc (programming language)|bc]], [[C99]], [[ECMAScript]], [[Lisp (programming language)|Lisp]], [[Lua (programming language)|Lua]], [[GNU m4|m4]], [[Tcl]], [[WMLScript]], [[Simple API for XML#XML processing with SAX|XML]], and others
|
| {{yes}}
Line 336 ⟶ 359:
|
| {{yes}}
| {{ubl|[[Psyco]]|[[Unladen Swallow]]}}
| C
| 387k&nbsp;C, 368k&nbsp;Python, 10k&nbsp;ASM, 31k&nbsp;Psyco
Line 342 ⟶ 365:
! [[PyPy]]
| [[Python (programming language)|Python]]
| [[Self-hosting (compilers)|Self-hosting]] implementation of Python, next generation of [[Psyco]]
| {{yes}}
| {{yes}}
Line 357 ⟶ 380:
|-
! [[Silverlight]]
| [[C Sharp (programming language)|C#]], [[Visual Basic (.NET)|VB.NET]]
| A Micro-version of Microsoft [[.NET Framework]] to let applications run sandboxed inside browser
| {{yes}}
| {{yes}}
| C++
| 7MB (initiallyfirst releasedrelease)
|-
! [[ScummVM]]
Line 406 ⟶ 429:
! [[Squeak]]
| Squeak [[Smalltalk]]
| [[Self-hosting (compilers)|Self hosting]] implementation of Squeak virtual machine. Rich multi-media support.
| {{yes}}
| {{yes|Cog & Exupery}}
| Smalltalk/Slang
| 110k Smalltalk, ~300K C
|-
![[SWI-Prolog]]
|Prolog: [[SWI-Prolog]], [[YAP (Prolog)|YAP]]
| {{yes}}
| {{no}}
| C, SWI-Prolog
|
|-
! [[TraceMonkey]]
| JavaScript
| Based on [[Tamarin (JavaScript enginesoftware)|Tamarin]]
| {{no}}
| {{yes}}
Line 486 ⟶ 517:
 
==See also==
{{div col}}
* [[Application virtualization]]
* [[Language binding]]
Line 494 ⟶ 526:
* [[Application binary interface]] (ABI)
* [[Comparison of platform virtualization software]]
* [[Comparison of Java virtual machines]]
* [[List of Java virtual machines]]
* [[List of ECMAScript engines]]
* [[List of application servers]]
* [[WebAssembly]]
{{div col end}}
 
==References==