186 votes

L'art de la programmation: Java vs C #

Tout au long de ma carrière universitaire, j'ai utilisé de Java pour des projets de code jusqu'à ce que j'ai commencé à travailler qui est l'endroit où j'ai dû plonger dans le C# domaine. Si l' .Net-library est assez vaste, je ne peux pas aider mais sentir qu'il ya quelque chose qui manque dans C# par rapport à Java. Je voudrais savoir si Java est mieux que le C# ou vice versa par les experts. Que voulez-vous utiliser pour développer à la fois complexe et assez trivial applications? Quels sont les avantages et les inconvénients de l'utilisation de ces 2 technologies sur l'autre?

316voto

cletus Points 276888

Pendant des années, C# a été de rattraper leur retard avec Java. Qui s'est terminée avec C#/.Net 3.0/3.5 et maintenant c'est (principalement) dans l'autre sens. Qu'est-ce que C# et Java ne l'est pas?

  • Fermetures;
  • D'exécution génériques;
  • Les génériques de types primitifs (les indices de référence de ce tri d'une liste d'un million d'ints vs un million de Entier les objets ont révélé un facteur de 3 amélioration);
  • Les délégués;
  • Les événements;
  • LINQ;
  • Les méthodes d'Extension;
  • La première des propriétés de la classe;
  • La surcharge d'opérateur;
  • Les indexeurs;
  • Les types anonymes;
  • Des arbres d'Expression;
  • Using blocs;
  • Pas vérifié exceptions. Hourra!
  • Type décimal;
  • Que de C# 4.0: l' dynamic type, qui est essentiellement le duck-typing.

Et en Java:

  • FAÇON, manière de mieux les énumérations. C# enums sont tout entiers avec une bande peinte sur le côté. Java traiter les énumérations comme des objets avec le comportement est de loin supérieure (à mon humble avis);
  • Je sais que cela va être controversée: les meilleures IDEs, en particulier dans le domaine de code refactoring où Visual Studio (sans Resharper) est encore à la traîne, loin derrière l'Ide, Eclipse et peut-être même Netbeans;
  • Il fonctionne sur Linux. Mono nonobstant, Windows est de loin .Net plus gros talon d'achille (à mon humble avis);
  • C'est gratuit. Java 6 + Glassfish + Eclipse + Linux vous coûte... rien. Maintenant, faites la même chose avec .Net + IIS + VS + R# + Windows Server...;
  • A mon avis le Java 5 simultanéité utils emballage est toujours supérieure à toute sorte de simultanéité des outils que j'ai vu en C# à jour; et
  • Beaucoup plus des projets open source, mais que le plomb est rapidement diminué.

Et malheureusement c'est tout ce que je peux penser pour les tiques dans la Java de la colonne.

154voto

Jon Skeet Points 692016

Dans mon expérience, les langues, il y a très peu de choses en Java, mais pas en C# que je veux réellement. Les énumérations et statique importations viennent à l'esprit, mais c'est tout. Il y a beaucoup de choses que je ne pas comme en Java:

  • Type de l'effacement dans les génériques
  • Les classes internes (en opposition à la nested classes)
  • L'appel de méthodes statiques "à travers" les références par exemple, myThread.sleep(1000)
  • Les classes internes anonymes (où un délégué presque toujours fait le travail)
  • Checked exceptions

Il y a beaucoup de choses en C# qui je souhaite de Java:

  • La langue définie par des propriétés (au lieu de simplement les conventions)
  • Les délégués et fonctions connexes:
    • Les événements
    • Les expressions Lambda et les méthodes anonymes (gros!)
    • Des arbres d'Expression
  • Les méthodes d'Extension
  • Les types anonymes
  • Les méthodes sont non-virtuel par défaut
  • Saner manipulation de readonly/final champs
  • Implémentation d'interface explicite
  • Itérateur blocs
  • L' using déclaration
  • Valeur définie par l'utilisateur (tels que DateTime, decimal, Guid) et nullable types de valeur pour aller avec eux

Java 1.4 et C# 1.0 étaient très similaires. Maintenant, les deux langues (en cas d'écriture idiomatique) sont tout à fait différents dans de nombreux cas. Je m'ennuie de LINQ presque tous les jours quand je code en Java.

Les différences dans les génériques pour la plupart descendre en C#faveur de l'OMI, bien que l'approche de la variance de Java a certainement ses avantages. C# 4.0 mise en œuvre limitée de la variance, ce qui au moins permet - mais pas dans tous les lieux mêmes.

31voto

Chris S Points 32376
<ul> <li><strong>Aucune exception vérifiée</strong></li> </ul> <p>Aussi, ayant récemment travaillé avec Awt et Swing pour un degré à temps partiel je fais, je vais ajouter à cette</p> <ul> <li>Le modèle de publication/abonnement que Java utilise des événements dans AWT</li> </ul> <p>J’aime le modèle, le ActionListeners et les différents adaptateurs, mais je pense qu’une fois que vous êtes utilisez aux délégués en c#, ce dernier est beaucoup plus rapide de travailler avec (même avec le code généré automatiquement qui produisent des IDEs comme Netbeans)</p>

28voto

Dominic Points 408

Je pense que le programmeur est plus important que la technologie utilisée. Vous pouvez faire logiciel fantastique avec Java ou C#. Ne vous attardez la langue, c'est mieux. À la place se concentrer sur la maîtrise de ce que vous utilisez tous les jours.

26voto

Jeroen van Bergen Points 858

Je suis un développeur Java, et ont seulement lu sur .Net.

Mon avis: C# est une version plus moderne de Java (propriétés, les délégués, d'autres trucs). Certains de la plus stricte à Java, les 'fonctions' a donné une chute (checked exceptions).

C# est évolué beaucoup plus rapidement que Java, mais vous pourriez dire que c'est une mauvaise chose.

Java est un écosystème très riche. Chaque grand joueur IL a quelque chose en Java arène, à l'exception de Microsoft.

Dans le Javasphere vous avez beaucoup de choix: des IDEs, des cadres, des environnements d'exécution, les serveurs d'application. Le C# arena offre beaucoup moins de choix.

.Net est un meilleur choix pour les applications de bureau Windows, Java est mieux adapté pour les grandes applications de serveur.

Veuillez noter que ces sont très vastes généralisations.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X