Java vs .Net

64
JAVA VS .NET Par Farouk Korteby

Transcript of Java vs .Net

Page 1: Java vs .Net

JAVA VS .NETPar Farouk Korteby

Page 2: Java vs .Net

Qui suis-je ?

Farouk Korteby• 1 année : Responsable technique chez Founouvel

Informatics.• Développement des applications pour le domaine médical.• Technologies .Net.

• 4 années : Responsable technique chez Nearbee.• Développement des solutions collaboratives professionnelles.• Technologies Java.

• 7 ans : d'expérience dans le domaine du développement logiciel

Page 3: Java vs .Net

Sommaire

1. Introduction 

2. Présentation des deux plateformes

3. Outils de développement

4. Langages de programmation

5. Application de bureau

6. Application serveur

7. Application mobile

8. Framework de développement

9. Sécurité 

10. Conclusion

Page 4: Java vs .Net

Le choc culturel

Page 5: Java vs .Net

Historique

1975-1995.Sun Microsystems: Créé en 1982. spécialisée dans la vente

des serveurs et Créateur du système d’exploitation SOLARIS.

Microsoft: Fondé en 1975. spécialisée 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 compétition au niveau des systèmes d’exploitation 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.

Page 6: Java vs .Net

Historique

Mai 1995: Java est lancée par Sun.

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 : 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 7: Java vs .Net

HistoriqueJuin 2000: .NET est lancé par Microsoft, avec un nouveau

langage semblable à Java appelé C#.

Janvier 2001: Sun & Microsoft se mettent d’accordSun 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.

Page 8: Java vs .Net

HistoriqueOctobre 2001: Lancement de Windows XP. Cette nouvelle

version de Windows est basée 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 téléchargement sur le site web de Microsoft.

Février 2002: Microsoft lance Visual Studio .NET.

Mars 2002: Action en justice de Sun contre Microsoft. Environ 1 milliard de dollars est demandé, l’inclusion de Java dans Windows XP et IE6…

Page 9: Java vs .Net

Historique

Quelques Remarques :• La plateforme .Net est lancée après que SUN remporte le procès l’obligeant Microsoft d'arrêté le développement sa propre version de sa machine virtuelle JAVA.

• C# : Le nouveau langage lancé par Microsoft est très similaire au langage Java.

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

Page 10: Java vs .Net

Historique

+1

Page 11: Java vs .Net

Sommaire

1. Introduction 

2. Présentation des deux plateformes

3. Outils de développement

4. Langages de programmation

5. Application de bureau

6. Application serveur

7. Application mobile

8. Framework de développement

9. Sécurité 

10. Conclusion

Page 12: Java vs .Net

Plateforme Java• Un langage de programmation Java

• JDK : Java Development Kit• JSR : Java Specification Requests

• Une machine virtuelle appelée JVM• Solaris, Windows, Linux, …

• Librairies Java :

Java SE : Java Standard EditionApplications de bureau

Java EE : Java Enterprise EditionServeurs d’applications

Java ME : Java Micro EditionAppareils mobiles

Java FX 

Création des interfaces riches

Page 13: Java vs .Net

Organisation des plateformes Java EE, Java SE, Java FX

Page 14: Java vs .Net

JVM : Machine virtuelle Java• HotSpot par SUN.• Microsoft Java Virtual Machine. • Dalvik par Google pour Android.• JRockit par Oracle.• IBM • APPLE• …

Page 15: Java vs .Net

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)

Page 16: Java vs .Net

LA PILE .Net Framework

ADO.NET

WPF (Windows Presentation Foundation)

WCF (Windows Communication Foundation)

WF (Workflow Foundation)

LINQ (Language Integrated Query)

Page 17: Java vs .Net

Implémentations 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.

Page 18: Java vs .Net

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 s’occupe de « loader » le bon assembly en fonction de la version.• Un même processus peut utiliser plusieurs versions d’un même

assembly.• É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: Java vs .Net

Présentation

+2

Page 20: Java vs .Net

Sommaire

1. Introduction 

2. Présentation des deux plateformes

3. Outils de développement

4. Langages de programmation

5. Application de bureau

6. Application serveur

7. Application mobile

8. Framework de développement

9. Sécurité 

10. Conclusion

Page 21: Java vs .Net

Java : Outils de développement• Eclipse IDE (IBM)

• Open source• Multiplateformes (à base de Java)• > 3 millions d’extensions et plugins marketplace.eclipse.org• Fonctionnalités :

• JDT (Java Development Tools Project)• ATF (AJAX Toolkit Framework)• WindowBuilder (Développement 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…

Page 22: Java vs .Net

Java : Outils de développement• NetBeans IDE (SUN)

• Open source• Multiplateformes (à base de Java)• Une centaine de plugins disponible sur : plugins.netbeans.org• Fonctionnalités :

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

Page 23: Java vs .Net

.Net : Outils de développement• Microsoft Visual studio .Net

• Versions Standards• Payant environ 600€• Basé sur les systèmes Windows• Winforms, ASP.NET, Phone.• Team Foundation Server (Ultimate) • MSDN (Microsoft Developer Network)• > 3 milles extensions disponible sur

visualstudiogallery.msdn.microsoft.com

Page 24: Java vs .Net

.Net : Outils de développement• Microsoft Visual studio .Net

• Versions Express• Gratuit • Basé sur les systèmes Windows• Plusieurs versions :

• Visual C# Express Edition• Visual Basic Express Edition• Visual C++ Express Edition• Visual Web Developer Express Edition (ASP.NET)• …

Page 25: Java vs .Net

.Net : Outils de développement• Différences 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.

Page 26: Java vs .Net

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/

Page 27: Java vs .Net

Outils de développement

+1

Page 28: Java vs .Net

Sommaire

1. Introduction 

2. Présentation des deux plateformes

3. Outils de développement

4. Langages de programmation

5. Application de bureau

6. Application serveur

7. Application mobile

8. Framework de développement

9. Sécurité 

10. Conclusion

Page 29: Java vs .Net

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 ! ");     }} 

Page 30: Java vs .Net

Héritage, 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");     }}

Page 31: Java vs .Net

Héritage, 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;     }}

Page 32: Java vs .Net

Types de données, Java vs C#• Différences dans les types de données :

• Java• Arithmétique multi précision (Arbitrary size decimals)

• C#• Entiers non signés • Nombre complexe• Value Types (avec le mot clé struct)• Pointers

Page 33: Java vs .Net

Orienté Objet, Java vs C#• Différences :

• Java• Classe Anonymes• Classe Internes• Enums peut implémenté les interfaces

• C#• Partial classes• Redéfinition des operateurs• Conversions Implicite  et Explicite

Page 34: Java vs .Net

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); // boxingint j = (int)stack.Pop(); // unboxing

Page 35: Java vs .Net

Avantages C#• C#

• 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);

Page 36: Java vs .Net

C# vs Java• Pour aller plus loin :

Voir l’article de Dare Obasanjohttp://www.25hoursaday.com/CsharpVsJava.html

Page 37: Java vs .Net

Le Langage Java vs C#

+2

Page 38: Java vs .Net

Sommaire

1. Introduction 

2. Présentation des deux plateformes

3. Outils de développement

4. Langages de programmation

5. Application de bureau

6. Application serveur

7. Application mobile

8. Framework de développement

9. Sécurité 

10. Conclusion

Page 39: Java vs .Net

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

Page 40: Java vs .Net

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

Page 41: Java vs .Net

Application de bureau

+3

Page 42: Java vs .Net

Sommaire

1. Introduction 

2. Présentation des deux plateformes

3. Outils de développement

4. Langages de programmation

5. Application de bureau

6. Application serveur

7. Application mobile

8. Framework de développement

9. Sécurité 

10. Conclusion

Page 43: Java vs .Net

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)

Page 44: Java vs .Net

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)

Page 45: Java vs .Net

Application serveur

+3

Page 46: Java vs .Net

Sommaire

1. Introduction 

2. Présentation des deux plateformes

3. Outils de développement

4. Langages de programmation

5. Application de bureau

6. Application serveur

7. Application mobile

8. Framework de développement

9. Sécurité 

10. Conclusion

Page 47: Java vs .Net

Application mobile, Java vs .Net• Java :

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

exemple dans les téléphones mobiles.• CDC (Connected Device Configuration), qui est plutôt utilisé dans des

décodeurs de télévision numérique.

• Android (Google)•  Noyau Linux• Smartphones, tablettes tactiles …• Dalvik

Page 48: Java vs .Net

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 embarquées ayant des ressources très restreintes.

Page 49: Java vs .Net

Application mobile

+4

Page 50: Java vs .Net

Sommaire

1. Introduction 

2. Présentation des deux plateformes

3. Outils de développement

4. Langages de programmation

5. Application de bureau

6. Application serveur

7. Application mobile

8. Framework de développement

9. Sécurité 

10. Conclusion

Page 51: Java vs .Net

Framework, Java vs .Net• Couche de présentation

• Java • Framework à base de composants :

• JSF, GWT, Wicket

• Framework à base d’actions :• Apache Struts , Spring MVC

• .Net• WPF (Windows Presentation Foundation)• Gratuit : ASP.NET Control Gallery• Commercial : Telerik, Infragistics, DevExpress

Page 52: Java vs .Net

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)

Page 53: Java vs .Net

Framework, Java vs .Net• Conteneurs légers

• Java• Spring Framework• Google Guice• Apache HiveMind

• .Net• Spring.NET

Page 54: Java vs .Net

Framework, Java vs .Net• Autres Framework de Développement

• Java• EJB (Enterprise JavaBeans)

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

Page 55: Java vs .Net

Framework

+5

Page 56: Java vs .Net

Sommaire

1. Introduction 

2. Présentation des deux plateformes

3. Outils de développement

4. Langages de programmation

5. Application de bureau

6. Application serveur

7. Application mobile

8. Framework de développement

9. Sécurité 

10. Conclusion

Page 57: Java vs .Net

Sécurité, Java vs .Net

Page 58: Java vs .Net

Sécurité, Java vs .Net• .NET et J2EE

• offrent un bon niveau de sécurité.• Les permissions et preuves sont gérées de manière fine.

• .NET offre un niveau de contrôle plus fin que Java grâce au PolicyManager.

Page 59: Java vs .Net

Sécurité, Java vs .Net

+4

Page 60: Java vs .Net

Sommaire

1. Introduction 

2. Présentation des deux plateformes

3. Outils de développement

4. Langages de programmation

5. Application de bureau

6. Application serveur

7. Application mobile

8. Framework de développement

9. Sécurité 

10. Conclusion

Page 61: Java vs .Net

Conclusion

+4+5

Page 62: Java vs .Net

Conclusion• Java est un langage un environnement d’exécution, .Net

est un environnement d'exécution qui prend en charge plusieurs langues, Visual Basic et C # ...

• C # est très similaire à Java, mais plus jeune, et un peu plus agréable dans certains cas.

• Java est multiplateformes, . Net est principalement conçue pour Windows.

• . Net dispose d'un environnement de développement plus intégré, 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.

Page 63: Java vs .Net

Conclusion• Fonctionnellement y’a pas une grande différence entre les

deux plateformes d’une manière générale.

Le choix finalement entre ses deux technologies dépendra plus du contexte d’utilisation.

Page 64: Java vs .Net

QUESTIONS ?