TUTORIELS 
Similitudes et différences entre C# et Java
Subtil mélange entre le C++ et le Java, le C# est souvent comparé au langage de Sun. Voici quelques points de comparaison entre ces deux langages.  (22 décembre 2001)
 

Pages 1 | 2

Des différences significatives

Java et C# gèrent les threads différemment. En Java, deux possibilités existent pour créer un thread. Utiliser une classe dérivée de la classe java.lang.Thread, l'autre consiste à utiliser l'interface java.lang.Runnable (cf notre premier tutoriel sur les threads). En C# il faut d'abord créer un objet de type System.Threading.Thread et le passer à un "delegate" System.Threading.ThreadStart. Ce delegate, comparable à un pointeur de fonction en C, est initialisé avec la méthode destinée à devenir un thread.

Dans le domaine de la génération automatique de documentation, Java possède l'outil Javadoc. Celui-ci génère une documentation au format HTML à partir des commentaires contenus dans le code source.
En C#, la documentation repose sur le format XML. L'utilisation de ce format permet à la documentation d'être convertie facilement, via des feuilles de style XSLT, dans d'autres formats.

Le langage Java ne permet pas d'avoir plus d'une classe "public" par fichier source. De plus le nom du fichier source doit porter le nom de la classe. Ces deux restrictions n'existent pas en C#.

Les fonctionnalités propres au C#

- L'interface System.IDisposable permet aux utilisateurs de libérer manuellement la mémoire de leur classe.

- Le mot clef "enum" permet de regrouper les types définis par l'utilisateur. Le code gagne alors en fiabilité puisque le compilateur C# est alors capable de vérifier automatiquement que les types employés le sont correctement.

- Le type "struct" permet en C# d'optimiser la gestion de la mémoire.

- L'instruction "foreach", présente également en Perl ou Php par exemple, permet de boucler facilement au travers de tableaux.

- Le préprocesseur C# permet la compilation conditionnelle via les directives du type #if, #elif, #else...

- Le mot clef "using" augmente la lisibilité du code en définissant des raccourcis :

using Terminal = System.Console;
class Test
{
     public static void Main(string[] args)
     {
          Terminal.WriteLine("Terminal.WriteLine is equivalent to           System.Console.Writeline");
     }
}

- Le mot-clef "unsafe" permet au CLR de baisser la garde. Moins de contrôle sont effectués, les pointeurs sont alors autorisés.

- En plus du passage par valeur (une méthode opère sur les copies des valeurs), le passage par référence est autorisé via le mot clef "ref".

- Les chaînes de caractères dites "verbatim" permettent de se passer du doublement des caractères spéciaux :

string filename = @"C:\My Documents\My Files\File.html";


Ces différences et similitudes ne sont pas exhaustives, c'est pourquoi nous vous conseillons de prendre connaissance des ressouces suivantes :

- Une discussion intéressante à propos des différences entre ces deux languages
- Une interview Anders Hejlsberg (auteur de Turbo Pascal et architecte de Delphi et de C#)
- Une comparaison poussée des deux langages, codes à l'appui.

Pages 1 | 2

 
[ Arnaud GadalJDNet
 
Accueil | Haut de page