Gegenüberstellung von C# und Java



  • Zeus schrieb:

    Eine Java GUI hat der Vorteil, dass sie auf allen System läuft, dies wird dadurch gewährleistet, dass in Swing die GUI selbst gezeichnet werden.
    .NET-GUI kapseln nur die Win32-API sind also nicht wirklich platformunabhänig, aber dafür wirklich subjektiv schneller.

    Dazu kann man noch ergänzen, dass es mit Hilfe von SWT auch in Java möglich ist, native GUI Komponenten zu verwenden. Die Eclipse IDE ist wohl die populärste Anwendung mit SWT-GUI.



  • Pellaeon schrieb:

    In Java hast du für die GUI Swing. Zu .NET im Allgemeinen gibts nen schönen Artikel hier im Foren-C++ Magazin.

    Performancemäßig wird es sich nicht viel geben, Java interpretiert den Byte-Code.
    .NET erstellt Maschinencode aus der CLI. Insofern könnte C# da leicht besser sein.

    Ist sicherlich nicht repräsentativ, aber ich hatte mal Just for Fun einen primitiven Mini-Benchmark gemacht: Millionen Strings in einen Vector schieben und dann sortieren lassen. Aber Java 1.5 und C# unter .NET 1.1 waren beide (komischerweise) auf die Sekunde genau gleich langsam, nämlich auf meinem PC jeweils 19 Sek. Unter C++, waren es 4 Sek. (ich hatte std::string, std::vector und std::sort genutzt).

    Also Java und C# nehmen sich im Prinzip nicht viel.



  • Zeus schrieb:

    Perfomance
    Die Sprache selbst ist nicht mäßgeblich dafür, hier sollte man die verwedetet Technologie ansehen.
    ...
    Im reinen mathematische Berechnung nehmen sich die Sprache nicht viel.

    Die Sprache impliziert aber einen Compiler. C++/CLI-Code ist z.B. schneller als C#-Code, obwohl beides Managed Code in der .NET-Runtime ist.



  • Teilnehmer` schrieb:

    Jetzt wurden allerdings noch immer OpenSource IDEs (Eclipse, Netbeans) ausser Acht gelassen, bei denen selbst Visual Studio 2005 noch einiges lernen könnte (z.B: ist es ja ein Unding, dass Unit-Testing erst mit der 2005er Team Suite Edition sozusagen "built-in" verfügbar ist).

    Naja, was können denn die Testtools in Eclipse und Netbeans so besonderes? JUnit ist ziemlich einfach gestrickt und besitzt Basic-Features. Diese kann ich auch mit CppUnit oder Boost Test Tools ebenfalls kostenlos in VC++ 2005 mitbenutzen.

    Die Frage ist: was kann das Testtool von der Team Suite Edition.



  • .NET hat keine GUI. Microsoft hat bei ihrer Implementierung die WinForms. Bei anderen Implementierungen benutzt man wohl eher GTK#.

    Pellaeon schrieb:

    Performancemäßig wird es sich nicht viel geben, Java interpretiert den Byte-Code.
    .NET erstellt Maschinencode aus der CLI. Insofern könnte C# da leicht besser sein.

    Java macht genau so eine "JIT" (Just In Time) kompilierung, wie .NET.



  • Artchi schrieb:

    Ist sicherlich nicht repräsentativ, aber ich hatte mal Just for Fun einen primitiven Mini-Benchmark gemacht: Millionen Strings in einen Vector schieben und dann sortieren lassen. Aber Java 1.5 und C# unter .NET 1.1 waren beide (komischerweise) auf die Sekunde genau gleich langsam, nämlich auf meinem PC jeweils 19 Sek. Unter C++, waren es 4 Sek. (ich hatte std::string, std::vector und std::sort genutzt).

    Das ist nicht nur nicht repräsentativ, Du verschweigst dabei auch noch, dass unterschiedliches geleistet wird.

    1. Strings in Java und std::string in C++ sind etwas unterschiedliches. Vor allem sind sie unterschiedlich groß. In Java hast Du 16-Bit Unicode-Zeichen in den Strings, in C++ normalerweise nur ein 8-Bit-char. Mit anderen Worten: Die Daten sind in Java doppelt so groß, sind aber auch für mehr Dinge nutzbar.

    2. std::vector in C++ und java.util.Vector in Java sind nicht das gleiche. Wo ist in der C++ Variante zum Beispiel die Threadsicherheit? Warum nimmst Du dann in Java nicht ne ArrayList?

    Naja, lassen wir das. ...solche Threads hatten wir schon zur Genüge.



  • Collections#sort() in Java garantiert ne Laufzeit von n*log(n). Ich denke, beim Laufzeitverhalten der Sortieralgorithmen werden sich die Sprachen nichts nehmen. Wer schlechte Resultate erzielt, der hat womöglich was falsch gemacht (siehe Gregor). 😉



  • @Pellaeon:
    Den Artikel im Magazin kenne und nutze ich bereits. Trotzdem Danke. 🙂

    @Rest:
    Danke für die rege Beteiligung. Habt ihr denn auch Links zu Infoquellen? Momentan gehe ich die MSDN durch. Was wäre denn eine gute Anlaufstelle für Java?



  • Naja, was können denn die Testtools in Eclipse und Netbeans so besonderes? JUnit ist ziemlich einfach gestrickt und besitzt Basic-Features. Diese kann ich auch mit CppUnit oder Boost Test Tools ebenfalls kostenlos in VC++ 2005 mitbenutzen.

    Diese Antwort war ja sowas von klar. Es ist ja quasi schon ein Naturgesetz, dass bei einer Diskussion bezüglich Java und C# du unbedingt auch C++ ins Spiel bringen musst. Es interessiert hier (grob gesagt) einfach kein Schwein was ich wo verbiegen muss um auch in VC++ etwas zu testen. Aber nachdem ich sowieso weiß, dass du dir das nicht abgewöhnen kannst, versuch doch einfach angebrachte Argumente zu bringen, denn wo sind all die DbUnit und HttpUnits, bzw. Clovers für C++? ...

    @Rest:
    Danke für die rege Beteiligung. Habt ihr denn auch Links zu Infoquellen? Momentan gehe ich die MSDN durch. Was wäre denn eine gute Anlaufstelle für Java?

    z.B: http://www.theserverside.com/tt/articles/article.tss?l=J2EE-vs-DOTNET



  • Danke! Genau sowas hab ich gesucht. 🙂


Anmelden zum Antworten