Lors de l’Algeria Java Day, Mr Farouk Korteby, actuellement responsable technique chez Founouvel Informatics a présenté une conférence sous le thème Java vs .Net ou il a confronté les deux technologies d’après plusieurs critères. Il a commencé par un bref historique dans lequel il a mis en évidence la différence entre Microsoft et Sun Microsystems et le fait que la plateforme .NET comporte beaucoup de points de similitude avec la plateforme JAVA qui est née au préalable. Ensuite il a présenté les deux plateformes avec leurs différentes librairies, leurs machines virtuelles et leur packaging. Il a par la suite comparé leurs outils de développement (Eclipse IDE et NetBeans IDE pour JAVA ; Microsoft Visual studio express et standard pour .NET). Le conférencier a exposé les dissimilitudes entre le langage JAVA et C# suivant la présentation des classes, les types de données, l’héritage, l’Orienté Objet… et puis il a évalué les deux plateformes selon les applications de bureau et de serveur. Pour ce qui est des applications mobile le Java ME et l’Android (Google) furent comparé aux .NET Compact Framework et le .NET Micro Framework. Et puis enfin la sécurité des deux fut développée. Mr Korteby a conclu que fonctionnellement y’a pas une grande différence entre les deux plateformes d’une manière générale et que le choix entre ces deux technologies dépendrait plus du contexte d’utilisation. Il a fini avec la phrase suivante, je cite : ‘’ AVEC .NET C’EST PLUS FACILE MAIS AVEC JAVA C’EST PLUS PASSIONNANT. ‘’
2. 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
3. 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
5. 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.
6. 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.
7. Historique
Juin 2000: .NET est lancé par Microsoft, avec un nouveau
langage semblable à Java appelé C#.
Janvier 2001: Sun & Microsoft se mettent d’accord
Sun obtient $20 millions. Microsoft ne peut plus développer
de produits incompatibles avec les spécifications de Sun
mais peut continuer à distribuer les versions actuelles.
Juin 2001: Microsoft rend disponible la version BETA 2 de
son .NET Framework SDK.
Juillet 2001: Microsoft annonce que sa machine virtuelle
pour Java ne sera pas distribuée avec son nouveau système
d’exploitation, Windows XP, ni dans Internet Explorer 6.
8. Historique
Octobre 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…
9. 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.
11. 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
12. 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 Edition
Applications de bureau
Java EE : Java Enterprise Edition
Serveurs d’applications
Java ME : Java Micro Edition
Appareils mobiles
Java FX
Création des interfaces riches
14. JVM : Machine virtuelle Java
• HotSpot par SUN.
• Microsoft Java Virtual Machine.
• Dalvik par Google pour Android.
• JRockit par Oracle.
• IBM
• APPLE
•…
15. 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)
17. 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.
18. 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.
20. 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
21. 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…
22. 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.
23. .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
24. .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)
• …
25. .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.
28. 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
29. Le Langage Java vs C#
• Java
public class Bonjour
{
public static void main(String[] args)
{
System.out.println("Hello, World !");
• C# }
}
class Bonjour
{
static void Main(string[] args)
{
System.Console.WriteLine(" Hello, World ! ");
}
}
30. Héritage, Java vs C#
• Java class B extends A implements Comparable
{
int compareTo(){}
public static void main(String[] args)
{
System.out.println("Hello World");
• C# }
}
using System;
class B : A, IComparable
{
int CompareTo(){}
public static void Main(String[] args)
{
Console.WriteLine("Hello World");
}
}
32. 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
33. 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
34. 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
35. 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);
36. C# vs Java
• Pour aller plus loin :
Voir l’article de Dare Obasanjo
http://www.25hoursaday.com/CsharpVsJava.html
38. 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
39. 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
40. 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
42. 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
46. 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
47. 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
48. 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.
50. 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
51. 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
56. 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
58. 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.
60. 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
62. 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.
63. 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.