Vergleichen von C # und Java

7

Ich habe Java in der Schule gelernt, und dann wurde ich von einem C # -Shop eingestellt und habe das seitdem benutzt. In der ersten Woche erkannte ich, dass die beiden Sprachen fast identisch waren, und die nächsten zwei Monate, um die kleinen Unterschiede herauszufinden. Meistens bemerkte ich die Dinge, die Java hatte, dass C # nicht, und war daher meistens frustriert. (Beispiel: Enum-Typen, die vollwertige Klassen sind, nicht nur ganze Zahlen mit einem frischen Anstrich) Seitdem habe ich die C # -Welt schätzen gelernt, aber ich kann nicht behaupten, dass ich Java gut genug kannte, um die beiden wirklich zu kontrastieren bin gespannt auf einen Community-Querschnitt.

Was sind die relativen Vorteile und Schwächen von C # und Java? Dies umfasst alles von der Sprachstruktur bis hin zu verfügbaren IDEs und Server-Software.

    
The Digital Gabeg 18.09.2008, 21:31
quelle

9 Antworten

8

Vergleichen und kontrastieren Sie die Sprachen zwischen den beiden kann ziemlich schwierig sein, da es in vielerlei Hinsicht ist die assoziierte Bibliotheken, die Sie in Verbindung mit der Sprache, die am besten zeigt die verschiedenen Vorteile der anderen.

Ich werde also versuchen, so viele Dinge aufzulisten, an die ich mich erinnern kann oder die bereits veröffentlicht wurden, und notiere, wer davon überzeugt ist, dass er den Vorteil hat:

  1. GUI-Entwicklung (dick oder dünn). C # kombiniert mit .NET ist derzeit die bessere Wahl.
  2. Automatisierte Datenquellenbindung C # hat eine starke Führungsposition mit LINQ, auch eine Fülle von 3rd-Part-Libraries bietet die Kante
  3. SQL-Verbindungen. Java
  4. Auto-Boxen. Beide Sprachen stellen es zur Verfügung, aber C # Properties bietet ein besseres Design für Setter und Getter
  5. Anmerkung / Attribute. C # -Attribute sind eine stärkere und klarere Implementierung
  6. Speicherverwaltung - Java VM in allen Tests, die ich gemacht habe, ist CLR
  7. weit überlegen
  8. Garbage Collection - Java ist ein weiterer klarer Gewinner hier. Nicht gemanagter Code mit dem C # / .NET-Framework macht dies zu einem Albtraum, besonders wenn Sie mit GUI arbeiten.
  9. Generics - Ich glaube, dass die beiden Sprachen hier im Grunde genommen miteinander verbunden sind ... Ich habe gute Punkte gesehen, die zeigen, dass beide Seiten besser sind. Mein Bauchgefühl ist, dass Java besser ist, aber keine Logik, auf der es basieren könnte. Ich habe auch C # Generics ALLOT und Java Generics nur ein paar Mal verwendet ...
  10. Aufzählungen. Java die ganze Zeit, C # Implementierung ist so weit wie ich bin besorgt.
  11. XML - Toss hier hoch. Die XML- und Serialisierungsfähigkeiten, die Sie mit .NET erhalten, schlagen nativ mit dem, was Sie mit eclipse / Java erhalten, sofort nach. Aber es gibt viele Bibliotheken für beide Produkte, die mit XML helfen können ... Ich habe ein paar ausprobiert und war nie wirklich glücklich mit ihnen. Ich bin mit nativem C # XML in Verbindung mit einigen benutzerdefinierten Bibliotheken geblieben, die ich selbst gemacht habe, und ich bin daran gewöhnt, so schwer, dies zu diesem Zeitpunkt einen weit Vergleich zu geben ...
  12. IDE - Eclipse ist besser als Visual Studio für nicht-GUI Arbeit. So gewinnt Java für Nicht-GUI- und Visual Studio-Gewinne für GUI ...

Das sind alles, worüber ich im Moment nicht nachdenken kann ... Ich bin mir sicher, dass Sie im wahrsten Sinne des Wortes Hunderte von Gegenständen aussuchen können, um sie zu vergleichen und zu kontrastieren. Hoffentlich ist diese Liste ein Querschnitt der häufiger verwendeten Funktionen ...

    
Shire 18.09.2008, 21:52
quelle
6

Ist das nicht schon zu Tode geschehen? Am Ende des Tages sind nicht die Werkzeuge wichtig, sondern das, was man mit ihnen macht.

    
Akshay 18.09.2008 21:34
quelle
4

Ein Unterschied ist, dass C # besser mit Windows arbeiten kann. Der Nachteil davon ist, dass es nicht gut mit etwas aber Windows funktioniert (außer vielleicht mit Mono , die ich nicht versucht habe).

    
Michael Myers 18.09.2008 21:36
quelle
2

Eine weitere Sache, die Sie beachten sollten, ist, dass Sie vielleicht auch ihre jeweiligen VMs vergleichen möchten.

Wenn Sie die CLR- und Java-VM vergleichen, erhalten Sie eine weitere Möglichkeit, zwischen den beiden zu unterscheiden.

Wenn zum Beispiel viel Multithreading ausgeführt wird, verfügt die Java-VM über ein stärkeres Speichermodell als die CLR (Entsprechung von .NET).

    
therealhoff 18.09.2008 21:33
quelle
2

C # hat eine bessere GUI mit WPF, etwas, das Java traditionell schlecht gemacht hat.

C # hat LINQ, was ziemlich gut ist.

Sonst sind die 2 praktisch gleich - wie denken Sie, dass sie eine so große Klassenbibliothek so schnell erstellt haben, als .NET zum ersten Mal herauskam? Seitdem haben sich die Dinge leicht geändert, aber im Grunde könnte C # MS-Java heißen.

    
gbjbaanb 18.09.2008 21:36
quelle
1

Nimm das nicht als eine Meinung, aber persönlich kann ich Java's GUI nicht ertragen. Es ist nur nahe genug an Windows, aber nicht ganz, so dass es in ein unheimliches Talgebiet kommt, in dem es mich wirklich aufregt.

C # (und andere .Net-Sprachen, nehme ich an) erlauben mir, Programme zu machen, die perfekt in Windows passen, und das macht mich glücklich.

Natürlich ist es müßig, wenn wir nicht über die Entwicklung einer Desktop-Anwendung sprechen ...

    
Asmor 18.09.2008 21:36
quelle
0

Java:

  • Enums in Java kickt so viel Arsch, es ist nicht einmal lustig.
  • Java unterstützt generische Varianz

C #:

  • C # ist nicht länger auf Windows (Mono) beschränkt.
  • Das Fehlen des Schlüsselwortes intern in Java ist eher enttäuschend.
MagicKat 18.09.2008 21:44
quelle
0

Du hast gesagt:

  

enum Typen, die vollwertige Klassen sind, nicht nur ganze Zahlen mit einem frischen Anstrich

Haben Sie sich die Ausgabe tatsächlich angesehen? Wenn Sie eine Anwendung mit Enums in in kompilieren, dann lesen Sie die CIL, Sie werden sehen, dass eine Enum ist eine versiegelte Klasse von System.Enum.

Werkzeuge wie der Reflektor von Red-Gate (ehemals Lutz Roeder) werden es so nah wie möglich an der ursprünglichen C # zerlegen, so dass es nicht leicht erkennbar ist, was tatsächlich unter der Haube passiert.

    
Colin Mackay 18.09.2008 21:47
quelle
0

Wie Elizabeth Barrett Browning sagte: Wie kann ich dich lieben? Lass mich die Wege zählen.

Bitte entschuldigen Sie den qualitativen (vs. quantitativen) Aspekt dieses Posts.

Der Vergleich dieser beiden Sprachen (und der zugehörigen Laufzeiten) ist sehr schwierig. Vergleiche können auf vielen Ebenen erfolgen und konzentrieren sich auf viele verschiedene Aspekte (wie die in früheren Beiträgen erwähnte GUI-Entwicklung). Präferenz zwischen ihnen ist oft persönlich und nicht nur technisch.

C # basierte ursprünglich auf Java (und der CLR auf der JRE), aber IMHO ist im Allgemeinen in seinen Funktionen, seiner Aussagekraft und seinem möglichen Nutzen über Java hinausgegangen. Da C # von einem Unternehmen kontrolliert wird (gegen ein Komitee), kann C # schneller voranschreiten als Java. Die Unterschiede Ebbe und Flut über Releases mit Java spielen oft aufholen (wie zB die kürzliche Hinzufügung von Lambdas zu Java, die C # schon lange hatte). Keine der beiden Sprachen ist in allen Aspekten eine Supermenge des anderen, da beide Merkmale (und Schwächen) haben, die dem anderen fehlen.

Ein detaillierter Vergleich von Seite zu Seite würde wahrscheinlich mehrere 100 Seiten erfordern. Aber mein Netz ist, dass sie für die meisten modernen geschäftsbezogenen Programmieraufgaben in Leistung und Nutzen ähnlich sind. Der wichtigste Unterschied liegt wahrscheinlich in der Portabilität. Java läuft auf fast allen gängigen Plattformen, auf denen C # meist nur auf Windows-basierten Plattformen läuft (wobei Mono ignoriert wird, was bisher nicht sehr erfolgreich war). Java hat aufgrund seiner Portabilität wohl eine größere Entwickler-Community und somit mehr Unterstützung für Bibliotheken und Frameworks von Drittanbietern.

Wenn Sie das Gefühl haben, zwischen ihnen zu wählen, ist Ihr Interessensgebiet das beste Kriterium. Wenn Ihre gesamte Arbeit nur auf Windows-Systemen läuft, ist IMHO C # / CLR mit seiner reicheren Sprache und seiner Fähigkeit, direkt mit den nativen Windows-APIs zu interagieren, ein klarer Gewinner. Wenn Sie eine Systemübergreifende Portabilität benötigen, ist Java / JRE ein klarer Gewinner.

PS. Wenn Sie mehr portable Jobs Fähigkeiten benötigen, dann ist IMHO Java auch ein Gewinner.

    
Barry Feigenbaum 05.07.2015 17:23
quelle

Tags und Links