linitiative.net: comparaison avec la plate-forme java pascal dufresne (groupe gélo, diro,...

38
L’initiative .NET: Comparaison avec la plate- forme Java Pascal Dufresne (Groupe GéLo , DIRO , UdeM ) Sébastien Robitaille (Croesus Finansoft )

Upload: alayna-fayolle

Post on 04-Apr-2015

109 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Linitiative.NET: Comparaison avec la plate-forme Java Pascal Dufresne (Groupe GéLo, DIRO, UdeM)GéLoDIROUdeM Sébastien Robitaille (Croesus Finansoft)Croesus

L’initiative .NET: Comparaison avec la plate-forme Java

Pascal Dufresne(Groupe GéLo, DIRO, UdeM)

Sébastien Robitaille(Croesus Finansoft)

Page 2: Linitiative.NET: Comparaison avec la plate-forme Java Pascal Dufresne (Groupe GéLo, DIRO, UdeM)GéLoDIROUdeM Sébastien Robitaille (Croesus Finansoft)Croesus

Plan du séminaire

1. Historique: Sun Microsystems et Microsoft

2. Java & .NET– Vue d’ensemble de chacune des plates-formes– Interopérabilité et portabilité– Modèles de sécurité– Support pour les Web Services

3. Discussion et Conclusion

Page 3: Linitiative.NET: Comparaison avec la plate-forme Java Pascal Dufresne (Groupe GéLo, DIRO, UdeM)GéLoDIROUdeM Sébastien Robitaille (Croesus Finansoft)Croesus

Historique

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.

VS

Page 4: Linitiative.NET: Comparaison avec la plate-forme Java Pascal Dufresne (Groupe GéLo, DIRO, UdeM)GéLoDIROUdeM Sébastien Robitaille (Croesus Finansoft)Croesus

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.

Page 5: Linitiative.NET: Comparaison avec la plate-forme Java Pascal Dufresne (Groupe GéLo, DIRO, UdeM)GéLoDIROUdeM Sébastien Robitaille (Croesus Finansoft)Croesus

Historique (Suite…)

Juin 2000: Microsoft annonce une très vaste initiative, .NET, une plate-forme pour créer des Web Services basés sur XML. La plate-forme utilise entre autres un nouveau langage semblable à Java appelé C# (see-sharp).

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

Page 6: Linitiative.NET: Comparaison avec la plate-forme Java Pascal Dufresne (Groupe GéLo, DIRO, UdeM)GéLoDIROUdeM Sébastien Robitaille (Croesus Finansoft)Croesus

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.

Page 7: Linitiative.NET: Comparaison avec la plate-forme Java Pascal Dufresne (Groupe GéLo, DIRO, UdeM)GéLoDIROUdeM Sébastien Robitaille (Croesus Finansoft)Croesus

La plate-forme Java de SUN

Langage: Java

Librairies:

J2SE: Java 2 Standard EditionApplications Desktop

J2EE: Java 2 Enterprise EditionServeurs d’applications

J2ME: Java 2 Micro EditionAppareils mobiles

Machine Virtuelle Java (JVM):

Solaris, Windows, Linux, …

Page 8: Linitiative.NET: Comparaison avec la plate-forme Java Pascal Dufresne (Groupe GéLo, DIRO, UdeM)GéLoDIROUdeM Sébastien Robitaille (Croesus Finansoft)Croesus

Modèle de programmation

Page 9: Linitiative.NET: Comparaison avec la plate-forme Java Pascal Dufresne (Groupe GéLo, DIRO, UdeM)GéLoDIROUdeM Sébastien Robitaille (Croesus Finansoft)Croesus

Librairies Java

J2SE – Java 2 Standard EditionJ2EE – Java 2 Enterprise EditionJ2ME – Java 2 Micro Edition

Page 10: Linitiative.NET: Comparaison avec la plate-forme Java Pascal Dufresne (Groupe GéLo, DIRO, UdeM)GéLoDIROUdeM Sébastien Robitaille (Croesus Finansoft)Croesus

J2SE 1.4

J2SE1.0: 212 classes1.1: 504 classes1.2: 1781 classes1.3: 2130 classes1.4: 2738 classes

Page 11: Linitiative.NET: Comparaison avec la plate-forme Java Pascal Dufresne (Groupe GéLo, DIRO, UdeM)GéLoDIROUdeM Sébastien Robitaille (Croesus Finansoft)Croesus

J2EE 1.3

Page 12: Linitiative.NET: Comparaison avec la plate-forme Java Pascal Dufresne (Groupe GéLo, DIRO, UdeM)GéLoDIROUdeM Sébastien Robitaille (Croesus Finansoft)Croesus

J2ME

2 Profiles1. Foundation Profile

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

2. Mobile Information Device Profile (MIDP)– 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).

+ Le J2ME Wireless Toolkit pour développer et tester des applications J2ME.

Page 13: Linitiative.NET: Comparaison avec la plate-forme Java Pascal Dufresne (Groupe GéLo, DIRO, UdeM)GéLoDIROUdeM Sébastien Robitaille (Croesus Finansoft)Croesus

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

2. XML Web Services .NET My Services

3. .NET Servers Windows 2000 Servers, .NET Enterprise Servers, Windows .NET

Servers

4. Developer tools .NET Framework Visual Studio .NET

Page 14: Linitiative.NET: Comparaison avec la plate-forme Java Pascal Dufresne (Groupe GéLo, DIRO, UdeM)GéLoDIROUdeM Sébastien Robitaille (Croesus Finansoft)Croesus

Aperçu du « .NET Framework »

Langages supportés 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.

Librairies Base de données Accès distant Sécurité GUI Etc.

Page 15: Linitiative.NET: Comparaison avec la plate-forme Java Pascal Dufresne (Groupe GéLo, DIRO, UdeM)GéLoDIROUdeM Sébastien Robitaille (Croesus Finansoft)Croesus

.NET Framework

Windows 98/Me

NT/2000/XP

Linux (Mono::)

.NET CLR .NET CLR

Autre…

.NET CLR

.NET Framework Libraries

Code Source(C#, C++, VB.NET, J++, Cobol,

Smalltalk, Eiffel, etc.)

« Managed Code »(MSIL)

.NET CLR .NET CLR .NET CLR

.NET Compact Framework Libraries

CLS/CTS

Page 16: Linitiative.NET: Comparaison avec la plate-forme Java Pascal Dufresne (Groupe GéLo, DIRO, UdeM)GéLoDIROUdeM Sébastien Robitaille (Croesus Finansoft)Croesus

.NET Compact Framework

X86

Windows CE .NET

SHx MIPS ARM

.NET Compact Framework

Autre plate-forme/SE?

Autre Architecture/CPU?

Page 17: Linitiative.NET: Comparaison avec la plate-forme Java Pascal Dufresne (Groupe GéLo, DIRO, UdeM)GéLoDIROUdeM Sébastien Robitaille (Croesus Finansoft)Croesus

Librairies de .NET

ADO.NET (ActiveX Data Object) Support actuel pour ODBC, SQL Server, OleDB.

Windows Forms (GUI) É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 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.

Page 18: Linitiative.NET: Comparaison avec la plate-forme Java Pascal Dufresne (Groupe GéLo, DIRO, UdeM)GéLoDIROUdeM Sébastien Robitaille (Croesus Finansoft)Croesus

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.

Page 19: Linitiative.NET: Comparaison avec la plate-forme Java Pascal Dufresne (Groupe GéLo, DIRO, UdeM)GéLoDIROUdeM Sébastien Robitaille (Croesus Finansoft)Croesus

Le langage C#

Langage Orienté-Objets. Syntaxe très similaire à celle de C++ et de Java.

Quelques différences intéressantes:– Properties

Méthodes Get et Set appelées implicitement.– Delegates

Pointeurs de méthodes « type safe » Note: Argumentation intéressante entre Sun et Microsoft à ce sujet sur

leurs sites web respectifs.– Events

Particulièrement utile pour la gestion d’événements (GUI)(Utilise le concept de delegates).

– Indexers Permet de traiter les objets comme des tableaux.

Page 20: Linitiative.NET: Comparaison avec la plate-forme Java Pascal Dufresne (Groupe GéLo, DIRO, UdeM)GéLoDIROUdeM Sébastien Robitaille (Croesus Finansoft)Croesus

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

Page 21: Linitiative.NET: Comparaison avec la plate-forme Java Pascal Dufresne (Groupe GéLo, DIRO, UdeM)GéLoDIROUdeM Sébastien Robitaille (Croesus Finansoft)Croesus

Le langage C# (suite)

– Polymorphism Mots clés « virtual », « override » et « new » obligatoires.

– 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 Avec le mot clé « unsafe ».

– Enums, Operator Overloading, Rectangular Arrays, Etc.

Page 22: Linitiative.NET: Comparaison avec la plate-forme Java Pascal Dufresne (Groupe GéLo, DIRO, UdeM)GéLoDIROUdeM Sébastien Robitaille (Croesus Finansoft)Croesus

Interopérabilité & Portabilité - Java

« Write Once, Run Anywhere »

Application J2EE ultra-portable:– 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.

Application J2ME:– 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.

Page 23: Linitiative.NET: Comparaison avec la plate-forme Java Pascal Dufresne (Groupe GéLo, DIRO, UdeM)GéLoDIROUdeM Sébastien Robitaille (Croesus Finansoft)Croesus

Modèle de sécurité - Java

Modèle original:

Modèle de J2SE 1.4

Page 24: Linitiative.NET: Comparaison avec la plate-forme Java Pascal Dufresne (Groupe GéLo, DIRO, UdeM)GéLoDIROUdeM Sébastien Robitaille (Croesus Finansoft)Croesus

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

Page 25: Linitiative.NET: Comparaison avec la plate-forme Java Pascal Dufresne (Groupe GéLo, DIRO, UdeM)GéLoDIROUdeM Sébastien Robitaille (Croesus Finansoft)Croesus

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

Page 26: Linitiative.NET: Comparaison avec la plate-forme Java Pascal Dufresne (Groupe GéLo, DIRO, UdeM)GéLoDIROUdeM Sébastien Robitaille (Croesus Finansoft)Croesus

.NET My Task Manager

Page 27: Linitiative.NET: Comparaison avec la plate-forme Java Pascal Dufresne (Groupe GéLo, DIRO, UdeM)GéLoDIROUdeM Sébastien Robitaille (Croesus Finansoft)Croesus

Modèle de sécurité - .NET (Suite…)

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

Autentification – Autorisation APIs extensibles. Plusieurs méthodes d’authentification supportées. Intégré à ASP.NET.

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

Page 28: Linitiative.NET: Comparaison avec la plate-forme Java Pascal Dufresne (Groupe GéLo, DIRO, UdeM)GéLoDIROUdeM Sébastien Robitaille (Croesus Finansoft)Croesus

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

Page 29: Linitiative.NET: Comparaison avec la plate-forme Java Pascal Dufresne (Groupe GéLo, DIRO, UdeM)GéLoDIROUdeM Sébastien Robitaille (Croesus Finansoft)Croesus

Web Services - Java

Page 30: Linitiative.NET: Comparaison avec la plate-forme Java Pascal Dufresne (Groupe GéLo, DIRO, UdeM)GéLoDIROUdeM Sébastien Robitaille (Croesus Finansoft)Croesus

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: Simple Object Access Protocol WSDL: Web Services Description Language UDDI: Universal Discovery Description and Integration

Page 31: Linitiative.NET: Comparaison avec la plate-forme Java Pascal Dufresne (Groupe GéLo, DIRO, UdeM)GéLoDIROUdeM Sébastien Robitaille (Croesus Finansoft)Croesus

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

Page 32: Linitiative.NET: Comparaison avec la plate-forme Java Pascal Dufresne (Groupe GéLo, DIRO, UdeM)GéLoDIROUdeM Sébastien Robitaille (Croesus Finansoft)Croesus

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

Page 33: Linitiative.NET: Comparaison avec la plate-forme Java Pascal Dufresne (Groupe GéLo, DIRO, UdeM)GéLoDIROUdeM Sébastien Robitaille (Croesus Finansoft)Croesus

Utilisation d’un Web Service

« Add Web Reference » (VS.NET)– Utilisation de UDDI pour trouver récupérer le contrat du Web

Service.

Page 34: Linitiative.NET: Comparaison avec la plate-forme Java Pascal Dufresne (Groupe GéLo, DIRO, UdeM)GéLoDIROUdeM Sébastien Robitaille (Croesus Finansoft)Croesus

Add Web Reference…

Page 35: Linitiative.NET: Comparaison avec la plate-forme Java Pascal Dufresne (Groupe GéLo, DIRO, UdeM)GéLoDIROUdeM Sébastien Robitaille (Croesus Finansoft)Croesus

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

Page 36: Linitiative.NET: Comparaison avec la plate-forme Java Pascal Dufresne (Groupe GéLo, DIRO, UdeM)GéLoDIROUdeM Sébastien Robitaille (Croesus Finansoft)Croesus

.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

Page 37: Linitiative.NET: Comparaison avec la plate-forme Java Pascal Dufresne (Groupe GéLo, DIRO, UdeM)GéLoDIROUdeM Sébastien Robitaille (Croesus Finansoft)Croesus

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.

Page 38: Linitiative.NET: Comparaison avec la plate-forme Java Pascal Dufresne (Groupe GéLo, DIRO, UdeM)GéLoDIROUdeM Sébastien Robitaille (Croesus Finansoft)Croesus

Références

.NETwww.microsoft.com

msdn.microsoft.com

www.dotnetjunkies.com

www.gotdotnet.com

Javajava.sun.com

Nouvelles technologiquesnews.com

01net.com (français)

slashdot.org

www.theregister.co.uk