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 Java & .NET

2.

Vue densemble de chacune des plates-formes Interoprabilit et portabilit Modles de scurit Support pour les Web Services

3.

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 plateforme 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
Java 2 Standard Edition Java 2 Enterprise Edition Java 2 Micro Edition

J2SE J2EE J2ME

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

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

2.

Mobile Information Device Profile (MIDP)

+ Le

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


Pocket PC, Smartphone, Xbox, Tablet PC Windows XP, Windows XP Embedded, Windows CE .NET .NET My Services Windows 2000 Servers, .NET Enterprise Servers, Windows .NET Servers .NET Framework Visual Studio .NET

2. 3.

XML Web Services

.NET Servers

4.

Developer tools

Aperu du .NET Framework

Langages supports

C#, Visual Basic, C++,Visual J++ (Java), Cobol, Fortran, Eiffel, Smalltalk, Python, Pascal, etc.)

CLS (Common Language Specification) + CTS (Common Type System). MSIL (Microsoft Intermediate Language).

.NET Runtime

CLR (Common Language Runtime). Compilation Just-In-Time . Garbage Collection, Securit, etc.
Base de donnes Accs distant Scurit GUI Etc.

Librairies

.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

.NET Compact Framework Libraries


.NET CLR .NET CLR .NET CLR

Windows 98/Me NT/2000/XP

Linux (Mono::)

Autre

.NET Compact Framework

.NET Compact Framework

Windows CE .NET X86 SHx MIPS ARM

Autre plate-forme/SE?

Autre Architecture/CPU?

Librairies de .NET

ADO.NET (ActiveX Data Object)

Support actuel pour ODBC, SQL Server, OleDB.


crit en Managed Code mais utilise les widgets de lAPI Win32. videmment beaucoup plus riche que Java AWT.

Windows Forms (GUI)


ASP.NET (Active Server Pages)

Support pour tous les langages de .NET. Managed code du cot serveur.

Reflection XML

Support pour SOAP.

Security Remoting Framework

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 .
Regroupement en Assemblies (.EXE, .DLL) Gestion des versions

.NET

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. Endroit o sont stocks les assemblies. Gr par le framework.

GAC: Global Assembly Cache


Le langage C#

Langage Orient-Objets. Syntaxe trs similaire celle de C++ et de Java. Quelques diffrences intressantes:

Properties

Mthodes Get et Set appeles implicitement. Pointeurs de mthodes type safe Note: Argumentation intressante entre Sun et Microsoft ce sujet sur leurs sites web respectifs.

Delegates

Events

Particulirement utile pour la gestion dvnements (GUI) (Utilise le concept de delegates).


Permet de traiter les objets comme des tableaux.

Indexers

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

Mots cls virtual , override et new obligatoires.


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); Ajout dinformation aux lments du langage, disponible pendant lexcution. Diffrence entre [ObsoleteAttribute(true)] et @deprecated par exemple. Avec le mot cl unsafe .

Modifiers

Attributes

Arithmtique de pointeurs

Enums, Operator Overloading, Rectangular Arrays, Etc.

Interoprabilit & Portabilit - Java


Write Once, Run Anywhere

Application J2EE ultra-portable:

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 Trs peu utilis sur le desktop. Environ 5% des sites web ont des applets.

Application J2ME:

Application J2SE:

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

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).
APIs extensibles. Plusieurs mthodes dauthentification supportes. Intgr ASP.NET. Accs un espace disque isol. 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.

Autentification Autorisation

Isolated Storage

Cryptography

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

Stratgies de Microsoft

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