Comparison of application virtualization software: Difference between revisions

Content deleted Content added
KolbertBot (talk | contribs)
Line 163:
''[[Ahead-of-time compilation]]'' (AOT) refers to the more classic method of using an precompiler to generate a set of native instructions which do not change during the runtime of the program. Because aggressive compiling and optimizing can take time, a precompiled program may launch faster than one which relies on JIT alone for execution. JVM implementations have mitigated this startup cost by initial interpreting to speed launch times, until native code fragments can be generated by JIT.
 
''[[Shared library|Shared libraries]]'' are a facility to reuse segments of native code across multiple running programs. In modern operating systems, this generally means using [[virtual memory]] to share the memory pages containing a shared library across different processes which are protected from each other via [[memory protection]]. It is interesting that aggressive JIT methods such as adaptive optimization often produce code fragments unsuitable for sharing across processes or successive runs of the program, requiring a tradeoff be made between the efficiencies of precompiled and shared code and the advantages of adaptively specialized code. For example, several design provisions of CIL are present to allow for efficient shared libraries, possibly at the cost of more specialized JIT code. The JVM implementation on [[OS X]] uses a Java Shared Archive<ref>[httphttps://developer.apple.com/mac/library/documentation/Java/Conceptual/Java14Development/00-Intro/JavaDevelopment.html Apple docs on OS X use of Java Shared Archive]</ref> to provide some of the benefits of shared libraries.
 
==Comparison of application virtual machine implementations==