 Because all native application code is generated by the controlling environment, it can be checked for correctness (possible security exploits) prior to execution.Programs must be originally designed for the environment in question or manually rewritten and recompiled to work for these new environments.For example, one cannot automatically convert or run a Windows / Linux native app on .NET or Java.