| |
| | Compilers |
Virtual Machines |
Machine-Code Translation |
| Portability |
|
|
|
| Source code |
yes with exceptions |
yes |
yes |
| Object code |
no |
yes |
yes |
| OS |
only if source is available |
yes if using virtual machine |
yes |
| Device drivers |
yes with modification |
yes, but may require modification |
yes, but may require modification |
| Framework |
only if source is available |
yes |
yes |
| Pros |
C/C++ compilers are relatively standard; optimized performance |
machine independent; consistent debugging environment |
high-performance, consistent debugging environment |
| Cons |
source required; can't use CPU or platform-specific features |
potential performance penalty |
less efficient than native code; hardware-specific |
| Debug support |
excellent if source is available |
excellent if source is available; fair if source unavailable |
excellent if source is available; fair if source unavailable |
| Runtime overhead |
none |
depends on implementation, interpretation, cache, JIT latency |
cache, JIT latency |
| Examples |
C/C++ compilers |
Java, .NET CLR, Inferno |
Transmeta Cruso, Transitive Technologies Dynamite |