Vous êtes sur la page 1sur 38

Linitiative .

NET: Comparaison
avec la plate-forme Java
Pascal Dufresne
(Groupe GLo, DIRO, UdeM)

Sbastien Robitaille
(Croesus Finansoft)

Plan du sminaire
1.

Historique: Sun Microsystems et Microsoft

2.

Java & .NET

3.

Vue densemble de chacune des plates-formes


Interoprabilit et portabilit
Modles de scurit
Support pour les Web Services

Discussion et Conclusion

Historique
VS

1975-1995.
Sun Microsystems: Cr en 1982. Le rseau est lordinateur . Surtout
une compagnie de matriel (hardware) vendant des serveurs. Crateur
du systme dexploitation SOLARIS, utilis sur le matriel 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 dveloppe aussi des logiciels pour Macintosh.
Une certaine comptition au niveau des systmes dexploitation 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 lance par Sun.
Elle est portable et elle comprend Java, un langage orient objet de haut
niveau.
Mars 1996: Microsoft achte une licence Java de Sun pour pouvoir utiliser
les Applets Java dans Internet Explorer et offrir des outils de
dveloppement pour Java (Visual J++).
Octobre 1997: Action en justice de Sun contre Microsoft pour bris de
contrat: Sun estime que Microsoft na pas respect la licence en
dveloppant une version de Java incompatible avec les spcifications de
Sun. Microsoft continue de dvelopper sa propre version de Java.
Librairies, compilateur, machine virtuelle.

Novembre 1998: Sun obtient une injonction qui empche MS de vendre


tout produit Java incompatible avec ses spcifications.
Juin 1999: Sun annonce le lancement de J2EE. Un ensemble de standard
permettant de crer des applications dentreprise en nutilisant que le
langage Java.

Historique (Suite)
Juin 2000: Microsoft annonce une trs vaste initiative, .NET, une plate-

forme pour crer des Web Services bass 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 dvelopper de produits
incompatibles avec les spcifications 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 distribue avec son nouveau systme dexploitation, Windows XP, ni
dans Internet Explorer 6 (mais elle sera disponible par tlchargement sur
le site de Microsoft).

Historique (Suite)
Octobre 2001: Lancement de Windows XP. Cette nouvelle version de

Windows est base sur les technologies NT et 2000. Les deux branches
de systmes dexploitation de Microsoft sont finalement unifies par cette
nouvelle version (95/98/Millenium par rapport NT/2000).
Windows XP ne contient pas le Framework .NET.
Dcembre 2001: Sun se lance lui aussi dans les Web Services, en rendant
disponible sur le web un ensemble de librairies Java et doutils pour la
cration et lutilisation de Web Services.
Janvier 2002: Le .NET Framework SDK version finale est disponible pour
tlchargement sur le site web de Microsoft.
Fvrier 2002: Microsoft lance Visual Studio .NET.
Mars 2002: Nouvelle action en justice de Sun contre Microsoft. Environ 1
milliard de dollars est demand, linclusion de Java dans Windows XP et
IE6, ainsi que la divulgation dun ensemble dAPI 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 dapplications

J2ME: Java 2 Micro Edition


Appareils mobiles

Machine Virtuelle Java (JVM):


Solaris, Windows, Linux,

Modle 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 dAPIs supplmentaires.
Cible: Tlvision digitale, tl-avertisseurs, PDA, Cellulaires-Web.
Ressource: 1024K minimum ROM, 512K minimum RAM,
Connexion rseau, Pas de GUI.

Mobile Information Device Profile (MIDP)

+ Le

Configuration: Connected Limited Device Configuration (CLDC)


Api de base + Machine virtuelle KVM.
Ensemble dAPIs supplmentaires.
Cible: Cellulaires, PDA.
Ressource: Aussi peut que 160K au total (RAM + ROM).

J2ME Wireless Toolkit pour dvelopper 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

Aperu du .NET Framework

Langages supports

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 donnes
Accs distant
Scurit
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 lAPI 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 soccupe de loader le bon assembly en fonction de la version.


Un mme processus peut mme utiliser deux versions diffrentes dun
mme assembly, en mme temps
limine les problmes de compatibilit entre diffrentes versions dun
mme DLL.

GAC: Global Assembly Cache

Endroit o sont stocks les assemblies.


Gr par le framework.

Le langage C#

Langage Orient-Objets.
Syntaxe trs similaire celle de C++ et de Java.

Quelques diffrences intressantes:

Properties

Delegates

Pointeurs de mthodes type safe


Note: Argumentation intressante entre Sun et Microsoft ce sujet sur
leurs sites web respectifs.

Events

Mthodes Get et Set appeles implicitement.

Particulirement utile pour la gestion dvnements (GUI)


(Utilise le concept de delegates).

Indexers

Permet de traiter les objets comme des tableaux.

Le langage C# (suite)

Collections + foreach
structs

Mmoire toujours alloue sur le stack .


Permet lcriture 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

Ajout dinformation aux lments du langage, disponible pendant


lexcution.
Diffrence entre [ObsoleteAttribute(true)] et @deprecated par exemple.

Arithmtique de pointeurs

Mot cl ref permet de passer des paramtres par rfrence.


public void reverse(ref int x, ref int y);
Mot cl params permet de dclarer des mthodes avec nombre de
paramtres variable:
public int add(params int[] array);

Attributes

Mots cls virtual , override et new obligatoires.

Avec le mot cl unsafe .

Enums, Operator Overloading, Rectangular Arrays, Etc.

Interoprabilit & Portabilit - Java


Write Once, Run Anywhere

Application J2EE ultra-portable:

Application J2ME:

Indpendantes de la plate-forme (Linux, Windows, Solaris, ).


Outils disponibles pour chaque plates-formes.
Indpendantes des composantes tiers-partie (BD, Serveur Web,
Serveur courriel, ).
37 licencis J2EE.
Cellulaire (6 premiers fabricants), PDA (succs limit), etc

Application J2SE:

Trs peu utilis sur le desktop. Environ 5% des sites web ont des
applets.

Modle de scurit - Java


Modle original:
Modle de J2SE 1.4

Interoprabilit & Portabilit - .NET

Support de la plate-forme pour laccs du code natif.

Interoprabilit avec COM


Appel dun composant COM partir de .NET
Appel dun composant .NET partir de COM

Appel de fonctions natives partir de .NET (Similaire JNI)

.NET sur dautres 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

Modle de scurit - .NET

Evidence-based

Modle de confiance
Politiques de scurit
vidences

Exemple tir du document Microsoft .NET Security Overview


http://msdn.microsoft.com/vstudio/techinfo/articles/developerproductiv
ity/frameworksec.asp

.NET My Task Manager

Modle de scurit - .NET (Suite)

Role-based

Autentification Autorisation

APIs extensibles.
Plusieurs mthodes dauthentification supportes.
Intgr ASP.NET.

Isolated Storage

Support du Framework pour de la scurit au niveau de la logique de


lapplication (bas par exemple sur lidentit de lutilisateur ou des
groupes auxquels il fait parti, tels que dfinis par exemple par le systme
dexploitation).

Accs un espace disque isol.

Cryptography

Support pour lencryption, signatures digitales, gnration de nombres


alatoires, hashing.
RSA, DSA, Rijndael/AES, Triple DES, DES, RC2, MD5, SHA1, SHA-256,
SHA-384, SHA-512.

Web Services
Quest-ce quun Web Service ?
Mthode

pour rendre des


services logiciels
accessibles sur le web.
Bas sur XML pour une
interoprabilit maximum
Trois technologies XML
qui sont dj 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 dfinit les Web Services comme suit:
Un Web Service est un logiciel de service expos sur le web
travers SOAP, dcrit par un fichier WSDL et enregistr sous UDDI.

SOAP:
WSDL:
UDDI:

Simple Object Access Protocol


Web Services Description Language
Universal Discovery Description and Integration

Cration dun Web Service

Cration un contrat (fichier WSDL)


Dploiement du service (IIS, ASP.NET)
Enregistrement du service sous UDDI

Environnement de Test
Environnement de Production

Microsoft TerraServer Web Service

Image satellite de laroport de San Francisco rcupre laide du systme TerraServer de Microsoft.
http://terraserver.homeadvisor.msn.com

Utilisation dun Web Service

Add Web Reference (VS.NET)

Utilisation de UDDI pour trouver rcuprer le contrat du Web


Service.

Add Web Reference

.NET TerraService Demo App


Utilisation des objets exposs par le Web Service comme sils
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 lentremise 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

Stratgies 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.

Stratgies de Microsoft
Stratgie axe sur les Web Services. Web Services pour
les gadgets lectroniques ds la deuxime 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.

Rfrences

.NET
www.microsoft.com
msdn.microsoft.com
www.dotnetjunkies.com
www.gotdotnet.com

Java
java.sun.com

Nouvelles technologiques
news.com
01net.com (franais)
slashdot.org
www.theregister.co.uk