"Managed code" is a term created by the Microsoft® Coproration. This term refers to program code that requires the use of the Common Language Runtime (CLR) virtual machine in order to be used. The term "unmanaged code" is used to refer to program code that does not require this virtual machine.
Common Language Runtime was developed in an attempt to allow programs to run on a variety of computers and operating systems without requiring any changes in program code. In order to do this, computer program code is converted into virtual machine bytecode. This bytecode is then interpreted by the CLR virtual machine and converted into bytecode for the specific computer on which it is running.
A managed code is able to run on any computer that is equipped with the CLR virtual machine. This high degree of portability gives it a definitive advantage over unmanaged code. Unmanaged code requires that programmers alter the program code for use on different machines. This process not only can be slow, it also can lead to many application errors.
Another advantage that a managed code has is its enhanced security. The security of a program made with an unmanaged code relies heavily on the implementation that the programmers made. The use of the CLR virtual machine helps to take a large portion of security issues off the shoulders of programmers. The majority of security problems that can arise are directly centered within the virtual machine itself. This in itself helps to centralize issues, making it much quicker to implement security patches.
The issue of whether a particular set of code is managed code or unmanaged code is extremely important for computer programmers. Managed code has a higher degree of portability, but this portability requires that the Common Language Runtime be installed on the target computer. Unmanaged code, on the other hand, can be run without the addition of the CLR.
There are many advantages to the use of managed code, but there also are several disadvantages. The primary disadvantage is the overhead that the use of the CLR virtual machine requires. The difference between the speed at which managed code runs versus the speed of unmanaged code is often negligible, but in some cases, it creates a very noticeable difference in application response time. As a result, unmanaged code plays a crucial role in the majority of applications that require a high degree of speed over portability.