Content deleted Content added
Jerryobject (talk | contribs) →Comparison of application virtual machine implementations: WP:LINKs: update-standardizes, adds, WP:RED delink, fix needless WP:REPEATLINK in same section. WP:BADEMPHASIS MOS:QUOTEMARKS > WP:ITALICs. Small WP:COPYEDITs WP:EoS, WP:TERSE. |
|||
(12 intermediate revisions by 6 users not shown) | |||
Line 1:
{{short description|None}}
{{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 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==
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 64 ⟶ 66:
| {{no}}
|-
! [[
| [[Stack machine|stack]]
| automatic
Line 185 ⟶ 187:
|-
! [[Virtual machine]]
! [[Programming language|Languages]] executed
! Comments
! [[Interpreter (computing)|Interpreter]]
Line 191 ⟶ 193:
! Implementation language
! [[Source lines of code|SLoC]]
|-▼
|
|▼
| {{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 200 ⟶ 210:
|
|-
! [[Adobe Flash Player]] (aka [[Tamarin (
| [[ActionScript]], [[SWF]] (file format)
| interactive web authoring tool
| {{yes}}
| {{yes}}
Line 216 ⟶ 226:
| 15k + 2850 per JIT arch + 500 per host OS
|-
! [[DotGNU]]-
| [[List of CLI languages|CLI languages]] including: [[C Sharp (programming language)|C#]]
| Common Language Runtime clone
Line 224 ⟶ 234:
|
|-
! [[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 248 ⟶ 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
|
| {{yes}}▼
| {{yes}}▼
| [[JDK]], [[OpenJDK]] & [[IcedTea]] with regular JIT : Java, C, C++, ASM ; [[IcedTea]] with the "Zero" JIT : Java, C, C++▼
|
|-
! [[Icon (programming language)|Icon]]
Line 256 ⟶ 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, C++, ASM ; [[IcedTea]] with the "Zero" JIT : Java, C, C++
▲| JVM is around 6500k lines; [[Technology Compatibility Kit|TCK]] is 80k tests and around 1000k lines
|-
! [[LLVM]]
| [[C (programming language)|C]], [[C++]], [[
| 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
|-
! [[Lua (programming language)|Lua]]
Line 290 ⟶ 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 296 ⟶ 306:
| C#, C
| 2332k
▲|-
! [[Oz (programming language)|Oz]]▼
| Oz, [[Alice (programming language)|Alice]]▼
▲|
|▼
|▼
|▼
|▼
|-
! [[NekoVM]]
Line 312 ⟶ 314:
| C
| 46k
|-
▲! [[Oz (programming language)|Oz]]
▲| Oz, [[Alice (programming language)|Alice]]
▲|
▲|
▲|
▲|
|▼
|-
! [[O-code machine]]
Line 324 ⟶ 334:
| [[Pascal (programming language)|Pascal]]
| UCSD Pascal, widespread in late 70s including Apple II
|{{yes}}
▲|
|{{no}}
|▼
|assembly, Pascal
|▼
|
|-
Line 370 ⟶ 380:
|-
! [[Silverlight]]
| [[C Sharp (programming language)|C#]], [[Visual Basic (.NET)|VB.NET]]
|
| {{yes}}
| {{yes}}
| C++
| 7MB (
|-
! [[ScummVM]]
Line 424 ⟶ 434:
| Smalltalk/Slang
| 110k Smalltalk, ~300K C
|-
![[SWI-Prolog]]
|Prolog: [[SWI-Prolog]], [[YAP (Prolog)|YAP]]
▲|
| {{yes}}
| {{no}}
| C, SWI-Prolog
▲|
|-
! [[TraceMonkey]]
| JavaScript
| Based on [[Tamarin (
| {{no}}
| {{yes}}
Line 499 ⟶ 517:
==See also==
{{div col}}
* [[Application virtualization]]
* [[Language binding]]
Line 507 ⟶ 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==
|