Vous êtes sur la page 1sur 64

JAVA VS .

NET
Par Farouk Korteby

Qui suis-je ?
Farouk Korteby
1 anne : Responsable technique chez Founouvel

Informatics.
Dveloppement des applications pour le domaine mdical.
Technologies .Net.

4 annes : Responsable technique chez Nearbee.


Dveloppement des solutions collaboratives professionnelles.
Technologies Java.
7 ans : d'exprience dans le domaine du dveloppement

logiciel

Sommaire
1.
2.
3.
4.
5.
6.
7.

8.
9.
10.

Introduction
Prsentation des deux plateformes
Outils de dveloppement
Langages de programmation
Application de bureau
Application serveur
Application mobile
Framework de dveloppement
Scurit
Conclusion

Le choc culturel

Historique
1975-1995.
Sun Microsystems: Cr en 1982. spcialise dans la

vente des serveurs et Crateur du systme dexploitation SOLARIS.

Microsoft: Fond en 1975. spcialise dans la conception des


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

Une certaine comptition au niveau des systmes dexploitation au


travers de IBM (Windows vs Solaris).
Microsoft est plus actif du cot des ordinateurs de bureau (desktop)
tandis que Sun est plus actif du cot des serveurs.

Historique
Mai 1995: Java est lance par Sun.

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 :
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
Juin 2000: .NET est lanc par Microsoft, avec un nouveau
langage semblable Java appel C#.

Janvier 2001: Sun & Microsoft se mettent daccord


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.

Historique
Octobre 2001: Lancement de Windows XP. Cette nouvelle
version de Windows est base sur les technologies NT et
2000.
Windows XP ne contient pas le Framework .NET.

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: Action en justice de Sun contre Microsoft.
Environ 1 milliard de dollars est demand, linclusion de Java
dans Windows XP et IE6

Historique
Quelques Remarques :
La plateforme .Net est lance aprs que SUN
remporte le procs lobligeant Microsoft
d'arrt le dveloppement sa propre version de
sa machine virtuelle JAVA.
C# : Le nouveau langage lanc par Microsoft est

trs similaire au langage Java.


La plateforme .Net comporte beaucoup de points
de similitude avec la plateforme Java.

Historique

+1

Sommaire
1.
2.
3.
4.
5.
6.
7.

8.
9.
10.

Introduction
Prsentation des deux plateformes
Outils de dveloppement
Langages de programmation
Application de bureau
Application serveur
Application mobile
Framework de dveloppement
Scurit
Conclusion

Plateforme Java
Un langage de programmation Java
JDK : Java Development Kit
JSR : Java Specification Requests
Une machine virtuelle appele JVM
Solaris, Windows, Linux,
Librairies Java :

Java SE : Java Standard Edition


Applications de bureau

Java EE : Java Enterprise Edition


Serveurs dapplications

Java ME : Java Micro Edition


Appareils mobiles

Java FX
Cration des interfaces riches

Organisation des plateformes Java EE,


Java SE, Java FX

JVM : Machine virtuelle Java


HotSpot par SUN.
Microsoft Java Virtual Machine.
Dalvik par Google pour Android.
JRockit par Oracle.
IBM
APPLE

Plateforme .Net
Multi langages : C#, VB.NET, J#, C++, Delphi
La norme Common Language Infrastructure (CLI)
Une machine virtuelle CLR (common Language Runtime)
Tourne sur Windows exclusivement

Frameworks .Net
Winforms (application du bureau)
ASP.NET (application serveur)
.NET Compact Framework (appareils mobiles)

LA PILE .Net
Framework
ADO.NET
WPF (Windows Presentation
Foundation)
WCF (Windows
Communication Foundation)
WF (Workflow Foundation)
LINQ (Language Integrated
Query)

Implmentations de la .NET Framework


CLR par Microsoft.
Fonctionne exclusivement sur Windows
Portable.NET un projet de DotGNU
Mutli plateforme.

Mono par Xamarin (Novell)


Android, BSD, iOS, OSX, Windows, Solaris...
.NET Compact Framework par Microsoft
Xbox 360.
Microsoft Silverlight par Microsoft
Une implementation pour les navigateurs
Web multiplate-forme.

Packaging
Java
Fichier .class pour chaque classe.
Regroupement des .class (.jar).
.class et .jar doivent tre dans le classpath .
.NET
Regroupement en Assemblies (.EXE, .DLL)
Gestion des versions
Le CLR soccupe de loader le bon assembly en fonction de la version.
Un mme processus peut utiliser plusieurs versions dun mme

assembly.
limine les problmes de compatibilit entre diffrentes versions dun
mme DLL.
GAC: Global Assembly Cache
Endroit o sont stocks les assemblies.
Gr par le framework.

Prsentation

+2

Sommaire
1.
2.
3.
4.
5.
6.
7.

8.
9.
10.

Introduction
Prsentation des deux plateformes
Outils de dveloppement
Langages de programmation
Application de bureau
Application serveur
Application mobile
Framework de dveloppement
Scurit
Conclusion

Java : Outils de dveloppement


Eclipse IDE (IBM)
Open source
Multiplateformes ( base de Java)
> 3 millions dextensions et plugins marketplace.eclipse.org
Fonctionnalits :
JDT (Java Development Tools Project)
ATF (AJAX Toolkit Framework)
WindowBuilder (Dveloppement graphique Java)

Action script, C, C#, C++, COBOL, Coldfusion, HTML,

Java, JavaScript, Pascal, Perl (EPIC), PHP (PDT),


Python via PyDev2, SQL, XML.
Versions commercial :
MyEclipse, JBoss

Developer Studio

Java : Outils de dveloppement


NetBeans IDE (SUN)
Open source
Multiplateformes ( base de Java)
Une centaine de plugins disponible sur : plugins.netbeans.org
Fonctionnalits :
Java Swing GUI Builder.
Java EE : JSP, JSF, EJB, Apache Struts, Spring, Hibernate
Java ME, Java FX.

Python, C, C++, JavaScript, XML, Ruby, PHP et HTML.

.Net : Outils de dveloppement


Microsoft Visual studio .Net
Versions Standards
Payant environ 600
Bas sur les systmes Windows
Winforms, ASP.NET, Phone.
Team Foundation Server (Ultimate)
MSDN (Microsoft Developer Network)
> 3 milles extensions disponible sur
visualstudiogallery.msdn.microsoft.com

.Net : Outils de dveloppement


Microsoft Visual studio .Net
Versions Express
Gratuit
Bas sur les systmes Windows
Plusieurs versions :
Visual C# Express Edition
Visual Basic Express Edition
Visual C++ Express Edition
Visual Web Developer Express Edition (ASP.NET)

.Net : Outils de dveloppement


Diffrences entre Microsoft Visual Studio .Net Express

et Standard :
Express : Visual C# Express Edition, Visual C++ Express Edition,

Visual Web Developer Express Edition


Les versions Express ne support pas les plugins.

Support : Java vs .Net


Java :
Java Doc : Gratuit (online & offline).
http://www.java.net/
http://www.theserverside.com/
http://www.roseindia.net/java/
.Net
MSDN : Gratuit online / Payant offline (748)
http://msdn.microsoft.com
http://www.codeproject.com/
http://www.codeplex.com/

Outils de dveloppement

+1

Sommaire
1.
2.
3.
4.
5.
6.
7.

8.
9.
10.

Introduction
Prsentation des deux plateformes
Outils de dveloppement
Langages de programmation
Application de bureau
Application serveur
Application mobile
Framework de dveloppement
Scurit
Conclusion

Le Langage Java vs C#
Java

C#

public class Bonjour


{
public static void main(String[] args)
{
System.out.println("Hello, World !");
}
}
class Bonjour
{
static void Main(string[] args)
{
System.Console.WriteLine(" Hello, World ! ");
}
}

Hritage, Java vs C#
Java

C#

class B extends A implements Comparable


{
int compareTo(){}
public static void main(String[] args)
{
System.out.println("Hello World");
}
}
using System;
class B : A, IComparable
{
int CompareTo(){}
public static void Main(String[] args)
{
Console.WriteLine("Hello World");
}
}

Hritage, Java vs C#
Java

C#

public void withdrawAmount(int num)


{
synchronized(this)
{
if(num < this.amount)
this.amount -= num;
}
}
public void WithdrawAmount(int num)
{
lock(this)
{
if(num < this.amount)
this.amount -= num;
}
}

Types de donnes, Java vs C#


Diffrences dans les types de donnes :

Java
Arithmtique multi prcision (Arbitrary size decimals)
C#
Entiers non signs
Nombre complexe
Value Types (avec le mot cl struct)
Pointers

Orient Objet, Java vs C#


Diffrences :
Java
Classe Anonymes
Classe Internes
Enums peut implment les interfaces

C#
Partial classes
Redfinition des operateurs

Conversions Implicite et Explicite

Avantages C#
C#

Collections + foreach
Unification des types
Tous les types sont des objets en C#, contrairement Java.
Exemple :
int i = 5;
System.Console.WriteLine(i.ToString());
Concepts: Boxing/Unboxing.
Exemple :
Stack stack = new Stack();
stack.Push(i); // boxing
int j = (int)stack.Pop(); // unboxing

Avantages C#
C#
Polymorphism
Mots cls virtual , override et new obligatoires.
Modifiers
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);

C# vs Java
Pour aller plus loin :

Voir larticle de Dare Obasanjo


http://www.25hoursaday.com/CsharpVsJava.html

Le Langage Java vs C#

+2

Sommaire
1.
2.
3.
4.
5.
6.
7.

8.
9.
10.

Introduction
Prsentation des deux plateformes
Outils de dveloppement
Langages de programmation
Application de bureau
Application serveur
Application mobile
Framework de dveloppement
Scurit
Conclusion

Application de bureau, Java vs .Net


Java
AWT (Abstract Window Toolkit)
Swing (Java GUI widget toolkit)
SWT (Standard Widget Toolkit)
Eclipse Foundation
Windows XP, Linux, Mac OS, Pocket PC

Applet, JavaFX
Java Web Start

Application de bureau, Java vs .Net


.Net
WinForms (Windows Forms)
Access native aux interfaces Windows

WPF (Windows Presentation Foundation)


XAML

Silverlight
Un plugin pour navigateurs Web

Mono (une CLR multiplateformes) :


MonoTouch (iOS)
Mono for Android

Application de bureau

+3

Sommaire
1.
2.
3.
4.
5.
6.
7.

8.
9.
10.

Introduction
Prsentation des deux plateformes
Outils de dveloppement
Langages de programmation
Application de bureau
Application serveur
Application mobile
Framework de dveloppement
Scurit
Conclusion

Application serveur, Java vs .Net


Java : Java EE.
Apache Tomcat, JBoss (RedHat), GlassFish
Java Servlet
JSP (Java Server Pages)
JSF (Java Server Faces)
EJB (Enterprise JavaBeans)
JDBC (Java DataBase Connectivity)
RMI (Remote method invocation)

Application serveur, Java vs .Net


.Net : ASP.NET
IIS (Internet Information Services)
C#, Visual Basic.NET,Delphi.NET, Perl et Python
WebForms
ASP.NET AJAX
ASP.NET MVC Framework
ADO.NET
.NET Remoting (WCF)

Application serveur

+3

Sommaire
1.
2.
3.
4.
5.
6.
7.

8.
9.
10.

Introduction
Prsentation des deux plateformes
Outils de dveloppement
Langages de programmation
Application de bureau
Application serveur
Application mobile
Framework de dveloppement
Scurit
Conclusion

Application mobile, Java vs .Net


Java :
Java ME (Java Micro Edition)
CLDC (Connected Limited Device Configuration), que l'on retrouve par

exemple dans les tlphones mobiles.


CDC (Connected Device Configuration), qui est plutt utilis dans des
dcodeurs de tlvision numrique.
Android (Google)
Noyau Linux
Smartphones, tablettes tactiles

Dalvik

Application mobile, Java vs .Net


.Net
.NET Compact Framework
Windows CE ou Windows Mobile
Xbox 360 console (Microsoft XNA)
.NET Compact Framework controls ( WinForms)

.NET Micro Framework


Pour appareils embarques ayant des ressources trs restreintes.

Application mobile

+4

Sommaire
1.
2.
3.
4.
5.
6.
7.

8.
9.
10.

Introduction
Prsentation des deux plateformes
Outils de dveloppement
Langages de programmation
Application de bureau
Application serveur
Application mobile
Framework de dveloppement
Scurit
Conclusion

Framework, Java vs .Net

Couche de prsentation

Java
Framework base de composants :
JSF, GWT, Wicket
Framework base dactions :
Apache Struts , Spring MVC

.Net
WPF (Windows Presentation Foundation)
Gratuit : ASP.NET Control Gallery

Commercial : Telerik, Infragistics, DevExpress

Framework, Java vs .Net


ORM (mapping objet-relationnel)
Java
JPA (Java Persistence API)
JDO (Java Data Objects)
Hibernate

.Net
Entity Framework
Nhibernate
LINQ (Language Integrated Query)

Framework, Java vs .Net


Conteneurs lgers
Java
Spring Framework
Google Guice
Apache HiveMind

.Net
Spring.NET

Framework, Java vs .Net


Autres Framework de Dveloppement
Java
EJB (Enterprise JavaBeans)

.Net
COM+ (Component Object Model)
Microsoft Enterprise Library

Framework

+5

Sommaire
1.
2.
3.
4.
5.
6.
7.

8.
9.
10.

Introduction
Prsentation des deux plateformes
Outils de dveloppement
Langages de programmation
Application de bureau
Application serveur
Application mobile
Framework de dveloppement
Scurit
Conclusion

Scurit, Java vs .Net

Scurit, Java vs .Net


.NET et J2EE
offrent un bon niveau de scurit.
Les permissions et preuves sont gres de manire fine.
.NET offre un niveau de contrle plus fin que Java grce

au PolicyManager.

Scurit, Java vs .Net

+4

Sommaire
1.
2.
3.
4.
5.
6.
7.

8.
9.
10.

Introduction
Prsentation des deux plateformes
Outils de dveloppement
Langages de programmation
Application de bureau
Application serveur
Application mobile
Framework de dveloppement
Scurit
Conclusion

Conclusion

+5

+4

Conclusion
Java est un langage un environnement dexcution, .Net

est un environnement d'excution qui prend en charge


plusieurs langues, Visual Basic et C # ...
C # est trs similaire Java, mais plus jeune, et un peu
plus agrable dans certains cas.
Java est multiplateformes, . Net est principalement
conue pour Windows.
. Net dispose d'un environnement de dveloppement plus
intgr, alors que Java est bas sur outil tiers et des
fournisseurs de serveurs.
Java offre une plus grande flexibilit, due au nombre
important des contributions disponible gratuitement.

Conclusion
Fonctionnellement ya pas une grande diffrence entre les

deux plateformes dune manire gnrale.

Le choix finalement entre ses deux technologies dpendra


plus du contexte dutilisation.

QUESTIONS ?