Aujourd'hui, j'ai posté une question demandant quel langage C # ou Java serait préférable pour moi d'étudier. J'ai eu d'excellentes réponses. Une chose est apparue: peut-être que Java est maintenant plutôt derrière C # avec de nouvelles fonctionnalités. J'ai vu quelques liens Web et la plupart ont souligné ce que C # avait et ce que Java n'avait pas.
Donc, ma question est la suivante: Java rattrapera-t-il à nouveau C #? Et si vous deviez deviner où cela en serait dans 5 ans. Aurait-il toutes les choses qui manquent peut-être maintenant? Et Java 7?
)
, merci beaucoup.Réponses:
Les fonctionnalités du langage sont une très petite partie de ce qui fait fonctionner Java et C #. En fin de compte, ce sont des parties de plus grands écosystèmes J2EE et .NET.
Les deux ont leurs propres forces et devraient grossir au cours des 5 prochaines années.
la source
J'aurais dit oui jusqu'à ce qu'Oracle entre en scène. Ce qui est triste, car j'ai vraiment apprécié le bond en avant des fonctionnalités que Java et C # avaient au cours des six dernières années.
la source
En tant que langage, je ne développe pas Java pour ajouter de l'innovation à un rythme significatif, principalement parce que ceux de la communauté open source qui sont à la pointe sont plus susceptibles de se concentrer sur les nouveaux langages JVM, tels que Scala, Clojure, Groovy, JRuby et JPython.
De plus, l'engagement de Java envers la compatibilité descendante signifie que l'ajout de fonctionnalités de langue est intrinsèquement plus difficile que dans les premiers jours de la langue.
la source
Le grand point d'interrogation ici est Oracle. Sun a vraiment ralenti les choses pour Java au cours des 50 dernières années. L'espoir de nombreux membres de la communauté Java était que Sun détruirait Java ou le vendrait à quelqu'un qui mettrait beaucoup de ressources et d'efforts. Alors qu'Oracle pourrait certainement le faire, c'est une grande entreprise avec beaucoup de groupes avec leurs propres intérêts. Je suppose, et c'est juste que, une supposition, c'est qu'Oracle laissera Java stagner et l'utilisera principalement comme un outil pour les poursuites en matière de brevets.
Peut-être qu'ils le vendront à Google pour une grosse somme d'argent et tout le monde sera content. Il est entre les mains des conseils d'administration et des avocats plutôt que des ingénieurs et des concepteurs de logiciels.
Du bon côté des choses, même sans améliorations, Java est un bon langage et a un bel écosystème autour de lui. Bien que je préfère personnellement C # et le monde .net, Java est toujours un excellent choix. À l'avenir, le temps nous le dira, mais pour l'instant, Java n'est pas du tout mauvais. (Les bibliothèques de date et d'heure sont exclues ... wow, sont-elles toujours laides et désordonnées)
la source
Il n'y a rien à rattraper, donc la question n'a aucun sens.
Le fait que Java ne reproduise pas exactement C # ne signifie pas qu'il est "inférieur" d'une certaine manière, c'est juste différent. Autant vous demander quand C # "rattrapera" Cobol.
la source
La question de savoir si C # ou Java est en avance sur l'autre est à débattre, mais au lieu de me concentrer sur les fonctionnalités du langage de l'un ou de l'autre, je préfère me concentrer sur ce qui est impliqué dans l' évolution d' un langage. C'est un fait que je ne pense pas que quiconque argumentera: Java est plus ancien que C #.
Problèmes de modification du fonctionnement d'une langue:
Alors, C # a-t-il plus de fonctionnalités de langage que Java? Je le pense. Sont-ils utiles? Je le pense. Est-ce à dire que C # est meilleur ou plus mature que Java? Je suis en désaccord avec cela. Ils sont différents, simples et simples. Java n'aura jamais toutes les fonctionnalités de C # comme C # n'aura jamais toutes les fonctionnalités de Java.
L'une des fonctionnalités de Java, la possibilité d'écrire un programme sur Windows et de le déployer sur Unix ou Mac, ne se produira jamais directement par le support de Microsoft. Pourquoi demandes-tu? Ce n'est pas parce que Microsoft est mauvais (que ce soit vrai ou non, je m'en fiche). C'est parce qu'ils ont appris une leçon que Sun n'a jamais faite: écrire une fois exécuté n'importe où banalise les systèmes d'exploitation et le matériel. Si vous vous souciez de gagner de l'argent grâce aux ventes de votre système d'exploitation, vous ne voulez pas que cela soit trivial d'échanger et de faire fonctionner une application. Si vous avez fait cela, vous ne pouvez pas tirer de profit du système d'exploitation car il y a toujours des options moins chères.
la source
Java n'a pas vraiment besoin de nouvelles "fonctionnalités" pas plus que C ou C ++. C'est un langage bien conçu pour le développement orienté objet. Les ajouts qui peuvent être apportés concernent la création de bibliothèques pour effectuer un large éventail de tâches. Il en va de même pour C # - la plupart des fonctionnalités sont ajoutées pour que le langage fasse plus de choses. Personnellement, je pense que la plupart de ces fonctionnalités ne sont pas nécessaires - les pointeurs dans OO sont vraiment tellement fluff sauf si vous travaillez au niveau matériel (auquel cas il est probablement préférable d'utiliser quelque chose comme C). En outre, l'exécution dans une machine virtuelle est censée rendre l'accès direct au matériel difficile, voire impossible.
Unix a lancé la tendance de créer des modules qui font très bien une chose. Je pense que les deux # Java et C sont un peu hors de la main sur le fluage caractéristique. Il vaut mieux créer un noyau facilement extensible qu'un "langage" polyvalent géant qui ressemble plus à un framework. Pour moi , Java répond mieux à cette exigence que C #.
la source
Il n'y a rien de mal avec la plupart des fonctionnalités que C # ajoute, mais étant donné la vitesse à laquelle ils changent le langage, ils rendent consciemment difficile, voire impossible, pour Mono de suivre. Si oui, alors je dis que nous attendons que C # rattrape Java en termes de gamme de systèmes sur lesquels il peut se déployer. Il ne suffit pas de simplement exécuter Windows.
la source
Je ne vais pas lancer un forum de discussion, mais je pense que Java était là bien avant C # et d'ailleurs C # ressemble plus à une réplication qu'à java.
Quant à répondre à votre question: Java et C # sont des langages différents, vous ne pouvez donc pas les comparer uniquement par leurs fonctionnalités. Ce que vous pouvez faire en Java, vous ne pouvez pas le faire en C # et vice versa.
Donc, finalement, c'est comme démarrer un sujet Windows vs Linux.
la source