C # ist eine objektorientierte Hochsprache, die für die Entwicklung von Anwendungen nützlich sein kann.
Es unterstützt Getter / Setter-Konstrukte, Delegaten und echte Generics, was Java nicht tut. C # fühlt sich normalerweise unter Windows "nativer" an, da Windows.Forms und WPF näher an nativem Code als Swing sind. Java ist jedoch plattformübergreifender als C # (obwohl das Projekt "Mono" das ändert)
C # (und andere CLR-Sprachen) haben Aspekte der funktionalen Programmierung (wie Delegaten und Schließungen), die einige Arten von Entwicklungs- und Entwurfsmustern vereinfachen. Siehe diesen Beitrag von Steve Yegge für mehr. Delegierte können den Code viel expressiver und prägnanter gestalten.
Sie sollten beide lernen und jeden von ihnen entsprechend verwenden. Ich habe nicht das Gefühl, dass es "was soll ich lernen?" Art von Frage. (Oder eine "Ich weiß Java, warum sollte ich C # lernen?" Frage.) Dieser Vergleich, dass Welbog veröffentlicht wird Ihnen helfen, zu entscheiden, wenn eine über die andere zu verwenden. Aber ich selbst mag es, beides in meinem Toolkit zu haben.
Syntax: Sie sind beide vernünftige Sprachen - sie unterstützen so ziemlich die gleichen Strukturen und Designs auf hoher Ebene (OO, Kapselung, ...) und sind ziemlich gleich, bis Sie auf die Code-Ebene kommen (was insgesamt kein großer Deal ist) . C # schlägt Java in Features, Java schlägt C # in Einfachheit, denke ich).
Portabilität: Mein größter Faktor war, dass ich in letzter Zeit an Apps für einen Spektrumanalysator und kommende Kabelsysteme gearbeitet habe. Weder wäre in C # remote programmierbar (Sie sind vollständig auf Microsoft angewiesen, um die Laufzeit auf Ihre Plattform zu portieren). Java ist Open Source (es gibt vielleicht noch ein oder zwei kleine Teile, die nicht funktionieren, aber sie arbeiten ernsthaft daran das und es ist genug, dass Sie es portieren und es fast überall verwenden können.
Wenn Sie sich nur für Windows interessieren und die enge und einfache Integration mit Windows nutzen möchten, ist C # die Plattform für Sie.
VM Beide Sprachen enthalten eine "Runtime", die andere Sprachen unterstützen kann - und diese anderen Sprachen haben im Allgemeinen Zugriff auf die (sehr reichhaltigen) Bibliotheken, die in jeder Umgebung bereitgestellt werden.
Microsoft kann ein paar (ein Dutzend) Sprachen auf seiner VM laufen lassen, keines so beeindruckend wie C # (obwohl Ruby und Python gut sein könnten - sind sie noch voll verfügbar)?
Die JVM hat ein paar hundert, einschließlich einiger innovativer experimenteller Sprachen, die oft genauso gut oder besser laufen als ihre einheimischen Gegenstücke. Einige werden als die nächste Generation in der Programmierung angesehen, anders als Java / C #, wie sie von C waren. Ich habe Scala angeschaut, aber ich muss alt werden, es tut mir nur weh, aber ich gebe zu, dass es einige sehr fortgeschrittene Konzepte gibt Dort. Groovy Felsen.
Systemintegration / Werkzeuge: C # gewinnt die Hände, da Java sich nicht auf eine einzige Plattform festlegen kann. C # ist auch sehr gut in Datenbanken und andere externe Abhängigkeiten integriert, Java wird besser integriert, aber die Tools sind etwas unpassender. C # Das gesamte Toolset ist tendenziell sehr integriert, da alles von einem einzigen Anbieter kommt.
Anzahl der verwendeten Plattformen (Anzahl der potenziellen Kunden): Zuletzt hörte ich, Java gewinnt die Hände. Abstieg. Jeder Versuch, herauszufinden, wie viele Telefone, Mikrowellen, Fernseher und Toaster mit Java laufen? Die Zahl stellt jede andere Sprache in den Schatten, so wie ich sie verstehe ...
Der einzige Grund, warum Sie sollten ist, dass Sie
möchtenC # ist ein
Multi-Paradigma-Programmiersprache, die funktionale, imperative, generische, objektorientierte (klassenbasierte) und komponentenorientierte Programmierdisziplinen umfasst
Sie können also viele Tricks aus verschiedenen Paradigmen lernen, alles in einer einzigen Sprache
Der größte Grund, imho, warum ist, weil (für Windows-Desktop-Anwendungen mindestens) Java UI ist sehr hässlich. Fugly hässlich. Erbarmungswürdig hässlich. Hässlich wie das Kind, das du hättest, wenn du deine Schwester imprägnierst.
Wenn Sie auf einem beliebigen Betriebssystem laufen müssen, ist Java die beste Wahl (tho Mono holt auf!). Wenn Sie jedoch für die Windows-Umgebung programmieren, ist C # ein Traum, den Sie programmieren können, und sieht wie jede andere native Anwendung aus.
Sonst würde ich Linq sagen. Und die Fähigkeit, schnell auf Ausnahmen zu scheitern, anstatt überall mit Ausnahmen umgehen zu müssen (so wie wir tatsächlich jede Ausnahme behandeln können). Oh, und Linq wieder. Linq ist so schön ... für mich ... Kannst du nicht sehen?
Mist, vergaß Lambdas. Verdammt, ich liebe Lambdas und all ihre Schließungsgüte.
Einfache Antwort - C # ist die Hauptsprache für die Entwicklung von Micorosft-Anwendungen an dieser Stelle. Das Lernen eröffnet neue Möglichkeiten für die Arbeit mit Microsoft-basierten Anwendungen.
Auch ist es nicht wirklich schwer zu lernen. Nur ein bisschen härter als VB, aber mit viel OO-Power.
Manche Leute würden sagen, C # ist Microsofts Java - eigentlich sehen sie fast identisch aus, nur kleine Unterschiede, aber unterschiedliche Klassenbibliotheken. Wenn Sie Java bereits kennen, sollte C # nicht zu schwer sein.
Ich kann nicht glauben, dass das noch niemand gepostet hat.
Weil es eine Spaß Sprache ist. Ich persönlich halte Java für eine ziemlich fiese Sprache (kann immer noch Spaß machen), aber nicht so angenehm wie C #.
Müssen Sie C # lernen?
Wird sich Ihre Arbeitssituation verbessern?
Willst du etwas Neues lernen?
Ist die Entwicklungsumgebung in C # besser, ist das Werkzeug besser? Denkst du, du kannst etwas in C # machen, was du in Java nicht kannst?
Vielleicht eine generische Sprache für Desktop, Web und Mobile - aber Java hat das auch.
Nur ein paar Fragen, mit denen Sie entscheiden können.
Ich bin selbst C #, begann in Java, als ich mit der Programmierung vertraut wurde. Ich denke Java hat einen fantastischen Job für mich beim Programmieren gemacht, hauptsächlich weil es kein magisches IntelliSense oder Formular-Designer für Windows-Apps gab - wir mussten das ganze verdammte Ding selbst schreiben. Was war gut, wenn du lernst. Aber ich denke, C # und das gesamte .NET / Visual Studio-Ökosystem ermöglicht es Ihnen, produktiver zu sein.
Basierend auf der Frage scheint es, dass Sie nicht daran interessiert sind, es zu lernen, um mehr über Programmierung zu erfahren und nach praktischen Gründen zu suchen.
Aus diesem Grund denke ich nicht, dass Sie sich die Mühe machen sollten, es zu lernen, da es nur ein weiteres Werkzeug sein wird, um dasselbe in Ihrer Toolbox zu erreichen.
Ich mag was Welbog geschrieben hat. Ich würde hinzufügen, dass es auch davon abhängt, wo Sie beruflich sind, Ihre Interessen und Ihre Jobaussichten / Interessen.
Wenn Sie gerade angefangen haben, Java zu lernen, könnte es hilfreich sein, ein wenig C # zu sammeln, um Ihren Programmierhorizont zu erweitern. Die Sprachen sind ähnlich (grob gesagt), aber natürlich gibt es Nuancen, um bei der Programmierung im Vergleich zu anderen die geringste Bedeutung zu haben. Wenn Sie Java für eine Weile programmiert haben, dann sollten Sie vielleicht besser Ihren J2EE-Bereich erweitern oder vielleicht andere unterstützende Bereiche und / oder Sprachen betrachten.
In Bezug auf die Berufsaussichten könnten Unternehmen in Ihrer Umgebung mehr .NET-Entwickler als Java oder umgekehrt einstellen. Vielleicht möchten Sie sich auch die Unternehmen ansehen, für die Sie arbeiten möchten, und sicherstellen, dass Ihre Fähigkeiten übereinstimmen. Wenn Sie zum Beispiel davon geträumt haben, bei einer bestimmten Firma zu arbeiten, die nur JSP verwendet, dann wäre es besser, wenn Sie mit Java arbeiten würden.
Es ist nicht C #, das Sie lernen sollten, sondern .NET Framework und verwandte Technologien. Denke eher J2EE gegen .NET. Warum möchtest du .NET lernen? Es liegt an Ihnen zu entscheiden. Wie Java ist es eine der wenigen großen Entwicklungsplattformen. Es ist funktional, sehr aktiv entwickelt und unterstützt von einer großen Community-Wissensbank.
Für mich ist die Wahl so einfach, wie ich .NET-Bibliotheken verwenden muss, also werde ich C # verwenden oder ich muss Java-Bibliotheken verwenden, damit ich Java verwenden kann. Wenn ich an etwas auf einem Windows-Client arbeite, verwende ich C #. Wenn ich an etwas arbeite, das gegen die P6-Integrations-API laufen muss, verwende ich Java.
Du solltest nicht das Gefühl haben, dass du etwas verpasst oder das eine oder das andere benutzt. Schau dir an, was du zu tun hast und wähle das beste Werkzeug dafür.
Es ist schwierig, alle Funktionen von .NET Framework in einem Beitrag aufzulisten, genauso wie es schwierig wäre, alle in den Java SDK-Bibliotheken enthaltenen Funktionen aufzulisten.
Das Lernen von C #, weil es vielleicht Merkmale hat, die Java nicht hat, scheint ein sehr seltsamer Grund in der Meinung zu sein (es hat eine Reihe von Funktionen, die Java nicht hat, aber auch F #, LISP, Haskel, Ruby, Lua und sogar COBOL).
Sie sollten C # lernen, weil
Es gibt einige syntaktische Zucker Vorteile in .NET wie LINQ oder Eigenschaften. (Ja, Sie haben keine Eigenschaften - ganz zu schweigen von Auto-Eigenschaften - in Java).
Strategisch hilft es, mehrere Sprachen zu kennen, wie einige Nachforschungen zeigen. Derzeit sind PHP, Java und ASP.NET (C #) die am weitesten verbreiteten serverseitigen Programmiertechnologien (siehe Ссылка ). Wenn Sie also alle drei kennen, können Sie Ihr Backend-Engineering-Potenzial nutzen.