EcommerceDEV. Développement, optimisation et sécurisation des sites de commerce électronique.
arrowAccueil arrow Programmation arrow ASP/.Net/PHP arrow Les différences et les similarités entre Java et C#
Dimanche 7 sept 2008
Nom d'utilisateur     Mot de passe      Conserver       Mot de passe perdu ?  Inscription
Menu
Accueil
A propos du site
Carte du site
Moteur de recherche
Nouvelles
Contactez-nous
Evénements
- - - - - - -
Analyse
Conception
Optimisation
Programmation
Sécurité
Produits/Services
Mar 15 2006
Les différences et les similarités entre Java et C# Version imprimable Suggérer par mail
Appréciation des utilisateurs: / 7
FaibleMeilleur 
Programmation - ASP/.Net/PHP
Ecrit par Kamal AOUDA   
15-03-2006
Les différences et les similarités entre Java et C#

Alors que Sun Microsystems a centré sa stratégie d’affaires sur la création d’un langage multi-platforme selon le principe du write once and run everywhere, Microsoft a pour sa part choisi d’assurer la compatibilité de plusieurs langages de programmation avec le framework .Net.

En adoptant cette stratégie, le choix du langage de programmation à utiliser avec .Net est devenu avant tout une affaire de style et de préférences personnelles. En effet :


• Quelque soit le langage de programmation utilisé les performances obtenues en aval sont pratiquement les mêmes (rappelons à ce sujet qu’avant d’être compilé en langage natif, le code source est transformé en une sorte de pseudo-code appelé Microsoft Intermediate Language).
• Même si les langages utilisés sont différents, les types de données auxquels ils font appel sont standardisés . Cela améliore l’interopérabilité des applications multi-langages et offre une plus grande flexibilité aux programmeurs (qui peuvent par exemple écrire une même application avec plusieurs langages ou encore implémenter l’héritage d’un composant codé en C# à partir d’un programme écrit en VB.net).
• Les développeurs n’ont pas besoin d’apprendre un nouveau langage de programmation pour tirer profit de .Net .Cela est partiellement dû au fait que la plupart des fonctionnalités sont implémentées au niveau du framework et non au niveau du langage de programmation comme c’est le cas de Java.

Les ressemblances entre Java et C# sont flagrantes même si Microsoft n’a pas cessé d’affirmer depuis la création de son nouveau langage que C# est d’abord un dérivé de C++. Notre objectif dans ce document n’est pas de savoir laquelle des deux firmes a copié l’autre. C’est d’abord à des fins de migration que nous souhaitons passer en revue les différences et les similitudes entre ces deux langages.


Les similarités

• Les deux langages sont transformés en pseudo-code avant d’être compilés en langage natif. Dans Java le pseudo-code est appelé bytecode et sous .Net il est appelé Microsoft Intermediate Language.
• Les deux langages disposent d’un garbage collector qui permet de libérer automatiquement la mémoire occupée par les objets non pointés.
• Dans les deux langages toutes les classes dérivent d’une classe générique Object. De ce fait tout est objet aussi bien en Java qu’en C#.
• Les deux langages ne permettent pas d’implémenter directement l’héritage multiple (ils le font par le biais des interfaces).
• Les deux langages contrôlent les limites des tableaux via le mécanisme du bound checking (autrement dit le compilateur vérifie si l'on ne va pas écrire dans le tableau avec un index supérieur à sa limite maximale. En C++, une telle situation conduit à l'écriture des données dans une zone de mémoire n'appartenant pas au tableau ce qui entraîne un dysfonctionnement du programme voire même un plantage généralisé).
• Les commentaires inclus dans le code source des programmes, peuvent être utilisés pour générer automatiquement la documentation des API.
• Les deux langages utilisent les packages pour éviter la collision des classes qui portent le même nom mais qui appartiennent à des packages différents (les namespaces sont pour C# ce que les packages sont pour Java).
• La plupart des mots-clés en Java ont un homologue en C# (exemple : class, new, this, static, throw, break, and null que les deux langages empruntent au C++). En revanche la plupart des mots clés Java qui n’ont pas d’équivalent en C++ portent des noms différents en C# (exemple : les mots-clés Java super, import, package et final sont respectivement appelés base, using, namespace et sealed en C#). Il est important de noter que plusieurs classes et méthodes portent le même nom dans les deux langages. Une différence minime se situe souvent au niveau des méthodes qui commencent avec une majuscule en C#. Par exemple :

• L’équivalent de Object.Equals() en C# est Object.equals() en Java.
• L’équivalent de Object.Finalize() en C# est Object.finalize().
• L’équivalent de Object.ToString() en C# est Object.toString().

NB : cette règle n’est pas toujours vraie mais elle permet souvent aux programmeurs de se retrouver dans les deux langages.

Comme nous avons pu le voir dans cette section, il y a de grandes similarités « cosmétiques » entre les deux langages. Ces similarités permettent de réduire les coûts de formation et font le bonheur des programmeurs impliqués dans les projets de migration et/ou de transition.

Les différences

Dans cette section nous allons énumérer les substrats propres à C# ainsi que ses principales différences par rapport au langage Java.

• Comme Visual Basic, C# possède une boucle de type foreach qui permet de parcourir facilement et rapidement les éléments d’une collection.
• Comme Visual Basic, C# dispose d’un mot clé enum qui permet d’associer un ensemble de constantes prédéfinies aux propriétés des objets.
• Comme Turbo Pascal et Delphi, C# dispose d’un type struct qui permet de regrouper dans des blocs les constructeurs, les constantes, les variables, les méthodes, les indexes, les propriétés, et les opérateurs (voir l’exemple suivant).

public struct Employé
{
public int Empid;
public string Empnom;
public string Empemail;
public string Empsalaire;
}

Employé emp1;
Employee emp2;
emp1= new Employé();
emp1.Employénom = ‘kamal’
emp1.Employéemail = ‘
emp1.Employésalaire = $4000;

Les structs ressemblent à bien des égards aux vieux records de Pascal (pas étonnant qu’ils soient repris dans C# parce qu’Anders Hejlsberg, l’inventeur du Turbo Pascal, est également l’inventeur de C#).

En matière de référencement, la différence entre un struct et une classe normale est que le struct contient physiquement les données qu’il regroupe et ne nécessite pas d’allocation au niveau du heap alors que les classes sont référencées par des pointeurs (ou handles). On parle alors de value types par opposition aux reference types dans le cas des classes normales.

• Par défaut, les méthodes de C# ne sont pas virtuelles. Elles doivent être déclarées explicitement comme virtual afin qu’il soit possible de les réécrire au niveau des classes dérivées (en Java, par contre, la réécriture d’une méthode, héritée d’une classe parent, au niveau de la classe dérivée peut se faire implicitement sauf lorsque la méthode de la classe parent est de type final).
• C# utilise les delegates qui ressemblent à bien des égards aux pointeurs de fonctions de C++ mais qui sont plus sécurisés et fortement typés.
• C# supporte le modèle COM (Component Object Model) et l’API Windows.
• C# autorise la surcharge des opérateurs. La surcharge dont il est question ici permet à un utilisateur d’écrire des expressions à l'aide de types qu'il définit lui même. Dans ce cas la sémantique associée à l’opérateur de base change pour revêtir celle que le programmeur veut lui associer. A noter que les opérateurs ne sont pas nécessairement des symboles. Parfois la définition de nouveaux opérateurs est autorisée. A titre d’exemple on peut surcharger l’opérateur (+) pour définir des opérations spéciales d’addition sur les nombres complexes comme le montre le programme décrit dans l’URL suivante : http://www.c2i.fr/code.aspx?IDCode=371 
• Le générateur de documentation de C# repose sur XML et permet plus de flexibilité que Javadocs.
 

Dernière mise à jour : ( 15-03-2006 )
< Précédent   Suivant >
Professional Development with Web APIs : Google, eBay, Amazon.com, MapPoint, FedEx
Professional Development with Web APIs : Google, eBay, Amazon.com, MapPoint, FedEx

Un livre idéal pour les programmeurs .Net qui veulent intégrer à leurs applications de commerce électronique, les fonctionnalités offertes à travers les services web de Google, Fedex, Ebay, Amazon et MapPoimt.

Après un bref rappel des concepts de base, ce livre aborde des sujets avancés comme l'appel des API à partir d'appareils mobiles ou des applications développées avec VBA, l'envoi d'un fax via l'API Paypal, la création de votre propre web API (cette liste n'est pas limitative). A la fin de ce livre vous trouverez des études de cas qui montrent comment utiliser les API précitées pour développer rapidement une application CRM et un un tableau de bord électronique.

 

Références

 

http://www.wrox.com/WileyCDA/WroxTitle/productCd-0764584456.html, Denise M. Gosnell, Wrox, ISBN: 0-7645-8445-6, April 2005, 324 pages

Moteur de recherche
Recommander ce site
Collaboration
Téléchargements
Derniers événements
Aucun événement
Sondages

Souhaiteriez-vous participer au développement d'un site e-commerce en .Net ?

  
Blogs Ecommerce
Blog de capitaine commerce
top

Ce site a été crée avec le CMS Mambo. Un logiciel gratuit disponible sous licence GPL.

Copyright Ecommerce DEV 2006.

Hosted by SiteGround