Managed code
Dans la terminologie de Microsoft, le managed code est un code source qui s'exécute sous le contrôle de la machine virtuelle CLR, ou d'une autre machine virtuelle. Ce terme est employé par opposition au unmanaged code (code non géré), qui est exécuté directement par le processeur.
Le « managed code » permet d'améliorer la sûreté de fonctionnement d'un programme informatique, et de simplifier le travail du programmeur. Ce terme fait partie de la terminologie Microsoft, mais le même concept existe pour le langage Java.
Le ramasse-miettes est un exemple d'avantage du « managed code » : si le programmeur oublie de libérer de l'espace-mémoire, le ramasse-miette s'en charge, ce qui évite de provoquer des fuites de mémoire invisibles.
Le « managed code » peut aussi permettre par exemple de vérifier que les variables sont bien du type attendu. Ceci ne simplifie pas nécessairement la tâche d'un programmeur, mais permet une meilleure sûreté de fonctionnement.
Les principaux langages de programmation pour écrire du managed code sont C# et Visual Basic .NET.
Analyse du plantage d'un programme
[modifier | modifier le code]Le managed code évite des plantages des programmes, mais pas tous. Si, malgré tout, il y a un plantage, il est plus facile à analyser. Avec du code non géré, le plantage se produit bien longtemps après l'erreur (effet bombe à retardement), alors qu'avec du managed code, le plantage se produit plus près de l'emplacement de l'erreur[réf. nécessaire].
Comparatif avec Java
[modifier | modifier le code]Le terme de managed code provenant de Microsoft ne fait pas partie de la terminologie Java, mais le même concept existe : du code exécuté dans la JVM bénéficie de plusieurs avantages, dont notamment le ramasse-miettes.
Articles connexes
[modifier | modifier le code]- Platform Invocation Services (P/Invoke), bibliothèque n'utilisant pas du « managed code » pour s'interfacer avec des bibliothèques utilisant d'autres langages
- Singularity
Références externes
[modifier | modifier le code]- (en) What is managed code? (Brad Abrams - .NET Framework team)