Si vous disposez de plusieurs années d’expérience Java et de C # et .NET, votre opinion sur les différences de productivité en matière de développement de logiciels entre ces deux environnements est précieuse. Un de nos clients envisage de remplacer leur solution logicielle existante. Comme le remplacement nécessitera env. 10 à 15 années-personnes de travail, un choix pour Java ou .NET, basé sur des différences de productivité entre eux, peut influer considérablement sur l'investissement requis et le délai de mise sur le marché.
Seriez-vous en mesure de nous fournir une indication des différences de productivité en développement logiciel entre Java et C # / .NET? Je préférerais recevoir une réponse comme suit:
Mon expérience est basée sur X années d'expérience de travail avec Java et X années d'expérience de travail avec C # / .NET. Java est X% plus productif que C # .NET ou C # / .NET est X% plus productif que Java si vous tenez compte des éléments suivants.
la source
Réponses:
Mon expérience repose sur 10 ans d’expérience Java et de 3 ans sur C # / .NET. Java est 0% plus productif que C # .NET. Ceci est basé sur l'écriture d'applications basées sur des services back-end.
C # /. NET est peut-être 5% plus productif que Java pour l'écriture d'applications utilisateur. Mais cela fait près de 5 ans que je n’ai pas fait cela en Java et le nouvel éditeur d’interface utilisateur Netbeans aurait pu combler l’écart.
Vous voulez augmenter la productivité? IC (idéalement, livraison continue) et tests automatisés. La productivité gagnée par le choix de langue / plate-forme / IDE sur n'importe quelle langue / plate-forme / IDE majeure est relativement faible.
la source
J'ai travaillé sur des projets à la fois au collège et dans le Monde Réel ™ utilisant Java et C # depuis 5 ans maintenant.
J'aime utiliser C # more en raison de sa brièveté et de l’utilisation du sucre de syntaxe. Vous trouverez rarement un
Factory.GetFactory(OfFactory.GetFactory(Factory));
code en C #. Il est plus facile à lire et à suivre car la syntaxe est plus petite et plus succincte.Avec lequel serez-vous le plus productif? Cela dépend du type de projet.
Concevez-vous une application de bureau pour Windows? C # est alors le meilleur choix en raison de son puissant IDE Visual Studio et .NET Framework facilite la création d'interface graphique.
Franchement, je suis heureux de ne plus utiliser Java (cela fait maintenant plus d'un an) car je me souviens à quel point le code devait être horriblement prolixe. Un exemple rapide est la gestion des exceptions. Si votre code peut générer une exception, vous devez rendre compte de toutes les exceptions possibles. Cela transforme rapidement un code trivial en 20 lignes + monstruosité.
C # ne tient pas la main, si vous choisissez de laisser votre code ouvert, c'est à vous de décider.
C # a également fait beaucoup d’additions au cours de l’année, ce qui en fait un plaisir à utiliser. Lambdas, délégués, fonction anonyme (à la Ruby), plein de bonnes petites choses que vous trouverez au fur et à mesure.
la source
If your code can throw an exception you must account for every single exception possible.
Je ne vois pas les inconvénients de cela, du moins cela sensibilise-t-il aux problèmes ... mais peut-être juste moiJ'ai beaucoup travaillé avec Java (depuis 1996) et .Net (depuis 2002) et, en 2010, j'ai décidé d'utiliser Java dans mon entreprise, car ce serait globalement l'environnement le plus productif .
Notez que je définis la productivité du développement logiciel en termes de valeur métier créée par unité de coût / ressource, sur une base de bout en bout (c’est-à-dire que vous devez prendre en compte la productivité de tout le cycle de vie du logiciel, y compris le déploiement et la maintenance, codage initial !!).
Voici les éléments clés de mon raisonnement:
object.getSomeProperty()
tapentobject.SomeProperty
ou utilisent une classe interne anonyme par rapport à un lambda ne fera tout simplement pas une différence appréciable pour l’avantage concurrentiel de votre entreprise ....Donc, bien qu'il y ait eu beaucoup de considérations complexes, dans l'ensemble, je suis assez satisfait du choix d'utiliser Java et je ferais le même choix aujourd'hui (à partir de début 2012).
Le seul cas où je choisirais maintenant .Net serait probablement si je développais une application de bureau uniquement Windows (où l'avantage de .Net est clairement énorme).
la source
J'ai: Java 10 ans, C # 8 ans
Je vote Java pour
la source
Java: 5 ans (non continu)
C #: 7 ans
Je ne crois pas que vous puissiez quantifier la productivité de cette façon. Cela dépend fortement du développeur et du projet. Utilisez ce que vos développeurs savent.
Edit:
Définissons "application d'entreprise typique" comme suit:
Java et C # peuvent le faire. Ce n'est pas tellement une question de langage, mais de framework / runtime. Encore une fois, utilisez ce que vos développeurs savent. Ils peuvent apprendre un nouveau langage et un nouveau cadre, mais il faut du temps pour le maîtriser. Le serait vrai pour une application de bureau. Les deux langues peuvent être utilisées avec de nombreuses bibliothèques / outils graphiques, mais elles ont toutes une approche et une philosophie différentes.
la source
J'ai plus de 10 ans d'expérience avec Java (depuis la version 1.1, vraiment!) Et 7 ans d'expérience avec .NET (principalement en C #).
Vous avez une décision très difficile à prendre, mais vous devez surtout essayer de décomposer en quelques scénarios:
Application de bureau
Si vous développez une application de bureau, vous devez utiliser la plate-forme principale avec laquelle vous allez travailler. S'il s'agit d'une plate-forme Microsoft utilisant .NET, il n'y a pas de meilleure solution que la plate-forme développée par le vaisseau mère lui-même. S'il s'agit d'un scénario Linux ou multi-plateforme, envisagez Java ou passez à une solution Web.
Application basée sur le Web
C'est une décision très difficile à prendre car chacun a sa force et sa faiblesse. En voici quelques unes:
C #
Force: a actuellement plus de dynamisme en créant de nouvelles fonctionnalités dans le langage et la plateforme / structure. Tout vient d'un seul vendeur et c'est définitivement un avantage. Vous pouvez également utiliser des composants très puissants comme DevExpress par exemple (Java n’est pas proche de ce que l’équipe DX a mis au point au fil des ans et cela représente un énorme gain de productivité).
Point faible: pour les applications d’entreprise, .NET n’est pas aussi mature que Java. Vous n’avez pas autant de fournisseurs qui construisent des logiciels d’entreprise dans .NET que vous en avez pour Java.
Java
Force: Plus mature (déjà expliqué) et a une grande communauté avec plusieurs grands projets open source qui peuvent aider. Plusieurs projets Open Source .NET ne sont en réalité que des copies de projets Java.
Point faible: Oracle appartient à Java (je sais, pas au JCP) et cela constitue certainement un risque à prendre en compte. Leurs intentions ne sont pas très claires et personnellement, je n'aime pas le sens du langage (je sais que beaucoup de développeurs Java ont des préoccupations similaires).
Application côté serveur
Ce sont fondamentalement les mêmes arguments que les applications basées sur le Web, mais parce que vous n'avez pas à vous soucier de l'interface utilisateur, Java devient plus fort dans ce cas. Mais encore une fois, si la plate-forme est principalement Windows .NET pourrait être un meilleur choix.
Considérations générales
Globalement, à mon avis, .NET a principalement l'avantage en raison de l'intégration étroite de Visual Studio 2010 (le meilleur IDE du marché), de MS SQL, de Entity Framework, de IIS, etc. Tout cela représente un énorme gain de productivité et j'ai beaucoup d'expérience à prouver. De plus, je travaille principalement avec des développeurs Java qui se sont tournés vers .NET et qui partagent essentiellement le même avis.
Je pense que le fait que Microsoft soit plus fort que jamais signifie également que .NET sera là pendant un certain temps. Ainsi, lorsque je regarde dans 10 ou 15 ans, je me sens plus en sécurité avec .NET qu'avec Java.
la source
Je suis un étudiant récemment diplômé de l'université, mais j'ai une expérience commerciale des deux langues, soit un total d'environ 3 ans java et 4 ans en C # .Net (note .net signifie que vous pouvez utiliser C #, VB.net, C ++ CLI, et J # et F #).
Je dirai maintenant que ma préférence générale va à C # plutôt qu'à Java, alors que les deux ont une syntaxe similaire. J'aime la puissance du framework .Net par rapport à la compatibilité entre systèmes d'exploitation de Java. Vous devez considérer sérieusement ce que vous devez construire. Est-ce juste une application de bureau? Avez-vous besoin de connectivité avec d'autres clients, donc avec d'autres ordinateurs de bureau, mobiles, sites Web?
** La discussion sur l'IDE a été perdue car la question de Stackoverflow était close. En fin de compte, Java a de nombreux IDE gratuits, mais ils ne se comparent pas, à mon avis, à la puissance et aux addons de Visual Studio. Mais notez que Visual Studio coûte plus par licence.
Vous devez examiner les compétences de votre équipe de développement, car cela aura un impact initial. Ce qui est plus rapide est ici, ni donné à un utilisateur expérimenté dans les deux langages / framework. Ce qui, je suppose, fait ressortir le fait que vous ne devez pas considérer le langage, car le langage n’est qu’une syntaxe, mais les outils et le cadre qu’il utilise.
la source
Avec la similarité de la syntaxe et des outils, les gains de productivité de C # ou de Java ne sont pas d'un ordre de grandeur suffisant pour faire une différence significative dans votre projet de travail de 10 à 15 années-hommes. J'examinerais de plus près des questions telles que:
Je pense que, selon moi, le postulat de la question, selon lequel "les différences de productivité entre (C # et Java) peuvent influer considérablement sur l'investissement requis et le délai de mise sur le marché", n'est pas vrai. Je ne doute pas qu'il y aurait une différence, mais ce ne serait pas significatif.
la source
J'ai basculé entre Java et .NET, en commençant par Java 1.2 à 1.6, et .NET 1 à 4.0, sur environ 10 ans d'expérience professionnelle (en tant que programmeur C / C ++ auparavant).
À un moment donné, comme .NET 2.0, je dirais que Java et C # seraient à peu près les mêmes, en particulier pour le travail en arrière-plan. Les constructions de langage étaient encore très similaires. .NET aurait probablement pris l'avantage dans la programmation d'interface utilisateur de bureau, à cause du concepteur WinForms de Visual Studio, et Java aurait eu l'avantage dans Web / Server, principalement parce que vous n'étiez pas coincé avec IIS.
Passant maintenant à .NET 3.5 et 4, je donne haut la main à la productivité de .NET. C’est principalement, à mon avis, parce que .NET est une langue qui évolue beaucoup plus rapidement, car MS peut prendre des décisions linguistiques relativement rapidement, au lieu de faire évoluer la politique par le biais du JCP. De grandes améliorations sont le
var
mot - clé, l'ensemble des Linq, Méthodes d' extension, l'opérateur Null-coalescent??
,dynamic
et probablement beaucoup plus grandes choses qui vraiment stimule la productivité.Cela dit, le langage "le plus productif" d'un projet est presque toujours celui avec lequel les développeurs sont le plus à l'aise et le plus expérimenté. La courbe d'apprentissage est toujours le principal facteur de perte de productivité.
la source
Une chose que j’ai remarquée, c’est que de nombreux magasins C # / .NET adoptent une attitude «non inventé ici» et interdisent toutes les bibliothèques tierces / open source, alors que de nombreux magasins Java sont plus disposés à utiliser des bibliothèques open source. De plus, il semble y avoir plus de bibliothèques disponibles pour Java. Même si vous regardez des bibliothèques tierces intéressantes dans .NET, par exemple NHibernate, NPOI, Spring.NET, etc., elles sont des ports des bibliothèques Java et sont donc derrière eux. Il semble bien que bon nombre de ces innovations ont été mises au point pour la première fois en Java, puis un port .NET a été créé. Du point de vue des bibliothèques, il semble bien que Java gagne en termes de nouvelles découvertes innovantes.
Pourtant, Microsoft crée certaines bibliothèques officielles, telles que ASP MVC, LINQ, etc. Mais souvent, comme avec ASP MVC, des bibliothèques tierces telles que Struts, Spring MVC, etc. étaient déjà disponibles pour Java et Microsoft était en retard pour entrer dans le paradigme Web du contrôleur de vue de modèle.
Bien sûr, bon nombre de ces bibliothèques vous permettent d’économiser beaucoup de temps et d’accroître votre productivité. Langage de base à langage de base C # et Java ne sont pas si différents et pour moi, c'est trop proche pour être appelé. Ajoutez à l’armée des bibliothèques tierces et la balance basculera certainement vers Java. Toujours avec un magasin ouvert beaucoup de cette inclinaison s'équilibre. C’est juste que beaucoup de magasins .NET ont l’attitude qui n’a pas été inventée ici, alors que beaucoup de magasins Java ont tout ce qu’il faut pour faire leur travail ... C’est même vrai dans l’entreprise dans laquelle je travaille, l’équipe .NET n’obtient pas grand chose. (pour des raisons de gestion) alors que l’équipe Java dispose de nombreuses bibliothèques / utilitaires tiers approuvés. De plus, avec .NET, de nombreuses autres choses intéressantes ne sont pas gratuites (par exemple, avant de NPOI, si vous vouliez travailler avec des documents Microsoft Office, la plupart des solutions [sans compter la bureautique] n'étaient pas gratuites.
la source
Je me suis souvent posé cette question: quelle est la meilleure? C # ou Java?
Je vais vous donner un conseil et ce conseil est la conclusion de ma recherche: aucun d’entre eux n’est meilleur, seul le langage que vous connaissez bien et vous pouvez faire beaucoup d’applications fascinantes est le meilleur.
Apprenez à programmer et à vous entraîner beaucoup en utilisant une seule langue. Lorsque vous maîtriserez parfaitement le code, réfléchissez à d’autres langues et, croyez-moi, vous apprendrez les autres langues comme un morceau de gâteau.
la source