J2EE / .Net - Taha Ben Salah

Transcription

J2EE / .Net - Taha Ben Salah
To Bean or Not To Bean
That’s the question…
Vision comparative des architectures
J2EE et .NET
Taha BEN SALAH
[email protected]
Version 1.2 / Dec. 2008
1
Agenda
1. L’Evolution des besoins & les enjeux
des applications ‘Entreprise’
2. Présentation J2EE
3. Présentation .Net
4. J2EE, points forts / faibles
5. .Net, points forts / faibles
6. Vision comparative J2EE / .Net
7. Convergence des deux plateformes
8. Conclusion : Le choix
2
L’évolution…

3
« La théorie de Darween »… Toujours d’actualité!
Évolution des architectures
4
5
Évolution des besoins (1)
 Créer des applications sécurisées, “scalable”,
fiables, portables, rapides à mettre en oeuvre,
performantes, hautement disponibles qui puissent
être facilement intégrées dans les environnements
existants
 Mettre en œuvre des architectures N-tiers à base
d’objets reposant sur les standards technologiques
 Applications Web reposant sur infrastructure
technique serveurs d’applications / middleware
(de 1995 à aujourd’hui)
 Créer des applications Web inter-opérables
 Former un réseau d’échange de services où toute
information est accessible depuis n’importe quel
média et depuis n’importe où sur Internet
 XML Web Services (de 2000 à aujourd’hui)
6
Évolution des besoins (2)

Aider le développeur à se focaliser seulement sur la
spécification des interfaces et la logique de son application

Améliorer la productivité et la maîtrise de la gestion de
l’infrastructure dans son cycle de vie

Accélérer le ROI
Les deux principales technologies du marché
répondant à ces enjeux sont actuellement :
 J2EE (Sun, Java Community Process)
 .NET (Microsoft et sa dernière stratégie de
framework applicatif)
7
Avant propos
 Première remarque, comparer ces
différentes initiatives est bel et bien
légitime. Toutes partagent une même
ambition :
 Dessiner un cadre technologique
(composé de langages, de
protocoles...) au sein duquel des
composants logiciels (et donc des
services) pourront dialoguer à travers
le réseau. A cette liste, nous pourrions
aussi ajouter un autre item : les Web
Services.
8
Avant propos
 Ces initiatives peuvent être classées
dans deux groupes :
 Celles qui fédèrent avant tout des
protocoles et langages devenus des
standards ou sur le point de l'être (Corba,
J2EE, les Web Services)
 Celles qui, représentant avant tout la
stratégie d'un éditeur (One de Sun et .Net
de Microsoft), ne coiffent pas seulement
des spécifications mais aussi des
logiciels.
9
J2EE…
« Libre comme l’air »…!
10
Java, l’histoire, le commencement…
 En 1995, Sun a présenté un nouveau
langage baptisé Java sous le signe
d’un grain de café
 Raison d ’être : Initialement destiné
aux Systèmes embarqués
 Présenté comme étant le langage
d ’Internet : premier langage
permettant de développer des
applications sur Internet : « Applet »
s ’exécutant sur un navigateur (Hot
Java)
11
Java : Caractéristiques
 Les caractéristiques principales de ce
langage sont



Langage purement Objet
Similaire à C, C++
Portable
 « Write Once, run anywhere »
 Une seule compilation (différent de QT)
12
 Machine Virtuelle : Interprété (semiinterprété)
 Sécurisé
 Robuste
Java : Caractéristiques, la suite…
 Gestion dynamique de la mémoire
(Garbage Collector)
 Absence





13
des pointeurs,
des généricités (Templates),
du précompilateur,
de la surcharge des opérateurs
brefs de tous les vices (qui toutefois font la
puissance de C et C++) à l’origine de 90% des
Bugs.
 Complet (Très riche bibliothèque)
 Gratuit / (JDK, Sources compris)
Java, L ’architecture
14
Java, la saga continue…
 En quelque années, Java a envoûté la
plupart des développeurs, des
entreprises et des centres de
recherche
 La communauté de l’Open Source l’a
pratiquement adopté
 Les grands éditeurs aussi (Netscape,
Oracle, IBM, HP, Toshiba, Lotus Development Corp,
Macromedia Inc., Borland, Mitsubishi Electronics,
Sybase, Symatec, Adobe, et … Microsoft)
15
Java, encore et toujours
 Dans le sillage de Java, Sun a
commencé à définir un modèle
d'architecture dont Java n'est qu'une
simple brique parmi d'autres : La
plateforme Java 2 est née.
 Cette plateforme est organisée en :



16
Java 2 Standard Edition
Java 2 Micro Edition
Java 2 Entreprise Edition
17
Java 2 Standard Edition
 Connue sous le nom de J2SE (ou tout
simplement JDK)
 Elle même nouvellement organisée en :
 Java Core
 Contient toutes les classes et bibliothèques
de base définissants le langage lui même
 Java Desktop
 Contient les bibliothèques graphiques (les
fameux Swing et AWT)
 Destiné aux applications d’ordre
général, très souvent sur les PC
18
Java 2 Micro Edition
 Connue sous le nom de J2ME
 Parce que les ressources matérielles
(mémoire, processeur, …etc) sont très
critiques sur les systèmes embarqués, Sun a
préféré le lancement d’une Version Light du
langage
 Moins de types
 Pas de gestion de mémoire
 Bibliothèque allégée, …
 Destinée aux



19
Téléphones portables
PDA
Cartes à Puces, …etc.
Java 2 Entreprise Edition
 Mieux connue sous le nom J2EE
 Une plate-forme d'exécution par
excellence
 Se base sur J2SE
 Le modèle J2EE est co-élaboré
aujourd'hui au sein du JCP (Java
Community Process) qui réunit Sun et
de nombreux autres éditeurs autour
des travaux en cours
20
J2EE, c’est…
 Une dizaine de services et de spécifications
techniques :
21
 JDBC (Java Data Base Connectivity), pour les
connexions aux bases de données
 JMS (Java Message Services) pour travailler avec
des bus logiciels asynchrones comme MQ Series
d'IBM
 Les Servlets , des composants Web (coté
Serveur)
 Les JSP (Java Server Pages) des pages web
exécutées sur le serveur qui combinent HTML et
code Java
 Les EJB (Enterprise Java Beans), un modèle de
composants pour les développements Java.
 …
Services J2EE
22
J2EE, c’est aussi…
 Une plateforme imposant
 Une architecture distribuée
 Un cycle de vie




Component Creation
Component Packaging
Application Assembly
Application Deployment
 Un nombre d’acteurs/Rôles
 Un nombre de Design Patterns (Recommandations)
23
J2EE, c ’est aussi
 Nécessite un Serveur d ’Application
garant des aspects






24
Sécurité
Haute disponibilité
Partage de charge
Transactions
Accès aux données
Synchronisations (messages
Synchrones / messages Asynchrones)
Serveurs d ’applications
 Plusieurs implémentations
 J2EEDK (Implémentation de référence de
SUN)
 Websphere (IBM)
 Oracle 9iAS / 10G (Oracle)
 Weblogic (BEA, Oracle)
 JBoss (Open Source, RedHat)
 Jonas (Open Source, OW2 : INRIA)
 GlassFish (Open Source, Sun)
25
Architecture J2EE
26
Services / Architecture J2EE
27
Composants J2EE, rôles
 Couche de présentation
 Web : JSP (Java Server Pages), JSF (Java Server
Faces)
 Desktop : Application/Applet Swing, AWT
 Couche Applicative
 Logique Métier


Servlet, Web Services (Dans un conteneur WEB),
EJB (Dans un conteneur EJB)



Entity (BMP/CMP)
Session (Stateful/Stateless)
Message Driven
 Accès aux Données
28
 Jdbc natif / encapsulé dans les EJB
Autres services
Assurés par les Serveurs d’application
 Gestion de la sécurité
 Conteneurs EJB (Profiles), Web (Realm)
 Gestion des transactions
 Conteneurs EJB, Web
 Communication : Protocoles de
distribution
 JNDI, RMI, IIOP, HTTP
 Montée en charge
 Conteneurs EJB, Web

29
Composants partagés/dupliqués
Sun ONE
 « Open Net Environnement »
 Pour faire face à l'initiative marketing
".Net" et aussi pour donner de la
cohérence à ses nombreuses activités
logicielles (Java et J2EE, l'offre iPlanet,
les outils de développement Forte),
Sun a ressenti le besoin d'élaborer à
son tour une marque.
 Sun One ne représente donc pas un
nouveau modèle d'architecture mais
plutôt le nom de guerre de Sun sur la
scène des architectures Web...
30
Net
.
« Le gros bébé »…!
31
.Net, c’est…
 ".Net" est une marque utilisée par
Microsoft comme Hérault de son virage
stratégique vers la Webisation totale
de son offre logicielle.
 A la différence de J2EE dont le socle
est utilisable par d'autres fournisseurs
de serveurs d'applications, la plateforme .Net reste la propriété exclusive
de son créateur : Microsoft.
32
.Net, les composantes
 Plusieurs produits :
 le système d'exploitation Windows et ses
dérivés dédiés aux terminaux portables
(Windows CE .Net) et aux applications
embarquées (Windows XP Embedded).
 Mais également le serveur Web IIS
(Internet Information Server),
 le serveur d'intégration Biztalk Server
 ainsi que la base de données SQL Server
33
.Net, l’architecture
 Assez logiquement, .Net chapeaute
donc
 les standards auxquels la firme contribue
 XML et ses déclinaisons
 Les langages et techniques qu'elle défend (C#,
les Active Server Pages, etc)
 et ses logiciels



34
Visual Studio.net
Serveur B to B Biztalk
Versions ".net" de Windows.
.Net, l’architecture en action
35
.Net, l’architecture
36
.Net, l’architecture
37
.Net, un peu, beaucoup, passionnément…
 Ces choix techniques dessinent une
architecture logicielle concurrente du
modèle J2EE et qui, comme ce dernier,
n'est pas dans un rapport d'opposition
avec les Web Services mais de
complémentarité.
38
.Net Caractéristiques (1)
 Muti-langage
 C++, VB, J# , C#, APL, Fortran, Pascal, Perl,
Python, JScript, COBOL,Standard ML, Haskell,
RPG, Mercury, Scheme, Curriculum, Mondrian,
SmallTalk, Eiffel, Oberon, Forth, Oz
 Accent sur le nouveau né C#
 Se base sur une machine virtuelle (comme dans
Java), la CLR
 Sécurisé
 Support des Web Services
 Très bonne Integration avec les produits
Microsoft (Office, SQL Server, …,etc.)
39
.Net Caractéristiques (2)
 Environnement de développement
Puissant
 Visual Studio .Net pour tous les langages
 Une seule compilation pour tous les
Système d’exploitation Windows
 Optimisation du code natif à
l’exécution (équivalent au Just In Time
Compiler de Java) qui profite au mieux
des caractéristiques matérielles de la
machine hôte
40
Web Services
« Tout le monde en parle »…!
41
Web Services
 Cheval de Bataille, arme de pointe ou
Lance de guerre pour les deux parties.
 Activement promus par d’autres
éditeurs comme IBM, et élaborés (entre
autres) au sein d'un organisme comme
le W3C (World Wide Web Consortium).
42
Web Services, c’est …
 Des protocoles qui transportent et
véhiculent des messages entre des
services installés sur des Serveurs
Web et utilisent XML pour décrire leurs
structures de données qui peut être
complexe.
 Ce qui - a priori - doit faciliter la
manipulation des services ainsi
décrits.
43
Web Services, c’est aussi …
 Ce que l'on nomme les "Web
Services" c’est l’ensemble des
technologies de communication à
base d’XML:



44
SOAP (Simple Object Access Protocol)
WSDL (Web Services Description Language)
UDDI (Universal Description, Discovery, and
Integration)
Web Services, c’est aussi …
 SOAP (Simple




Communication / transport
Spécification pour échange d’informations dans un
environnement distribué
Basé sur XML
RPC
 WSDL (Web

Object Access Protocol)
Services Description Language)
Définition des types et opérations fournis par les
services offerts
 UDDI (Universal
Integration)


45
Description, Discovery, and
Pages Blanches/Jaunes
Annuaire mondial d’entreprises permettant
d’automatiser les communications entre prestataires.
XML-RPC ou SOAP ?
 Tous deux protocoles RPC Like avec XML
comme support de transfert de données
 XML-RPC est le concurrent direct de SOAP.
Il reste très humble quant à ses ambitions
 Très simple
 Types primitifs, structures et tableaux
 Mais
 Ne gère pas différents types d’encodages
 Ne permet pas de définir des types utilisateurs
complexes
 Ne permet pas le formatage / extension de
l’enveloppe (format XML d’échange)
 Spécification clôturée
46
Service ou Composant?
47
 Nous parlons ici de "service" et non de
"composant" à bon escient. Si Corba
et J2EE décrivent une architecture de
composants logiciels, les Web
Services définissent plutôt comment
interagir avec des services
fonctionnels.
 Et, pour poursuivre la comparaison, le
rôle d'IDL dans Corba peut être
comparé à celui de WSDL dans les
Web Services. Tous les deux décrivent
un objet dans une architecture (de
composants ou de services).
J2EE, points forts…
« être ou ne pas être le meilleur telle est la question »…!
48
L’avis de Sun
 Sun a publié un petit
argumentaire sur : "Pourquoi
choisir J2EE ?"
 Il est toujours intéressant de
connaître la position de Sun sur
le sujet
49
1.
2.
3.
4.
5.
Integration
Compatibilité
Le Model de programmation J2EE
Support Web Services
Open Standards
Intégration
 Multi-vendor J2EE Connector
Architecture
 Programmes basés sur une
technologies orientée composants
Java avec des systèmes hétérogènes,
relationnels et non relationnels.
 Simplifie l’interopérabilité des
composants pour la création de
systèmes complexes tels que
 Enterprise Resource Planning (ERP)
 Customer Relationship Management
(CRM)
50
Intégration
 Permet l’interaction entre des
technologies différentes
 Accès au données (relationnelles,
hiérarchiques, …)
 Mainframes et terminaux PC
 Mode synchrone / asynchrones (JMS)
 Messages fiables sur des réseaux non
fiables
 Interopérabilité avec d’autres composants
distribués implémentés avec d’autres
langages (CORBA)
51
Compatibilité
 J2EE Compatibility Test Suite (CTS)
 Un total de quelques 15,000 CTS
 Indépendance du serveur d’application
 Compatibilité entres les composants
développés sur un IDE CTS et
déployés sur un SA CTS
52
Modèle de programmation
 J2EE est une architecture end-to-end
basée sur des modèles de
programmations utilisant des concepts
avancés tels que les Servlets, les EJB,
JMS, …etc.
53
Support des Services Web
 Interopérable avec N'importe quelle autre
technologie avec les Web services
 Java Web Services Developer Pack (Java
WSDP) est une implémentation des
standards:
 Web Services Description Language (WSDL)
 Simple Object Access Protocol (SOAP)
 ebXML (electronic business Extensible Markup
Language)
 UDDI (Universal Description, Discovery, and
Integration)
 XML-based Remote Procedure Calls (JAX-RPC)
54
Basé sur des standards
 Création du Java Community Process
 Processus de Standardisation normalisé
55
 Création d’un Java Specification Request (JSR)
 Approbation par JCP Executive Committee, et
élaboration d’un premier draft de la spécification
 Révision du draft par the Executive Committee,le
JCP, puis le public (jcp.org)
 Révision après feedback du public par The
Expert Group pour valider l’implémentation de
référence et la complétude de la Technology
Compatibility Kit (TCK)
 Approbation finale du package de spécification
The Executive Committee.
 Intégration de la spécification dans Java 2
platform
Basé sur des standards
 Sun capitalise sur les standards
 Exemple : l'implémentation de départ des
EJB était basée sur RMI (protocole
propriétaire Java) mais les nouvelles
implémentation sont désormais basée sur
RMI/IIOP qui est une surcouche de RMI au
dessus de Corba garantissant
l'interopérabilité des composants EJB de
Java avec tout Composant Corba.
56
Portable
 Compatible avec
 +256 Systèmes d’exploitation
 +384 navigateurs
 Les systèmes embarqués (PDA,
téléphones portables, Stations de Jeu, ...)
 Les PC
 Les gros systèmes
57
Robuste
 Conceptuellement très robuste
 Fortifié par des Design Patterns
(Modèles conceptuels) qui ont fait
leurs preuves (MVC, …etc.)
 Ne permet pas les opérations illégales
sur la mémoire et les périphériques
58
Robuste
 La notion du Composant Web : Servlet
a révolutionné le développement par
composants dans des applications
Web réputées pour être très mal
développées en ce sens qu'elles
maquent d'appui conceptuel et de
d'architecture facilitant la
maintenabilité du code.
59
Robuste
 La notion du Composant EJB Entité et
Session ont révolutionné le
développement par composants dans
des applications a fort degrés de
complexité en permettant la délégation
de tous les services non métiers mais
nécessaires (sécurité, scalabilité, …
etc.) à un Serveur d’Application.
 Cette notion est unique et n’a pas
d’équivalent dans d’autres
technologies
60
Gratuit
sont gratuits :
 Le SDK
 Les sources
 La documentation
 La machine virtuelle (JRE) sur la
plupart des systèmes d’exploitation
61
Open Source
 Le choix incontesté de la communauté de
l'Open Source
 L'Open Source est entrain de faire des
preuves : eclosion des meilleurs outils





Systèmes d'exploitations (Linux)
Bases de données (MySQL)
Éditeurs (Eclipse)
Logiciels (ERP)
Composants
 La spécification de la machine virtuelle et de
toutes les API sont Libres
 L’implémentation de la bibliothèque
standard l’est aussi
62
Le premier Choix
 Communauté des développeurs en
extension phénoménale
 Le nombre de sites dédiées Java /
J2EE est impressionnants
 La communauté des scientifiques
nécessitant des calculs
mathématiques souvent de taille a fait
le choix de Java bien que l’aspect
performances soit au centre de ses
soucis.
63
Extensible
 Bien que de haut niveau, il reste
toujours la possibilité (non
recommandée) d'introduire du code
natif avec JNI
 Nécessaire pour les fonctionnalités
liées aux systèmes d’exploitations (i.e.:
La base de registre pour Windows)
64
Meilleure répartition des tâches / des
rôles
 Notion de serveurs d'applications
garantissant :



la scalabilité
la disponibilité
la sécurité
 Dissociation entre le niveau Accès aux
donnés, les fonctionnalités métier,
l’administration, le tuning
(optimisation), la présentation.
65
Le premier Choix des SS2I
 Il suffit simplement de consulter des
offres d'emploi pour des projets de
développement : à environ 60% voire
70% cela concerne des postes avec
spécialité Java (2003).
66
Partenaires de Choix





67
IBM
SAP
HP
Oracle
…etc.
Pluralité des IDE, des SA
 Le développeur ou l’entreprise a un
large éventail de choix pour les outils
de développement et de déploiement.
 Les gros Éditeurs offrent chacun leur
propres solutions (développement +
déploiement) mais rien n’empêche
d’utiliser un JBuilder de Borland pour
le développement et un Oracle
Application Server pour le
déploiement.
68
Meilleurs IDE sur le marché
 Java peut se vanter d’avoir les
meilleurs IDE du marché qui ne sont
pas fournis par Sun :
 IntelliJ (Jet Brain)
 Netbeans (Open Source)
 Eclipse (Open Source)
 JBuilder (Borland)
 JDevelopper (Oracle)
69
J2EE, faiblesses…
« Le talon d’Achille »…!
70
Faiblesses héritées du langage Java
 Java est interprété donc lent
 Java manque de productivité



Java est bavard
Absence du pré-processeur
Absence de surcharge d’opérateurs
 Absence du mécanisme de gestion des
versions pour les composants
71
Performances
 Java est interprété donc plus lent qu’un
code natif (C, C++)
 Les implémentations actuelles des serveurs
d'applications sont peu performantes
 La spécification EJB1.1 se soucie très peu
des performances.
 La spécification EJB2.0 se rattrape un peu
avec le caching (introduction des interface
‘Locales’).
72
Performances
 La spécification EJB3.0 présente de
meilleures performances.
 La spécification EJB3.1 introduit de
nouveaux concepts tant attendus permettant
d’augmenter les performances.
 Elimination des Interfaces
 Blue Print Singleton
 Amélioration des schedulers (EJB Timer)
73
Performances
 Plusieurs Benchmarks on montré que
J2EE est très lent comparé à une
implémentation sans Serveur
d’application (avec ou sans .Net)
 D’autre Benchmarks sur les Services
Web ont montré que les performances
sont pratiquement équivalentes.
74
Courbe d'apprentissage
logarithmique
 Courbe d'apprentissage lente
 Java : destiné au développeur
personnel / professionnel
 J2EE : destiné au développeur
professionnel et expérimenté
 Le développement des applications par
composants J2EE (EJB) est loin d'être
une mince affaire
 L’optimisation du code / configuration
de déploiement est encore plus difficile
75
Divergences
76
 La pluralité des éditeurs a fait que certains
d'entre-eux ont pris la liberté de
'personnaliser' les standards à leur tailles:
 IBM et Oracle ont Chacun leur propres
Machines virtuelle Java non compatible
100% avec la Machine virtuelle de
référence (de Sun)
 Certains Éditeurs de serveurs
d'application, Oracle (Oracle Application
Server) par exemple, utilisent un
protocole propriétaire (ORMI) pour la
communication avec les EJBs différent
du standard RMI/IIOP
.Net, points forts…
« Qui est le lièvre et qui est la tortue? »…!
77
L’avis de Microsoft
 Il est autant intéressant de
connaître la position de
Microsoft sur le sujet
 Les Atouts de .Net sont :
 Architecture Agile
 Rapidité de développement
 Services améliorés
78
Rapidité de développement
 Intégration des Web Services
 Réduire le temps de production (Time
to Market)
 Améliorer le TCO (Total Cost of
Ownership)
 Capitaliser sur l’investissement
courant
79
Rapidité de développement
Support de plusieurs langages
Destiné à tout type d’application
Interaction profonde entre les
différents langages supportés
 Des outils de développements intégrés
et très productifs (Microsoft Visual
Studio® .NET)



80
Rapidité de développement
 Écrire moins de code
 Bénéficier des services fournis par
Windows 2003




81
transaction monitor
message queuing engine
data access subsystem (SQL Server)
Web server (IIS)
Services améliorées
 Amélioration de la performance
 Simplification du déploiement des
applications
 Amélioration de la fiabilité
 Code, mémoire, transactions & processus
managés
 Amélioration de la sécurité à base de
rôles et de privilèges
82
Performances
 l'application de référence des J2EE
BluePrints a été réécrite en une
version C# sur .NET par une société
tierce.
 Les résultats des benchmarks
affichent des performances 28 fois
supérieures pour .NET et un nombre
d’utilisateurs multiplié par 6 pour le
même hardware
 c'est Oracle 9iAS qui a été utilisé pour
la version J2EE...
83
CLR
 Introduction de la notion de machine
virtuelle (CLR)
 Indépendance du langage de
programmation
 Possibilité d’écrire les bouts d’un
même programme avec plusieurs
langages à la fois en utilisant à chaque
fois le langage le mieux approprié.
84
Nombre de développeurs
 Communauté des développeurs hérité
de l'excellent outil Visual Studio
 VB6
 C++...
85
Nouvelles technologies
 ASP.NET introduit une technologie
appelée la smart navigation : sur un
navigateur récent, il n ’est pas
nécessaire de recharger l'intégralité de
la page mais juste la partie qui a subit
des modifications. De plus les pages
ASP.NET sont des dll compilées donc
le code de la page est optimisé...
 Web Services
86
Gestion du versionning
 Avec l’introduction de la notion des
assemblies, Microsoft améliore au
mieux la notion de déploiement de
version des archives déployées.
87
Ease Of Use Coding
 Sur le thème développer plus
facilement
 Préprocesseurs
#define SOME_VAR = 15
 Des structures de contrôles spéciales
(foreach)
foreach (XmlNode node in xmlElement.ChildNodes){…}
 Les types énumérés :
enum Color : byte { RED = 1, BLUE = 2, GREEN = 3 };
88
Ease Of Use Coding
 Les attributs (décorations)
[AuthorIs("Michael")]
class MyClass { ... }
...
[AttributeUsage(AttributeTargets.All)]
public class AuthorIsAttribute : Attribute {
private string m_Name;
public AuthorIsAttribute(string name) { m_Name =
name;}
}
89
Ease Of Use Coding
 Les propriétés
class MyClass { ...
public double x {
set { if (x < 0)
throw new ArgumentException (“< 0”);
m_x = value;
}
get { return m_x; }
} ...
// User:
MyClass m = new MyClass();
m.x = 22;
90
.Net, faiblesses…
« Le retour de la médaille »…!
91
Non portable
 Uniquement Windows, navigateur IE6
nécessaire
 Et encore : .NET n'est pas portable sur
DOS, WIN3.1, WIN95
 Taille du Runtime (23Mo
compressé,120Mo installé)
92
Microsoft sur la touche…
 Pour la première fois, Microsoft semble dépassée
par les évènements
 D’une part

PC vs Mainframes

DOS puis Windows vs Unix

Internet Explorer vs Netscape

Microsoft Office vs Outils bureautiques absents sous Unix
(vi/Latex)

Excel a été élu le logiciel du siècle
 D’autre part
93

Le SOAP (Web Services) a été inventé par Microsoft pourtant
c'est Sun qui en a mieux montré l'intérêt avec J2EE

C# est un clone de Java

J# persiste bien que très proche de c#
Productivité ou paresse?
 L'intérêt porté sur le thème ‘ ease of
use ’ ou facilité de développement
dégrade parfois le coté conceptuel du
framework.
94
Les IDE Microsoft dépassés ??
 Les outils de développements de .Net
ne sont pas à la mesure des outils
matures développés pour Java (par
exemple Intellij, JBuilder)
95
Compatibilité
 Compatibilité ascendante absente
 Microsoft bloque les supports sur les
produits Visual Studio 6 et pousse les
développeurs a passer à .Net
 .Net non compatible avec tous les
systèmes Windows.
96
Le verdict…??
« l’heure a sonné..., mais toujours personne à la porte »…!
97
Ni oui Ni non, mais peut être…
 Évidemment rien n’est parfait, mais il
ne faut pas oublier le rôle de la presse
et des campagnes commerciales de
part et d’autres qui omettent ou
surestiment sciemment des
caractéristiques ou des faits qui
peuvent faire changer d’avis.
 On essayera dans la suite de modérer
les préjugés et les emblèmes attribués
aux deux frameworks.
98
Les Langages sont très proches
 Java et C# sont très proches tant au
niveau de la structure du langage
qu ’au niveau de l ’architecture elle
même (Machine virtuelle vs CLR)
 Deux langages purement Objet
 Très similaires à C++
 Prévoient un Ramasse Miette (Garbage
Collector)
 API similaires
99
L ’exemple Hello World
// c# (fichier MyClass.cs)
using System;
namespace MyNameSpace {
public class MyClass {
public static void Main(String [] args) {
Console.WriteLine("Hello, C#!");
}
}
}
// java (fichier MyClass.java)
package MyPackage;
public class MyClass {
public static void main(String [] args) {
System.out.println("Hello, Java!");
}
}
100
Object : La base de tout
//Java
public class Object {
public Object();
public boolean equals(Object obj);
public final Class getClass();
public int hashCode();
public final void notify();
public final void notifyAll();
public String toString();
public final void wait() throws InterruptedException;
public final void wait(long timeout) throws
InterruptedException;
public final void wait(long timeout, int nanos) throws
InterruptedException;
protected Object clone() throws CloneNotSupportedException;
protected void finalize() throws Throwable;
}
101
Object : La base de tout
//c#
public class Object {
public virtual int GetHashCode();
public virtual bool Equals();
public virtual String ToString();
public static bool Equals(object a, object b);
public static bool ReferenceEquals(object a, object b);
public Type GetType();
protected object MemberWiseClone();
protected virtual void Finalize()´;
}
102
.Net, Architecture
103
Java, Architecture
104
Java est Portable mais pas DotNet?
 Mono (http://www.go-mono.org)





Une implémentation de .Net sous Linux
Open Source
Le projet est baptisé Mono
Incorpore une implémentation de ASP.Net
Mais…
 Quel intérêt de passer à un serveur Linux pour
un administrateur / développeur Windows à
moins que les Windows restent peu fiables ?
 Protable-NotNet (http://www.dotguru.org)
 OS X / BeOS
 Rotor (Microsoft source de l’implémentation d référence du
framework) : Win
105
XP & Unix FreeBSD
Java est plus lent?
 Ce n'est pas forcément étonnant si le CLR
est plus proche de l'API Windows que
celui de java. Il ne reste plus qu'à attendre
un Mono stable pour pouvoir juger.
 J2SDK 1.4 est beaucoup plus rapide que
le 1.3 et Sun promet que le 1.5 a promis
encore plus de rapidité et elle a bien tenu
sa promesse, le 1.6 est phénoménal.
 La spécification des EJB 3.0/3.1 présente
de nettes améliorations coté performance
avec des requêtes EJB-QL plus proches
de SQL est donc plus performantes
106
Java est plus lent?
Un jeu de Rôle 3D en Java (Jake2) , est
certainement une bonne démonstration de la
rapidité très acceptable de Java
107
.Net n'est pas gratuit ?
 Le framework .NET est gratuit que ce
soit le SDK ou le Runtime
 Il existe aussi des IDE gratuits :
 Microsoft Webmatrix pour ASP.NET
 CsharpBuilder pour C# et VB.net
 La seule chose payante dans .NET
c'est la licence Windows pour le
serveur => Avec Mono (Novell) sous
Linux c’est 100% Libre.
108
Outils Microsoft plus productifs?
 Java peut se vanter d'avoir les 3
meilleurs IDE jamais développés :



IntelliJ Idea (Jet Brain)
Netbeans (Open Source)
Eclipse (Open Source)
 Plus productifs que Visual Studio .Net
 Jet Brain vient de commercialiser un
plugin à installer sur Visual Studio .Net
pour y rajouter quelques unes des
superbes fonctionnalités de IntelliJ.
109
Productivité coté langage, Microsoft a de
l’avance (1) ?
 Absence de Pré-processeur
 Java n'inclut pas un pré-processeur
certes
 plusieurs implémentations de préprocesseurs ont été réalisées pour java,
mais les développeurs ont bien compris
qu'ils n'en avaient nullement besoin
dans la presque totalité des cas.
 Le compilateur Java Optimise de façon
très intelligente
110
Productivité coté langage, Microsoft a de
l’avance (2) ?
 Java : types énumérés, de boucles
foreach, …etc
 J2SDK 1.5/ J2EE 1.5 se focalise sur le
thème ‘ease of use’ en remaniant le
langage pour introduire des structures et
des facilités déjà implémentées dans .Net.
Par ailleurs, d’autres fonctionnalités
proposées par le J2SDK 1.5 ne sont pas
incluses dans .Net 1.1 mais Microsoft a
les a intégré à la version 2.0 (généricité),
puis dans la version 3 (inner class)
 Les Annotations ont simplifié JEE
111
Productivité coté langage, Microsoft a de
l’avance (2) ?
 EJB 3.1
@Stateless @WebService
public class ClientBean {
@PersistenceContext
private EntityManager em;
@WebMethod
public void ajouterClient(Client c) {
em.persist(c);
}
}
112
Productivité coté langage, Microsoft a de
l’avance (3) ?
 Java : Bavard
 Si Java est réputé pour être un langage
bavard et peu productif, pourquoi la lance
de guerre de Microsoft serait-elle C# ?
113
J2EE supporte un seul langage, .Net, lui,
plusieurs
 L'impression que donne la technologie
.NET c'est plutôt de vouloir se
débarrasser d'un paquet de langages
de programmation supportés par
Microsoft avec sa suite Visual Studio
afin de n'en conserver qu'un seul C#
(ou Java’).
 Plusieurs langages ont déjà été portés
sur Java (compilés vers la machine
virtuelle Java)
114
.Net n’est pas aussi robuste ni sécurisé
que J2EE
 .Net se base sur un mécanisme très
similaire pour ne pas dire cloné de
celui de Java/J2EE (sandbox).
 En matière de Serveurs, Windows
2003, jouant le rôle d’un serveur
d’application, est semble-t-il très
sécurité est bien plus fiable que
Windows 2000 déjà apprécié sans
parler de ses performances.
115
Microsoft et Sun sont en guerre?
 J2EE ET .NET ne sont pas des
religions
 Comme dans toute guerre, il n’y a que
les soldats et le peuple qui en
subissent les conséquences, les
politiciens eux, ils négocient autour
d’une table, un café à la main.
 Standard communs, SUN & Microsoft.
 Windows 2003 très performant avec
JSP
116
Le verdict…
« C’est de la logique floue, enfin… »…!
117
Un avis, …
 J2EE est pour
 Les gros projets avec un niveau de complexité
important
 Les systèmes hétérogènes
 Lorsque la fiabilité et la robustesse sont
critiques
 .Net est pour
118
 Les projets de taille petite ou moyenne
 Lorsque la productivité est plus importante que
la cohérence et la bonne lisibilité du code
 Pour les projets dédiés uniquement à Windows
(coté client et serveur) ou presque
 Lorsque la performance est un facteur important
Conclusion
 Concurrence Agressive entre Sun &
Microsoft
 Sun a Compris que mieux vaut vendre
les services que les produits
 Microsoft est déjà aux anges avec les
seules ventes d’Office et de Windows
 Au profit du développeur et de
l’entreprise :
 Plus simple
 Plus puissant
119
Noble but… à méditer
"J'ai toujours rêvé d'un
ordinateur qui soit aussi facile
à utiliser qu'un téléphone. Mon
rêve s'est réalisé : je ne sais
plus comment utiliser mon
téléphone."- Bjarne Stroustrup
Feedback: [email protected]
http://vpc.tribe.de
Taha BEN SALAH, J2EE Expert
120
Feedback: [email protected]
http://vpc.tribe.de
Taha BEN SALAH, J2EE Expert
121
Références















122
http://msdn.microsoft.com/practices
http://msdn.microsoft.com/architecture
http://shop.microsoft.com/practices
http://java.sun.com
http://www.microsoft.com
http://dotnet.developpez.net
http://www.dotnet247.com
http://www.dotnetguru.org
http://www.dotnet-fr.org
http://application-servers.com
http://www.theserverside.com
http://www.freeroller.net
http://staff.develop.com
http://www.bytonic.de
http://ils.unc.edu/blaze/java/javahist.html
Merci !
Questions?
123