L’initiative .NET: Comparaison avec Java
Download
Report
Transcript L’initiative .NET: Comparaison avec Java
L’initiative .NET: Comparaison
avec la plate-forme Java
Pascal Dufresne
(Groupe GéLo, DIRO, UdeM)
Sébastien Robitaille
(Croesus Finansoft)
Plan du séminaire
1.
Historique: Sun Microsystems et Microsoft
2.
Java & .NET
–
–
–
–
3.
Vue d’ensemble de chacune des plates-formes
Interopérabilité et portabilité
Modèles de sécurité
Support pour les Web Services
Discussion et Conclusion
Historique
VS
1975-1995.
Sun Microsystems: Créé en 1982. « Le réseau est l’ordinateur ». Surtout
une compagnie de matériel (hardware) vendant des serveurs. Créateur
du système d’exploitation SOLARIS, utilisé sur le matériel de Sun.
Microsoft: Conception de logiciel seulement. Fondé en 1975. Incorporé en
1981. MS-DOS 1.0 dans le premier IBM PC en 1981. 1985, Windows 1.0
voit le jour, suivi en 1990 de Windows 3.0 et en 1995 de Windows 95.
Microsoft développe aussi des logiciels pour Macintosh.
Une certaine compétition au niveau des systèmes d’exploitation au
travers de IBM (Windows vs Solaris). Mais Microsoft est plus actif du coté
des ordinateurs de bureau (desktop) tandis que Sun est plus actif du coté
des serveurs.
Historique (Suite…)
Mai 1995: Une nouvelle plate-forme de programmation est lancée par Sun.
Elle est portable et elle comprend Java, un langage orienté objet de haut
niveau.
Mars 1996: Microsoft achète une licence Java de Sun pour pouvoir utiliser
les Applets Java dans Internet Explorer et offrir des outils de
développement pour Java (Visual J++).
Octobre 1997: Action en justice de Sun contre Microsoft pour bris de
contrat: Sun estime que Microsoft n’a pas respecté la licence en
développant une version de Java incompatible avec les spécifications de
Sun. Microsoft continue de développer sa propre version de Java.
Librairies, compilateur, machine virtuelle.
Novembre 1998: Sun obtient une injonction qui empêche MS de vendre
tout produit Java incompatible avec ses spécifications.
Juin 1999: Sun annonce le lancement de J2EE. Un ensemble de standard
permettant de créer des applications d’entreprise en n’utilisant que le
langage Java.
Historique (Suite…)
Juin 2000: Microsoft annonce une très vaste initiative, .NET, une plateforme pour créer des Web Services basés sur XML. La plate-forme utilise
entre autres un nouveau langage semblable à Java appelé C# (seesharp).
Janvier 2001: Sun et Microsoft en arrivent à un arrangement sur Java. Sun
obtient 20 millions. Microsoft ne peut plus développer de produits
incompatibles avec les spécifications de Sun mais peut continuer à
distribuer les versions actuelles.
Juin 2001: Microsoft rend disponible la version BETA 2 de son .NET
Framework SDK.
Juillet 2001: Microsoft annonce que sa machine virtuelle pour Java ne
sera pas distribuée avec son nouveau système d’exploitation, Windows
XP, ni dans Internet Explorer 6 (mais elle sera disponible par
téléchargement sur le site de Microsoft).
Historique (Suite…)
Octobre 2001: Lancement de Windows XP. Cette nouvelle version de
Windows est basée sur les technologies NT et 2000. Les deux branches
de systèmes d’exploitation de Microsoft sont finalement unifiées par cette
nouvelle version (95/98/Millenium par rapport à NT/2000).
Windows XP ne contient pas le Framework .NET.
Décembre 2001: Sun se lance lui aussi dans les Web Services, en
rendant disponible sur le web un ensemble de librairies Java et d’outils
pour la création et l’utilisation de Web Services.
Janvier 2002: Le .NET Framework SDK version finale est disponible pour
téléchargement sur le site web de Microsoft.
Février 2002: Microsoft lance Visual Studio .NET.
Mars 2002: Nouvelle action en justice de Sun contre Microsoft. Environ 1
milliard de dollars est demandé, l’inclusion de Java dans Windows XP et
IE6, ainsi que la divulgation d’un ensemble d’API de Windows XP.
La plate-forme Java de SUN
Langage: Java
Librairies:
J2SE: Java 2 Standard Edition
Applications Desktop
J2EE: Java 2 Enterprise Edition
Serveurs d’applications
J2ME: Java 2 Micro Edition
Appareils mobiles
Machine Virtuelle Java (JVM):
Solaris, Windows, Linux, …
Modèle de programmation
Librairies Java
J2SE
J2EE
J2ME
– Java 2 Standard Edition
– Java 2 Enterprise Edition
– Java 2 Micro Edition
J2SE 1.4
J2SE
1.0: 212 classes
1.1: 504 classes
1.2: 1781 classes
1.3: 2130 classes
1.4: 2738 classes
J2EE 1.3
J2ME
2 Profiles
1.
Foundation Profile
–
–
–
–
2.
Configuration: Connected Device Configuration (CDC)
API de base + Machine Virtuelle CVM.
Ensemble d’APIs supplémentaires.
Cible: Télévision digitale, télé-avertisseurs, PDA, Cellulaires-Web.
Ressource: 1024K minimum ROM, 512K minimum RAM,
Connexion réseau, Pas de GUI.
Mobile Information Device Profile (MIDP)
–
–
–
–
+ Le
Configuration: Connected Limited Device Configuration (CLDC)
Api de base + Machine virtuelle KVM.
Ensemble d’APIs supplémentaires.
Cible: Cellulaires, PDA.
Ressource: Aussi peut que 160K au total (RAM + ROM).
J2ME Wireless Toolkit pour développer et tester des
applications J2ME.
Microsoft .NET
« Microsoft® .NET is the Microsoft platform for XML
Web services » [Microsoft]
1.
Smart Clients and Devices
2.
XML Web Services
3.
.NET My Services
.NET Servers
4.
Pocket PC, Smartphone, Xbox, Tablet PC
Windows XP, Windows XP Embedded, Windows CE .NET
Windows 2000 Servers, .NET Enterprise Servers, Windows .NET
Servers
Developer tools
.NET Framework
Visual Studio .NET
Aperçu du « .NET Framework »
Langages supportés
C#, Visual Basic, C++,Visual J++ (Java), Cobol, Fortran, Eiffel, Smalltalk,
Python, Pascal, etc.)
–
–
.NET Runtime
CLS (Common Language Specification) + CTS (Common Type System).
MSIL (Microsoft Intermediate Language).
CLR (Common Language Runtime).
Compilation « Just-In-Time ».
Garbage Collection, Securité, etc.
Librairies
Base de données
Accès distant
Sécurité
GUI
Etc.
.NET Framework
Code Source
(C#, C++, VB.NET, J++, Cobol, Smalltalk,
Eiffel, etc.)
CLS/CTS
« Managed Code »
(MSIL)
.NET Framework Libraries
.NET CLR
.NET CLR
.NET CLR
Windows
98/Me
NT/2000/XP
Linux
(Mono::)
Autre…
.NET Compact Framework Libraries
.NET CLR
.NET CLR
.NET CLR
.NET Compact Framework
.NET Compact Framework
Windows CE .NET
X86
SHx
MIPS
Autre plate-forme/SE?
ARM
Autre
Architecture/CPU?
Librairies de .NET
ADO.NET (ActiveX Data Object)
Windows Forms (GUI)
Support pour SOAP.
Security
Remoting Framework
Support pour tous les langages de .NET.
Managed code du coté serveur.
Reflection
XML
Écrit en Managed Code mais utilise les widgets de l’API Win32.
Évidemment beaucoup plus riche que Java AWT.
ASP.NET (Active Server Pages)
Support actuel pour ODBC, SQL Server, OleDB.
Support pour les Web Services.
Drawing
Etc.
Packaging dans .NET
Java
–
–
–
Fichier .class pour chaque classe.
Regroupement de ces fichiers (.jar).
.class et .jar doivent être dans le « classpath ».
.NET
–
–
Regroupement en Assemblies (.EXE, .DLL)
Gestion des versions
–
Le CLR s’occupe de « loader » le bon assembly en fonction de la version.
Un même processus peut même utiliser deux versions différentes d’un
même assembly, en même temps…
Élimine les problèmes de compatibilité entre différentes versions d’un
même DLL.
GAC: Global Assembly Cache
Endroit où sont stockés les assemblies.
Géré par le framework.
Le langage C#
Langage Orienté-Objets.
Syntaxe très similaire à celle de C++ et de Java.
Quelques différences intéressantes:
–
Properties
–
Delegates
–
Pointeurs de méthodes « type safe »
Note: Argumentation intéressante entre Sun et Microsoft à ce sujet sur
leurs sites web respectifs.
Events
–
Méthodes Get et Set appelées implicitement.
Particulièrement utile pour la gestion d’événements (GUI)
(Utilise le concept de delegates).
Indexers
Permet de traiter les objets comme des tableaux.
Le langage C# (suite)
–
–
Collections + foreach
structs
Mémoire toujours allouée sur le « stack ».
Permet l’écriture de code plus efficace.
Vector[] vectors = new Vector[1000];
–
Unification des types
Tous les types sont des objets en C#, contrairement à Java.
Concepts: Boxing/Unboxing.
Exemple 1:
int i = 5;
System.Console.WriteLine(i.ToString());
Exemple 2:
Stack stack = new Stack();
stack.Push(i); // boxing
int j = (int)stack.Pop(); // unboxing
Le langage C# (suite)
–
Polymorphism
–
–
Modifiers
Mot clé « ref » permet de passer des paramètres par référence.
public void reverse(ref int x, ref int y);
Mot clé « params » permet de déclarer des méthodes avec nombre de
paramètres variable:
public int add(params int[] array);
Attributes
–
Ajout d’information aux éléments du langage, disponible pendant
l’exécution.
Différence entre [ObsoleteAttribute(true)] et @deprecated par exemple.
Arithmétique de pointeurs
–
Mots clés « virtual », « override » et « new » obligatoires.
Avec le mot clé « unsafe ».
Enums, Operator Overloading, Rectangular Arrays, Etc.
Interopérabilité & Portabilité - Java
« Write Once, Run Anywhere »
Application J2EE ultra-portable:
–
–
–
Application J2ME:
–
Indépendantes de la plate-forme (Linux, Windows, Solaris, …).
Outils disponibles pour chaque plates-formes.
Indépendantes des composantes tiers-partie (BD, Serveur Web,
Serveur courriel, …).
37 licenciés J2EE.
Cellulaire (6 premiers fabricants), PDA (succès limité), etc …
Application J2SE:
–
Très peu utilisé sur le desktop. Environ 5% des sites web ont des
applets.
Modèle de sécurité - Java
Modèle original:
Modèle de J2SE 1.4
Interopérabilité & Portabilité - .NET
Support de la plate-forme pour l’accès à du code natif.
Interopérabilité avec COM
Appel d’un composant COM à partir de .NET
– Appel d’un composant .NET à partir de COM
–
Appel de fonctions natives à partir de .NET (Similaire à JNI)
.NET sur d’autres plate-formes
–
.NET Compact Framework (coté client)
–
–
Smart Device Extensions for Visual Studio .NET
Support natif avec Windows CE .NET
Mobile Internet ToolKit (coté serveur)
Projet Open-Source pour Linux « Mono:: »
Compilateur C#
Runtime .NET
Librairies
Modèle de sécurité - .NET
Evidence-based
–
–
–
Modèle de confiance
Politiques de sécurité
Évidences
Exemple tiré du document « Microsoft .NET Security Overview »
http://msdn.microsoft.com/vstudio/techinfo/articles/developerproductiv
ity/frameworksec.asp
.NET My Task Manager
Modèle de sécurité - .NET (Suite…)
Role-based
Autentification – Autorisation
APIs extensibles.
Plusieurs méthodes d’authentification supportées.
Intégré à ASP.NET.
Isolated Storage
Support du Framework pour de la sécurité au niveau de la logique de
l’application (basé par exemple sur l’identité de l’utilisateur ou des
groupes auxquels il fait parti, tels que définis par exemple par le système
d’exploitation).
Accès à un espace disque isolé.
Cryptography
Support pour l’encryption, signatures digitales, génération de nombres
aléatoires, hashing.
RSA, DSA, Rijndael/AES, Triple DES, DES, RC2, MD5, SHA1, SHA-256,
SHA-384, SHA-512.
Web Services
Qu’est-ce qu’un Web Service ?
• Méthode pour rendre des
services logiciels
accessibles sur le web.
• Basé sur XML pour une
interopérabilité maximum
•Trois technologies XML
qui sont déjà des standards:
SOAP, WSDL, UDDI
Web Services - Java
Web Services - .NET
« XML Web Services are the fundamental building blocks in the
move to distributed computing on the Internet » [MSDN]
Microsoft définit les Web Services comme suit:
Un Web Service est un logiciel de service exposé sur le web à
travers SOAP, décrit par un fichier WSDL et enregistré sous UDDI.
SOAP:
WSDL:
UDDI:
Simple Object Access Protocol
Web Services Description Language
Universal Discovery Description and Integration
Création d’un Web Service
–
–
–
Création un contrat (fichier WSDL)
Déploiement du service (IIS, ASP.NET)
Enregistrement du service sous UDDI
Environnement de Test
Environnement de Production
Microsoft TerraServer Web Service
Image satellite de l’aéroport de San Francisco récupérée à l’aide du système « TerraServer » de Microsoft.
http://terraserver.homeadvisor.msn.com
Utilisation d’un Web Service
« Add Web Reference » (VS.NET)
–
Utilisation de UDDI pour trouver récupérer le contrat du Web
Service.
Add Web Reference…
.NET TerraService Demo App
Utilisation des objets exposés par le Web Service comme s’ils
étaient des objets locaux.
net.microsoft.terraserver.TerraService myTerra =
new net.microsoft.terraserver.TerraService();
–
.NET My Services (Hailstorm)
Ensemble de Web Services
Centré sur le consommateur
Authentification par l’entremise de .NET Passport
« Any Time and On Any Device »
Core .NET My Services:
.NET Presence
.NET Location
.NET Services
.NET Calendar
.NET Contacts
.NET Inbox
.NET Documents
.NET Wallet
.NET Application Settings
.NET Profile
.NET FavoriteWebSites
.NET Lists
.NET Categories
Conclusion & Discussion
Stratégies de Sun
Mettre rapidement Java sur les cellulaires et les gadgets électroniques
(Project Monty).
Offrir rapidement un bon support pour les Web Services (ONE platform )
Éviter la fragmentation de la plate-forme tout en rendant Java profitable.
Stratégies de Microsoft
Stratégie axée sur les Web Services. Web Services pour les
gadgets électroniques dès la deuxième moitié de 2002.
Utiliser son avance coté desktop pour mieux se positionner
dans le marché des cellulaires et gadgets électroniques (vs
Palm et Nokia surtout).
Architecture ouverte aux autres plate-formes mais support
principalement pour Windows.
Références
.NET
www.microsoft.com
msdn.microsoft.com
www.dotnetjunkies.com
www.gotdotnet.com
Java
java.sun.com
Nouvelles technologiques
news.com
01net.com (français)
slashdot.org
www.theregister.co.uk