1)
CIL, CLI & CLR
Derrière ces trois acronymes se cachent les trois mamelles
de la programmation .Net : la Common Language Infrastructure,
le Common Indermediate Language et le Common Library Runtime.
L'un des grands avantages du framework
.Net repose sur le nombre de langages de programmation que
reconnaît la plate-forme. Les plus connus sont bien
sûr ceux en provenance directe de chez Microsoft, comme
C#, VB.NET, J# ou encore C++.NET. A ceux-ci s'ajoutent un
large éventail de langages issus des travaux de Microsoft
ou d'entités tierces, comme COBOL.NET et Fortran.NET
(ce qui fait de .NET la plateforme idéal pour moderniser
ses outils, les passer à l'ère d'Internet et
d'XML, sans pour autant devoir changer le langage utilisé
depuis 30 ans), Delphi.NET ou encore Perl, Python...
Tout ceci ne se fait pas de manière automatique :
pour programmer .Net avec ces langages, il faut utiliser des
outils adaptés à .Net, et non ceux utilisés
normalement.
Ces outils permettent de compiler le code
source dans un langage intermédiaire, le CIL, qui
à terme devrait être utilisable sur toutes les
plate-formes .Net (donc l'implémentation libre Mono,
par exemple, ou Rotor), mais qui sur une plate-forme Windows
est appelé MSIL, pour Microsoft Intermediate Language.
Ce code CIL est le même pour tous les langages .Net.
Tout comme Java avec son Byte Code, le code compilé
en CIL doit ensuite passer par un "runtime" pour
fonctionner sur la plate-forme finale. Ce runtime, appelé
CLR sous .Net, charge le CIL/MSIL et le convertit en code
machine adapté au support.
Les développeurs cherchant la performance seront donc
tentés d'apprendre à lire et modifier du code
CIL...
2) JITer
JITer signifie Just In Time Enhanced Runtime,
et fonctionne main dans la main avec le CLR : c'est lui qui
se charge concrètement de compiler le code CIL en code
machine, puis de l'exécuter.
Le "Just In Time" a son importance : il ne s'agit
pas ici de recompiler la totalité du programme en langage
machine, ni d'en interpreter chaque ligne une à une.
Pour obtenir de meilleures performances, c'est une troisième
solution qui a été choisie : compiler le corps
d'une méthode juste avant son appel. La compilation
se fait donc juste à temps pour que l'exécution
de la méthode en langage machine puisse avoir lieu. Le
JITer compile donc le code en fonction des besoins.
3) Code "managé"
Il s'agit du résultat de la compilation en langage
machine. Le code managé est compilé spécifiquement
pour l'architecture .NET, et via la CLR offre des services
tels que la gestion de la sécurité ou de la
mémoire, et l'intégration multilangage. Les
applications managées prenant en compte les caractéristiques
du CLR peuvent fonctionner plus rapidement que les applications
non managées et sont plus sûres.
Par opposition, le code non managé ne peut faire usage
des possibilités de .Net. En code managé, le
programme doit passer par .Net pour accéder aux ressources
système, ce qui lui permet de contrôler son exécution
et de protéger les autres processus en cours. Le système
gagne donc en stabilité et en sécurité.
Exemple d'avantage du code managé : l'absence de registre
au profit d'une pile, ce qui élimine les correspondances
entre code et processeur et simplifie l'optimisation du code
machine généré à la volée.
|
Forum |
|
Réagissez
dans les forums
de JDN Développeurs
|
4) Assemblage et module
Quasiment tous les programmeurs Windows ont dû subir
à un moment où un autre le fameux "DLL
Hell", l'enfer des DLL,
ces bibliothèques dynamiques, dont les versions ne
correspondent jamais vraiment à ce que l'on attend.
La solution proposée par .Net, et donc Longhorn dans
quelques années, et les assemblages. Par souci de compatibilité
ils se trouvent dans des fichiers .exe ou .dll, mais leur
composition interne diffère grandement des exécutables
classiques. L'innovation tient dans le fait que plusieurs
versions d'un même assemblage peuvent cohabiter sur une
machine, à l'application de choisir celle qui lui sied
le mieux, voire en utiliser plusieurs si besoin est.
L'assemblage est donc le nom donné aux exécutables
et DLL de .NET...
Le module n'est pour sa part pas directement exécutable
: c'est la plus petite unité pouvant être produite
par .NET, et se rapproche plutôt des DLL.
|