Ok, je me lance !
Le compilateur natif crée un exécutable qui dialogue directement avec la plate-forme visée lors de la compilation. C'est la compilation classique jusqu'à la version 6 de Visual Studio (Microsoft) pour la plate-forme Win32 et eMbedded Visual C++ 4.0 pour la plate-forme des systèmes mobiles tels que Pocket PC 2003 (Windows Mobile 2003).
Le compilateur managé quant à lui crée un exécutable qui nécessite la présence d'une couche intermédiaire pour dialoguer avec la plate-forme visée. C'est le cas du java avec la machine virtuelle et de Visual Studio .NET avec le .NET Framework (ou le .NET Compact Framework pour les appareils mobiles). D'une part, cela permet une plus grande portabilité de l'exécutable car la couche supplémentaire le compile au moment de l'exécution pour la plate-forme sur laquelle il se trouve (la couche sait dialoguer avec une multitude de plate-formes), d'où son nom chez Microsoft d'exécutable portable (PE). Il n'est plus en langage machine mais en CIL (Common Intermediate Language) ou MSIL chez Microsoft (MicroSoft Intermediate Language). D'autre part, la couche supplémentaire contrôle et gère toute l'exécution du programme, sécurise la mémoire avec le ramasse-miette (Garbage Collector) et j'en passe.
Pour infos supplémentaires, il existe un poster en .pdf de Microsoft qui récapitule bien tout ça :
[ Lien ], intitulé "Services Web XML utilisant Microsoft .NET"
Voilà ! Je n'ai malheureusement pas la science infuse, donc je ne prétends pas qu'il faut prendre ces informations pour argent comptant ! C'est du moins ce que j'ai compris et ça se tient.
