Vous êtes sur la page 1sur 94

Comparaison des architectures J2EE et .

NET

Jean-Philippe FORESTIER
jpf@osyx.fr
Copyright OSYX 2003

Prsentation


Ce document aprs un rappel de diffrents types


darchitectures logicielles, prsente une comparaison
objective des architectures J2EE et .NET.

Contenu
 Architectures applicatives
 .NET versus J2EE
 Conclusion

Page 2

Architectures applicatives

Architectures client/serveur


Dans une application client/serveur classique,


l'
application est compose de deux couches:
 un serveur (par exemple un serveur de bases de donnes)
 un client, qui interprtera ces donnes.

Une bonne partie du travail se fait dans le programme


client, qui manipule les donnes en provenance du
serveur.

Architectures client/serveur

Architectures client/serveur


Avantages:
 Le travail est rparti entre clients et serveurs.
 Interface cliente riche
Inconvnients:
 Difficults de maintenance: toute modification entrane une
mise niv eau de ch aq
 P rotocole d ch ang e p
 M auv aise adap tation
clients ( sauf utiliser

ue p oste client
rop ritaire
la multip licit des ty p es de p ostes
des clients J av a)

Architectures internet


Larchitecture internet repose sur une architecture


client lger/serveur.

Un serveur Internet classique reoit des requtes


HTTP et renvoie des documents (HTML, images,
animations, sons, ... ).

Le serveur peut ventuellement excuter des scripts


qui pourront, par exemple, permettre de construire
dynamiquement le document renvoy.

Le client est un navigateur Internet.

Architectures internet


Les tches principales du navigateur sont:


 d'afficher les fichiers reus (pages HTML, animations flash,
images, sons ),

 de demander ventuellement au serveur les fichiers


ncessaires pour afficher la page actuelle,

 d'envoyer des requtes HTTP quand l'utilisateur entre une


URL, remplit un formulaire ou clique sur un lien.

Le navigateur ne comprend pas les donnes qu'


il
reoit et se contente de les afficher.

Le navigateur peut ventuellement excuter des


scripts contenus dans les pages visualises.

Architectures internet

Affichage des
donnes
formates

Architectures internet


Avantages:
 Pas dinstallation sur les postes clients (hormis le navigateur
lui-mme)

 Mise--jour et maintenance facilites.


 Protocole dchange standardis (HTTP, HTTPS)


Inconvnients:
 Trafic rseau important
 Mauvais support de HTML par les navigateurs
 Fonctionnalits clientes rduites

Architectures multi-tiers


Ce genre d'
architecture se compose de diffrents
niveaux que l'
on peut subdiviser de la faon suivante:
 Interface utilisateur : Couche charge de grer les

interactions entre l'


utilisateur et l'
application (Application de
bureau, navigateur WAP, navigateur Internet... )

 Logique de prsentation : Elle permet de dfinir ce que doit


afficher l'
interface utilisateur et la manire dont les requtes
doivent tre traites.

 Logique mtier : Modlise les rgles mtiers de l'entreprise.


 Service d'infrastructure : Fonctionnalits fournies aux
composants ( connexions, transactions... ).

 Donnes : Donnes de l'entreprise.

Architectures multi-tiers

Architectures multi-tiers


Avantages:
 Le dcouplage des tches facilite maintenance et
dveloppement.

 Possibilit de clients lourds et de clients lgers




Inconvnients:
 Ncessite lutilisation de middlewares (cot dachat et
dadministration plus lev)

 Ncessite lutilisation de nouvelles techniques de


dveloppement (architecture oriente objet, design pattern
spcifique)

J2EE


Conscient de lintrt des architectures multi-tiers pour


le dveloppement dapplications dentreprises, la
socit SUN MicroSystems a propos, ds 1999, une
dclinaison de son SDK Java (Software Development
Kit) baptis J2EE (Java 2 Enterprise Edition).

J2EE est un ensemble de spcifications (et non pas


un produit) qui, en respectant une architecture multitiers, va dcrire la fois:
 l'infrastructure de gestion des applications
 les API des services utilises pour concevoir ces applications.

J2EE


Dans le jargon Java, les APIs (Application


Programming Interfaces) sont des librairies de
composants rutilisables.

Les APIs sont des spcifications, implmentes ensuite


(par SUN, IBM, HP, Oracle, ) sur les diffrentes
plates-formes proposant un environnement dexcution
Java.

J2EE


Les spcifications J2EE sont implmentes par un


logiciel baptis gnralement serveur d applications
J2EE (ou serveur J2EE)

Un serveur d applications J2EE est donc un


environnement fournissant:
 Une infrastructure d'excution pour faire tourner les
applications.

 Un ensemble de services accessibles, via l'API J2EE, pour


aider concevoir les applications.

J2EE
Larchitecture multi-tiers J2EE:

J2EE
server

J2EE


Il existe aujourdhui des dizaines de serveurs J2EE


proposs par autant dditeurs, pouvant tourner sur
tous types de plates-formes et dOS.

Une liste complte des serveurs J2EE est disponible


ladresse suivante:
http://www.flashline.com/components/appservermatrix.jsp

Les deux leaders du march sont:


 BEA: produit Weblogic (~30 %)
 IBM: produit Websphere (~30 %)

Viennent ensuite:
 9i AS (Oracle), SUN One (SUN), BES (Borland), JBoss
(Freeware), ...

J2EE


Depuis 1999, les spcifications de J2EE ont plusieurs


fois volu pour aboutir (dbut 2003) la version J2EE
1.4.

Toutefois, aucun serveur J2EE nest conforme


aujourdhui cette version de J2EE, et tous ne vrifient
pas encore compltement les spcifications 1.3.

J2EE


EJB
JNDI

1997

Servlets

Les volutions de larchitecture J2EE:


XML Support
JMS

J2EE

JSP
Servlets 2.1

WS Pack

J2EE 1.2

EJB 1.0
1998

JAX Pack

J2EE 1.3

EJB 1.1
1999

2000

JSP 1.0

JMS 1.0

J2EE 1.4

EJB 2.0
2001

JSP 1.1

Servlets 2.2

Web Services

2002

JSP 1.2

Servlets 2.3
JCA 1.0

EJB 2.1
2003

JSP 2.0

Servlets 2.4

JMS 1.1

JCA 1.5

.NET


.NET (prononc dotnet) est un produit Microsoft (J2EE


est un ensemble de spcifications) qui, en respectant
une architecture multi-tiers, va dcrire la fois:
 l'infrastructure de gestion des applications
 les API des services utilises pour concevoir ces applications.

La plate-forme .NET est donc un environnement


fournissant:
 Une infrastructure d'excution pour faire tourner les
applications.

 Un ensemble de services accessibles, via le framework .NET,


pour aider concevoir les applications.

.NET


.NET est, en fait, une famille de produits qui


sappuie sur :
 un framework de classes (plusieurs milliers) ;
 un runtime commun aux langages (CLR) ;
 un modle darchitecture;
 diffrents serveurs (IIS, COM+, MSMQ, ADSI,..);
 un outil de dveloppement (Visual Studio);
 des protocoles standards (HTTP, TCP, SOAP).
.NET est, en grande partie, une r-criture de
l'
architecture Windows DNA

.NET
Larchitecture multi-tiers .NET:
Client Tier

.NET

Back-End
systems

.NET


.NET marque la volont de Microsoft de migrer


tous les produits, les services et les donnes vers
Internet
Les services Web sont au cur de la technologie
.NET
.NET est sens apporter interoprabilit et
ouverture tous supports et priphriques
(tournant sous Windows ...)
Lapproche .NET est une approche mono-plateforme et mono-diteur
Toutefois, la socit Ximian travaille (projet Mono)
sur une version de .NET pour Linux.

.NET


Lanc dbut 2002, lenvironnement .NET sapprte


connatre une premire volution avec:
 la version 1.1 du framework,
 la sortie de Visual Studio .Net 2003,
 lintgration du framework dans Windows server 2003.

Serveur dapplications


Dans une architecture multi-tiers J2EE, la logique de


prsentation, la logique mtiers et les services
dinfrastructures sont grs par un serveur dapplication
J2EE.

Celui-ci intgre un (ou plusieurs) conteneurs


servlet/jsp pour la logique de prsentation, et un (ou
plusieurs) conteneurs EJB pour la logique mtier.

Avec .NET, larchitecture multi-tiers est assez similaire,


mais le serveur dapplications est, en fait, plus
difficilement identifiable, car intgr dans lOS
(Windows Server 2000 ou 2003). Il utilise nanmoins
les middlewares: MSMQ, IIS, COM+, ADSI, ...

J2EE

.NET versus J2EE

Les langages de programmation




.NET

Le langage de prdilection de lenvironnement


.NET est le langage C# (prononc C Sharp),
langage invent par lun des concepteurs de Delphi
et J++.
Dautres langages peuvent tre utiliss (il en existe
plus de 20): VB.NET, PERL.NET, C++, J#,
Cobol.NET, Delphi,
Ces langages doivent proposer des
concepts orients objets et un typage fort (ou une
mulation de ces mcanismes). Ils peuvent donc
avoir connu des modifications importantes par
rapport leurs versions originales (lorsquelles
existent).
Ainsi VB 6 est trs loign de VB.NET !

Les langages de programmation




J2EE

Le langage Java est, bien sr, le langage des


dveloppement J2EE.
N en 1995, le langage Java est aujourdhui trs
largement utilis et apprci des dveloppeurs.
C# sest largement inspir de Java !

Les langages de programmation




Verdict ?

Points communs:
 C# et Java sont deux langages modernes et puissants.
 Ils sont tous deux orients objets.
Diffrences:
 Java est plus ancien, il y a donc plus de programmeurs

Java et plus dexpertise dans le domaine.


 C# est plus rcent, il corrige quelques lacunes de Java.
 VB.NET est un bon langage, mais trs loign dans ses
concepts de VB 6: pour un programmeur VB 6 sans
exprience objets, le passage VB.NET nest pas simple
et ncessite plusieurs mois de pratique ! (mme
remarque pour Cobol ou Fortran .NET).

Le "Runtime"


J2EE

Les programmes Java sont compils en un code


intermdiaire baptis bytecode Java (ou fichiers
.class).
Ce code intermdiaire est indpendant dun
quelconque processeur. Ce code est celui dune
machine virtuelle Java (JVM).
Cette machine virtuelle Java est mule par un
logiciel (la JVM).
Il existe des JVM pour un grand nombre de platesformes. De plus, de nombreux browsers ont une
JVM.

J2EE

Le "Runtime"
Principe de fonctionnement de la JVM

Java

Compilateur

B y t e C o d e
Garbage
C o l l ec t i o n ,
S ec u ri t y M an ager
M u l t i t h read i n g,
...

Classloader/
V eri f i er

JI T

I n t e r p r e t e u r
H o t s p o t

Code
n at i f

Le "Runtime"


.NET

Lenvironnement dexcution des programmes


.NET est baptis CLR (Common Language
Runtime).
Le CLR permet dexcuter du code intermdiaire
MSIL (Microsoft Intermediate Language).
De nombreux langages (plus de 20) sont compils
en MSIL et excutables par le CLR.

.NET

Le "Runtime"
Principe de fonctionnement du CLR:

C #
V B .N E T
C + +
A u t r e s

Compilateur

M S I L +
M e t ad at a
Garbage
C o l l ec t i o n ,
S ec u ri t ,
M u l t i t h read i n g,
...

L o ad e r /
V e r ifie r

JI T

E x c u t io n

C o d e
" M an ag "

Le "Runtime"

Verdict ?

Points communs:
 Les principes de la JVM et du CLR sont similaires.
 Les performances semblent assez comparables.

Diffrences:
 La JVM est disponible sur de nombreuses plates-formes.
 On peut changer le "security manager" ou la "class
loader" de la JVM (pas du CLR).
 Avec le CLR, on peut crire un programme en utilisant
plusieurs langages (est-ce un avantage ?).

Outils de dveloppement


Microsoft Visual Studio .NET


 Un IDE commun plusieurs langages : VB.NET, C#, C






.NET

manag, ...
Dveloppement de diffrents types dapplication
Outils dassemblage
Outils de mise au point
Outils de modlisation UML
Prix: 1000 2000 selon version

Outils gratuits :
 ASP.NET Web Matrix (dveloppement ASP)
 SharpDevelop (dveloppement pour C# et VB.NET

++

Outils de dveloppement


J2EE

Dans le monde J2EE, de nombreux outils de


dveloppement (IDE) existent depuis plusieurs
annes:
 JBuilder (Borland)
 Websphere Studio (IBM)
 JDeveloper 9i (Oracle)
 Forte (SUN)
 ...
Fonctionnalits comparables celles de Visual
Studio .NET.
IDE J2EE disponibles sur de nombreuses platesformes (Windows, Linux, Unix, ).
Prix: de 500 5000 , selon les versions retenues.

Outils de dveloppement

J2EE

Il existe plusieurs IDE J2EE gratuits.

Borland propose une version (limite) gratuite de


JBuilder.

Dans le domaine du logiciel libre, IBM a initi un


projet ambitieux dIDE multi-langages baptis
Eclipse.

Le projet NetBeans, initi par SUN, est concurrent


du projet Eclipse.

Outils de dveloppement


Verdict ?

Points communs:
 Bons IDE dans les deux mondes.
 Ncessit dune prise en main des IDE qui peut tre

assez longue.
 IDE gourmands en ressources (recommand +512 MO
RAM !!).

Diffrences:
 IDE J2EE commerciaux plus chers.
 Nombreux (bons) IDE gratuits avec J2EE.
 Disponibilits des IDE J2EE sur de nombreuses platesformes.

Le framework


J2EE

Le framework J2EE est riche de plusieurs milliers


de classes Java.
Ces classes permettent le dveloppement de tous
types d applications:
 rseau,
 graphiques,
 accdant un SGBD,
 utilisant le Web,
 utilisant XML,
 ...
Tout framework J2EE se doit de fournir le
framework J2SE (Java 2 Standard Edition).

Le framework


Le framework J2SE 1.4:

J2EE

J2EE

Le framework


Le framework J2EE 1.4:

JavaMail
JTS/JTA
JaxRPC

JAF

JAAS
JMS

SAAJ

JCA
JMX

JaxR

J2SE

JaxP

Framework
J2EE

Le framework





J2EE

J2SE, J2EE et J2ME sont contrls par SUN


Microsystems qui en est le propritaire.
Le langage Java nest pas standardis.
Les diffrents dclinaisons de Java voluent sous
le contrle du JCP (Java Community Process).
Le JCP est une organisation charge de
dvelopper la technologie Java en proposant de
nouvelles spcifications (les JSR).
SUN, IBM, Oracle, BEA, Motorola, font partie du
JCP.
Il est possible d implmenter les spcifications du
JCP sous la forme de logiciels libres.

Le framework


.NET

Le framework .NET est riche de plusieurs milliers


de classes.
Ces classes permettent le dveloppement de tous
types d applications:
 rseau,
 graphiques,
 accdant un SGBD,
 utilisant le Web,
 utilisant XML,
 ...

Le framework


Principaux lments du framework .NET:

.NET

Le framework


.NET

Microsoft a soumis lECMA la standardisation de


plusieurs parties du framework .NET:

Soumis l ECMA

Le framework


Verdict ?

Points communs:
 Les fonctionnalits apportes par les deux frameworks
sont comparables.
 Les deux frameworks voluent.

Diffrences:
 Les classes Java sont portables, do le slogan: WORA
Write Once Run Anywhere
 Le framework .NET peut tre utilis par de nombreux
langages.
 Le framework .NET est en cours de standardisation.

Lintgration avec lexistant




Points communs:
 Interoprabilit possible avec lexistant (via COM+ ou
JCA/CORBA/JNI)

Diffrences:
 J2EE offre une interoprabilit quasi directe avec le

monde CORBA
 .NET offre une interoprabilit directe entre les
programmes crits avec les diffrents langages .NET

Les composants applicatifs




.NET et J2EE permettent le dveloppement de


composants bnficiant de diffrents services
apports par le Framework:
La gestion des transactions
La scurit
Les composants distribus
Le cache d'objets (Pooling)
La monte en charge et le multi-threading
La communication par messages, ...

La responsabilit du framework est de fournir tous


ces services en proposant un canevas dans lequel
on peut implmenter les composants.

Les composants applicatifs




J2EE

Les composants J2EE sont les EJB (Enterprise


JavaBeans). Ils sont grs par un (ou plusieurs)
conteneur EJB intgr dans le serveur J2EE.
Il existe 4 types de composants EJB:
 EJB session stateless
 EJB session stateful
 EJB entit
 EJB message
Les composants EJB sont portables dun
conteneur EJB un autre.

Les composants applicatifs

.NET

.NET propose le mme ensemble de services que


J2EE.

Le conteneur utilis dans le framework est COM+


(COM+ qui nest pas gr par le framework .NET !).

Lquivalent des EJB session stateless sont les


ServicedComponent.

Les composants applicatifs




.NET

Voici un tableau prsentant les quivalences entre


les services des deux mondes:

Intgr dans J2EE 1.4

Les composants applicatifs




Verdict ?

Points communs:
 Les deux frameworks apportent de nombreux services

aux dveloppeurs.
 Linterfacage avec dautres composants est possible dans
les deux mondes (JCA -IIOP/Java IDL ou COM+)

Diffrences:
 Les composants EJB sont plus complets (mais aussi plus
compliqus) que les ServicedComponent .NET.
 Le mcanisme de message .NET est li MSMQ.
 Pas dquivalent aux EJB entit dans .NET.

Laccs aux donnes




J2EE

Java propose, depuis 1996, JDBC (Java Dabase


Connectivity) comme API permettant linterface
avec les SGBDs.
JDBC permet de travailler sur les rsultats d une
requte en mode connect ou dconnect.
De nombreux JDBC drivers (implmentations de
JDBC) existent pour quasiment tous les SGBDs
relationnels.

Laccs aux donnes




.NET

ADO.NET est la technologie utilise pour laccs


aux donnes.
Fonctionnement en mode dconnect privilgi (le
mode connect reste possible).
ADO.NET propose le DataSet, un modle XML
dconnect des donnes. Un objet DataSet peut
effectuer des requtes sur la base et traduire les
rsultats en XML. Les manipulations ultrieures sur
le DataSet seffectuent sans connexion la base.
Interface possible avec SQL Server, et autres (via
ODBC).

Laccs aux donnes




Verdict ?

Points communs:
 Dcouplage entre les donnes utilises par le programme
et la base.
 Gestion des transactions.
 Pool de connexion.
 Diffrentes possibilits d accs aux donnes: depuis un
client "lourd", depuis un client Web, par les services Web,
par des composants mtiers (surtout avec J2EE).

Diffrences:
 ADO.NET utilise XML pour reprsenter les donnes.
 ADO.NET est plutt conu pour travailler en mode
dconnect.
 Manque de "providers" ADO.NET.

XML


J2EE

Depuis la version J2EE 1.1, les fichiers de


configuration et de dploiement sont des fichiers
XML.
Les serveurs J2EE intgrent donc un parseur SAX
et un parseur DOM.
Dans la version J2EE 1.4, un grand nombre de
nouvelles API lies XML deviennent obligatoires:
 SAAJ (SOAP with attachment API for Java): messages

SOAP asynchrones
 JAXR (Java API for XML Registries): interface avec UDDI
 JAX-RPC (Java API for XML based RPC): messages
SOAP synchrones
 JAXP (Java API for XML Parsing): support SAX et DOM

XML



.NET

.NET est, la base, trs orient XML.


Bon support des services Web (utilisant XML
diffrents niveaux).
Utilisation par ADO.NET de XML pour reprsenter
les donnes.
Fichiers de configurations XML.

XML


Verdict ?

Points communs:
 Avec la version J2EE 1.4, et le support des services Web,
J2EE rattrape .NET dans le support de XML.

Diffrences:
 ADO.NET utilise XML pour reprsenter les donnes.
 Pour le moment, le support des services Web est meilleur

dans .NET.
 De trs nombreux outils et parseurs XML sont crits en
Java. De nombreuses librairies de classes existent.
 .NET propose des classes pour manipuler des documents
XML. Les spcifications J2EE proposent moins de
classes de ce type, mme si celles-ci existent en Java.

La scurit

J2EE

Plusieurs approches:
 Scurit au niveau du code
 Scurit par preuve
 Signature numrique
 Authentification
 Autorisation
 Cryptage

La JVM dispose d un vrificateur de bytecode: il


vrifie que les instructions contenues dans le
bytecode sont "correctes" ("valides").

La scurit

.NET

Plusieurs approches:
 Scurit au niveau du code
 Scurit par preuve
 Enregistrement isol
 Signature numrique
 Authentification
 Autorisation
 Cryptage

Le CLR dispose d un vrificateur de code IL: il


vrifie que les instructions contenues dans le code
intermdiaire sont "correctes" ("valides").

La scurit


Verdict ?

Points communs:
 .NET et J2EE offrent un bon niveau, intrinsque, de

scurit.
 Les permissions et preuves sont gres de manire fine.

Diffrences:
 Possibilit de signer directement une classe .NET
 Possibilit de changer le "security manager" de la JVM
 Pas de concept denregistrement isol en Java
 .NET offre un niveau de contrle plus fin que J2EE.
 Les applications .NET peuvent utiliser du code
"unmanaged" qui ne rentre pas dans le schma de
scurit dcrit ici !

Le dveloppement pour le web




J2EE

Larchitecture J2EE, propose une division entre la


prsentation (pages JSP) et la partie traitement
(Servlet).
Les JSP (Java Server Pages) permettent de
dcrire des pages HTML (ou XML) dynamiques au
moyen de balises spcifiques, de code HTML
(XML) et de code Java.
Les servlets sont des programmes Java
(quivalents aux scripts CGI) grs par un
container de servlet.

Le dveloppement pour le web








.NET

ASP.NET est une volution majeure des ASP


Sparation de l interface graphique et du code :
 La description de lIHM dun ct grce aux WebForms
 Le traitement de lIHM et la programmation de lautre
ASP.NET gre les sessions et lauthentification
des clients.
Excution ct serveur
Amlioration des performances par rapport ASP:
 Code compil
 Mcanismes de caches plus labors

Le dveloppement pour le web




Verdict ?

Point communs:
 Les deux environnements proposent un dcouplage
Interface/Traitement.
 Les pages sont pr-compiles ct serveur.

Diffrences:
 Les WebForms apportent un avantage indniable .NET
pour ce qui est de la partie interface graphique. La future
API JSF (Java Server Face) espre concurrencer les
WebForms.
 Les librairies de balises JSP (JSP Tag Libraries) sont
difficiles crire, mais trs intressantes.
 Les JSPs et Servlets sont disponibles sur de nombreux
serveurs Web (y compris IIS).

La mobilit


J2EE

SUN propose, depuis 1999, une version du SDK


Java baptise J2ME (Java 2 Micro Edition).
Version, elle-mme dcline en plusieurs
configurations selon le matriel utilis.
La J2ME comporte un sous-ensemble de l API
Java et une JVM spcifique: la KVM.
Lenvironnement J2ME est aujourdhui disponible
sur de nombreux tlphones mobiles et PDA.
Les dernires moutures de J2ME intgrent le
support de WiFI, Bluetooth et des services Web

La mobilit


.NET

Mise disposition du Compact framework


permettant le dveloppement pour des solutions
mobiles
 Framework 1.0 + Smart device extensions
 Framework 1.1
La philosophie de dveloppement ne change pas,
seule ladaptation au support, notamment pour la
partie graphique, est ncessaire
Une architecture base sur des composants
distants ou des services web permet un passage
en douceur des applications, sur les supports
mobiles.

La mobilit


Verdict ?

Points communs:
 Dans les deux mondes, il est possible de faire des
applications pour terminaux mobiles.

Diffrences:
 Les WebForms apportent .NET un avantage pour la
partie consultation de sites Web.
 La plate-forme J2ME est, aujourdhui, plus largement
rpandue et adopte.

Programmation distribue


J2EE

J2EE utilise massivement deux technologies Java:


 JNDI (Java Naming and Directory Interface) qui propose

une interface avec les services d'


annuaires et de noms,
 RMI/IIOP (Remote Method Invocation over Internet Inter
ORB Protocol) qui propose des services d'
appels de
mthodes distance.

Ces 2 technologies sont utilises lors de l'


appel d'
un
composant par un autre (JNDI pour la localisation,
RMI pour linteraction).
Lutilisation de RMI/IIOP assure une interoprabilit
avec le monde CORBA, permettant ainsi aux
composants distribus EJB dtre accessibles par des
clients CORBA.

Programmation distribue


J2EE

J2EE 1.4 permet, grce aux services Web, laccs


distant des composants publics par le biais de
requtes SOAP.
Plusieurs avantages :
 Tout systme supportant les fichiers textes et capable de

se connecter un rseau, peut accder un service web.


 Un service web fournit sa propre description et les
moyens de communiquer avec lui

Dvelopper ou utiliser un service Web travers un


bon IDE est dune grande simplicit
Les services Web respectent les standards du
W3C

Programmation distribue


.NET

.NET remoting permet laccs des composants


distants, de manire synchrone ou asynchrone.
.NET remoting utilise des protocoles standards
(contrairement DCOM) :
 HTTP, TCP, SOAP
 Srialisation XML
Le contexte (scurit, transaction, compteur de
rfrences) est automatiquement propag.
Ct serveur, 3 gestions possibles des composants:
 Singleton (1 objet pour tous les clients)
 SingleCall (1 objet pour chaque appel client)
 Session (1 objet par client)

Programmation distribue


.NET

.NET permet la cration de services Web pour


offrir laccs distant des composants publics par
le biais de requtes SOAP.
Plusieurs avantages :
 Tout systme supportant les fichiers textes et capable de

se connecter un rseau, peut accder un service web,


donc il ne reste pas limit au monde Windows
 Un service Web fournit sa propre description et les
moyens de communiquer avec lui

Dvelopper ou utiliser un service Web travers


Visual Studio .NET est dune simplicit extrme
Les services Web respectent les standards du
W3C

Programmation distribue


Verdict ?

Points communs:
 Dans les deux mondes, il est assez facile de crer des
objets distribus.

Diffrences:
 Avec .NET remoting, les objets sont distribus dans un
format propritaire.
 J2EE offre une compatibilit avec CORBA.
 .NET axe ses efforts sur les services Web.
 .NET propose une communication synchrone ou
asynchrone avec les composants.

Clients riches (lourds)




Les programmes clients dits riches ou lourds


offrent une interface graphique utilisateur (GUI)
sophistique.
Les clients sont dits riches ou lourds par opposition
aux clients lgers (interface Web), qui offrent une
interface graphique moins sophistique, mais qui
ne ncessitent pas dinstallation sur le poste client.

Clients riches (lourds)




J2EE

Java propose, depuis plusieurs annes, des


librairies graphiques standardises, pour
dvelopper des GUI:
 AWT: peu sophistiqu, performant, simple
 JFC (Java Foundation Classes): plus sophistiqu, plus
rcent, plus compliqu, un peu moins performant.
Les JFC sont composs principalement de:
Java 2D: API pour le dessin
Swing: composants graphiques Java




Swing implmente le pattern MVC


Dautres librairies graphiques, non standardises,
existent comme SWT du projet Eclipse

Clients riches (lourds)





.NET

.NET propose la librairie graphique WinForms.


WinForms est une librairie oriente objet,
implmentant (comme Swing) le pattern MVC
(Modle-Vue-Contrleur).

Clients riches (lourds)

Verdict ?

Points communs:
 Bonne qualit des composants graphiques.
 Bon support par les IDE

Diffrences:
 Java permet de crer des GUI portables (avec choix du
"look and feel" !)

Linternationalisation


Java comme .NET permettent linternationalisation


des programmes:
 Adaptation aux formats spcifiques: monnaies, nombres,
dates

 Simplification des traductions grce des fichiers de


configuration ou des classes

Prise en charge gnralise dUnicode

Le dploiement dapplications





J2EE

Les applications J2EE sont organises sous la


forme dune archive, au format JAR (Java
Archive).
Outre les diffrents bytecodes, cette archive
comporte des fichiers XML de dploiements
(certains standardiss, d autres spcifiques au
serveur J2EE utilis) donnant des instructions aux
conteneurs (scurit, transaction, persistance, ).
Les fichiers JAR peuvent tre signs.
Les applications J2EE peuvent tre dployes de
manire partage ou prive.

Le dploiement dapplications





J2EE

Le dploiement dune application J2EE ncessite


linstallation pralable dun serveur J2EE
 Volumineux et coteux (pour les produits commerciaux)
 Souvent coupl un SGBD
Installation de chaque application dans un
rpertoire spcifique
Pas de possibilits simples de gestion des versions
dun mme composant
Dploiement et redploiement possibles chaud.
Le dploiement dun client riche J2EE ncessite
simplement la JVM.

Le dploiement dapplications





.NET

Les applications .NET sont organises sous la


forme dun Assembly.
Outre les diffrents fichiers MSIL, les assemblies
comportent un fichier Manifest dcrivant les
caractristiques de dploiements (scurit,
version, dpendances, ).
Les assemblies peuvent tre signs.
Les assemblies peuvent tre dployes de
manire partage ou prive.

Le dploiement dapplications


.NET

Le dploiement dune application .NET ncessite la


prsence dune version Windows .NET.
Chaque application .NET est installe dans un
rpertoire spcifique:
 Pas denregistrement des composants dans le registre
 Plus de problme de version concurrente des DLL
 Les binaires dune application sont regroups dans un
mme dossier

Coexistence possible de plusieurs versions dun


mme composant grce au versioning et au fichier
de configuration

Le dploiement dapplications


.NET

Le dploiement dun client riche .NET ncessite


linstallation pralable du framework sur la plateforme cible:
 Volumineux 120 MO ? Un peu, mais une seule installation
ncessaire

Le dploiement dapplications

Verdict ?

Points communs:
 Installation simple
 Dcouplage dveloppement/dploiement

Diffrences:
 Pas de versioning avec J2EE
 Possibilit de choisir la plate-forme avec J2EE
 Possibilit de choisir le serveur dapplication avec J2EE

CONCLUSIONS

Conclusions sur J2EE

Avantages :
 Approche multi-plate-forme et multi-diteurs


Spcifications uniques
+30 diteurs implmentent totalement ou partiellement J2EE

 Existence dimplmentations open source (JBoss,







Tomcat, )
Portabilit entre implmentations J2EE
Nombreuses rfrences clients
Existence de la plate-forme J2EE depuis 4 ans
Modle de programmation plus avanc (EJB)

Conclusions sur J2EE




Inconvnients :
 Mono-langage
 Architecture complexe ncessitant un temps

dapprentissage consquent
 Les Services Web ne sont supports que dans la version
J2EE 1.4 (non encore finalise). De nombreuses
solutions propritaires implmentent toutefois les services
Web.

Conclusions sur J2EE




Quelques statistiques:
 80% des entreprises (disposant dun service informatique)
utilisent le langage Java (Gartner).

 92% des entreprises ayant fait le choix de la technologie


J2EE sont satisfaites de ce choix (Forrester).

 78% des dcideurs voient la technologie J2EE comme la


plus approprie pour la cration des services Web (Giga
poll).

 58% des dveloppeurs de services Web dveloppent


ceux-ci en langage Java (Evans).

Conclusions sur .NET




Avantages :
 Support natif des Services Web
 Multiplicit des langages de programmation
 Indpendance vis--vis du langage de dveloppement
 Interoprabilit entre les langages
 Simplicit dutilisation (offre intgre et package)
 Efficacit en termes de productivit de dveloppement
 Interoprabilit bi-directionnelle .NET / COM
 WebForms compatibles avec tous navigateurs supportant
le HTML 3.2
 Gestion des versions des composants excutables
(assemblies)
 Environnement Visual Studio .NET totalement intgr

Conclusions sur .NET




Inconvnients :
 Changement technologique important pour les







dveloppeurs VB et ASP actuels


Solution .NET rcente (version 1.0 sortie dbut 2002)
Peu de rfrences clients pour le moment
Limit la plate-forme Windows, les applications
dveloppes pour la plate-forme .NET sexcutent
uniquement sur la plate-forme .NET
Le modle darchitecture distribu est bas sur COM+
(code non manag). Microsoft doit migrer au plus vite vers
lenvironnement manag .NET
Pas dquivalent dans .NET des EJB Entity permettant
dassurer la persistance dun objet distribu dans la base
de donnes
Migration dapplications Windows existantes pas
forcment triviales

Conclusions sur .NET




Remarques gnrales sur les services Web:


 Technique trs la mode et assez bien standardise
(W3C) mais ...
 peu de ralisations intressantes pour le moment
 manque de maturit technologique:

pas de notion de scurit standardise


pas de notion de transaction
faible efficacit (bande passante, rapidit) du protocole
SOAP


Des amliorations sont ltude mais ne devraient


pas aboutir avant 1 an.

Comment choisir ?


Les lments prendre en considration lors du


choix sont :
 Les comptences existantes des dveloppeurs
 La culture de l entreprise
 Les OS et matriels existants (pour le dveloppement et
le dploiement)
 Les partenariats avec les diteurs et autres acteurs
 Ne pas de se fier aux "vanglistes" .NET ou Java,
forcment partiaux.

Comment choisir ?


Il convient toutefois de noter que de fortes


similitudes existent entre les plates-formes:
 Les deux plates-formes ncessitent de la formation:
rvolution culturelle (parfois) pour que les dveloppeurs se
mettent lobjet et au design dapplications multi-tiers,
Apprentissage des framework et des langages






Les deux plates-formes savent crer des Services Web


Les architectures techniques sont relativement similaires
Ne pas sous-estimer les cots de migration
Selon le Gartner Group, dici 5 ans, le march sera
partag entre J2EE et .NET (avec un avantage pour
J2EE)

Pour en savoir plus




Ressources J2EE:
 JavaSoft (http://java.sun.com/j2ee)
 TheServerSide.com (http://www.theserverside.com)
 JavaWorld (http://www.javaworld.com)
 Alphaworks (http://www.alphaworks.ibm.com/java)

Ressources .NET:
 MSDN (http://msdn.microsoft.com/)
 GOT DOT NET (http://www.gotdotnet.com)
 Dotnet Guru (http://www.dotnetguru.org)
 Dotnet-fr (http://www.dotnet-fr.org)