.NET
.NET n'est pas un nouveau langage, ni un nouveau logiciel de Microsoft. Il est tout d'abord un label marketing qui marque un changement de génération dans les logiciels de l'éditeur. C'est aussi et surtout une toute nouvelle plate-forme de développement particulièrement tournée vers Internet. .NET apporte une nouvelle façon de programmer sur Internet. Presque tous les développements web possibles sur la plate-forme Windows 2000 (NT 5.0) reposent sur la technologie DNA (Distribued interNet Architecture), .NET en est le remplaçant sans toutefois en assurer pleinement la compatibilité. DNA est une architecture 3 tiers, orientée Web première génération avec d'une part la partie présentation (ASP) et d'autre part des composants distribués COM/DCOM. Cette nouvelle plate-forme apporte un lot de nouveautés important
et supporte 27 langages de programmation. .NET s'appuie sur une hiérarchie
de classes qui fournissent des services de base à la manière
de Java. Les applications écrites avec .NET ne sont pas exécutables
directement : il n'y pas de code Intel X86 mais le code source est compilé
vers un langage intermédiaire, le MSIL (MicroSoft Intermediate
Language). Ce code MSIL est exécuté par une sorte de machine
virtuelle, le CLR (Common Language Runtime).
.NET est basé sur 4 composants :
Le plus intéressant concerne les outils et plus particulierement le Framework de .NET. C'est lui qui va permettre de développer et de construire des applications .NET. Le Framework est conçu pour créer et déployer les applications et c'est sur lui que repose le CLR. C'est l'environnement d'exécution de .NET. Il est indépendant des syntaxes et permet le management des applications qui s'exécutent à travers lui.
Le framework est totalement indépendant du langage pourvu que celui-ci réponde au CLS (Common Language Specification). La CLS décrit précisément les caractéristiques que doit comporter un langage pour être compatible. Tout les langages qui se disent ".NET Compatible" doivent prendre en charge les mêmes types de données et reposer sur les classes fournies par le framework. Chaque langage doit disposer de son compilateur vers le MSIL. Ainsi chaque développeur peut utiliser le langage qu'il désire pour faire ses développements puisque chaque langage dispose des mêmes fonctionnalités de base et sont parfaitement intéropérables entre eux. On peut écrire une classe en C# et ensuite l'instancier dans un composant écrit en VB.net. Tous les langages supportés sont compilés sous la forme d'un code MSIL indépendant du matériel et surtout du système d'exploitation. Le MSIL est ensuite exécutés par la CLR qui joue le même rôle que la JVM (Java Virtual Machine). Le MSIL est ensuite traduit en code machine par un compilateur "Juste à temps" (JiT (Just In Time) compiler). Les applications compilées en MSIL sont donc portables et on peut donc imaginer des implémentations de la plate-forme net sur différents types d'OS et de machines. Pour l'instant Microsoft ne parle que d'un portage vers les PDA type Pocket PC (Windows CE 3.0) et sur les futures versions de Windows 64bits en plus de Win9X et Windows 2000 et XP. Mais d'autres systèmes d'exploitation comme Linux ne sont pas exclus. Les classes de base sont un ensemble hiérarchique qui fournit l'ensemble des services et API nécessaire au développement d'applications.
La CLR permet l'exécution des applications .NET à la même façon que la machine virtuelle de Java. Elle fournit l'abstraction entre l'OS et l'application. En plus de la gestion de la mémoire (allocation, garbage collector), elle surveille également l'exécution des programmes. La CLR exécute du code "managé", sous surveillance. Du code non managé est équivalent à une application s'exécutant en code machine natif. Cette surveillance permet une meilleure fiabilité du fait qu'elle évite les erreurs de programmation classique : accès à un élément d'un tableau hors des limites, accès à des zones de mémoire non allouées. Bien sûr, cette surveillance a un prix, on estime la chute de performance à moins de 10% qui est négligeable si l'on considère le gain en terme de fiabilité. La CLR est la seule couche qui est directement en contact avec le matériel
et le système d'exploitation. Ces spécifications sont ouvertes,
ceci laisse à penser que le développement d'un CLR pour
d'autres systèmes comme UNIX est tout a fait envisageable.
Historiquement la création d'un nouveau langage avait pour but
de répondre à un nouveau besoin : résoudre un problème
scientifique, besoin de fiabilité etc... Les langages existant
se ressemblent donc assez peu puisque certains sont procéduraux,
d'autres sont orientés objets. Comme nous l'avons vu, pour qu'un
langage soit intégré à .NET il doit répondre
à la CLS et être compilable vers MSIL. C'est ce qui permet
de pouvoir dériver ou instancier une classe écrite en C#
dans une autre écrite en VB.net. Les "langages" qui sont ou seront disponibles sont :
Un nouveau langage fait son apparition : le C#. Ce langage peut être
considéré comme la réponse de Microsoft à
Java. En effet le C# se rapproche très fortement de Java tant sur
le plan syntaxique que sur son fonctionnement puisqu'il bénéficie
des mêmes fonctionnalités comme la gestion de d'allocation
et de désallocation de la mémoire avec le garbage collector
par exemple. On peut penser que Microsoft a développé C#
pour proposer une alternative àJava et essayer de séduire
les développeurs du monde Java pour les amener vers la plate-forme
.NET. Pour plus d'informations sur C#, je vous invite à consulter
le guide de Microsoft : C#
Introduction and Overview
Immanquablement, après lecture des caractéristiques de
.NET et de C#, on peut faire le rapprochement avec Java !
Java se compose de deux éléments : une machine virtuelle pour exécuter un byte code, et un langage (Java) qui une fois compilé nous donne ce byte code. On a donc un langage unique pour des plate-formes multiples. Java n'offre qu'une interface objet. Au contraire, .NET peut être résumé ainsi : une plate-forme unique pour des langages multiples, du moins tant que la CLR ne sera pas développée pour d'autres plates-formes que Windows. .NET offre la possibilité d'accéder aux données des autres objets directement. Une présentation très complète comparant .NET et Java est disponible sur le site JavaGeeks.com, un comparatif C# / Java est disponible sur Genamics.com. Sur le site Développeur Reference, vous trouverez un article sur le Developer Day 2002 (présentation de .NET en France) avec l'avis d'un programmeur Java. Ces ressemblances ont conduit Microsoft à pouvoir intégrer Java à .NET. Il est ainsi possible de compiler du code Java en MSIL, avec toutefois un travail de conversion soit vers J#.net soir vers C#.net mais considérablement réduit par les outils fournis par Microsoft. Toutes les procédures de conversion de Java vers .NET sont disponibles
sur le site à cette adresse : Conversion
d'applications Java en .NET
|
|