Java vs. C#



  • Ich glaub es geht im um die Geschwindigkeit in der man ein Programm erstellt hat, nicht die Ausführungsgeschwindigkeit, weil da glaub ich nicht, dass Delphi gegen Visual C++ gewinnt 🙂



  • Vielleicht sollte man es deutlicher sagen:
    Microsoft wird sich auf jeden Fall durchsetzen, egal mit was und gegen wen. 😉

    @Volkard: Das mit dem Nasenbären nimmst Du zurück! 😃



  • Original erstellt von Erhard Henkes:
    @Volkard: Das mit dem Nasenbären nimmst Du zurück! 😃

    ok.
    Wie viele Jahrhunderte müssen eigetlich noch vergehen, bis alle Nicht-Nasenbären begriffen haben, daß C++ plattformunabhängig ist, während Java und .net eigene Plattformen sind?



  • Original erstellt von kingruedi:
    Ich glaub es geht im um die Geschwindigkeit in der man ein Programm erstellt hat, nicht die Ausführungsgeschwindigkeit, weil da glaub ich nicht, dass Delphi gegen Visual C++ gewinnt 🙂

    Nasenbär.

    Kalt. Ganz kalt.



  • Es existieren mehrere Moeglichkeiten, Plattformunabhaengigkeit zu gewaehrleisten. 😉

    Ein Ansatz geht davon aus, dass es Compiler fuer diverse Programmiersprachen auf jeder Plattform gibt. Das ist z.B. der C/C++-Ansatz. Davon laufen aber noch lange keine "Windows"-Programme.

    Der Ansatz von Java oder C# ist z.B. der Transfer in sogenannten "Bytecode", den dann eine virtuelle Maschine interpretiert. In diesem Fall bedeutet Plattformunabhaengigkeit, dass es auf möglichst vielen Plattformen "Interpreter" gibt. Diese Interpreter sind nicht plattformunabhaengig, da hat Volkard Recht.



  • Original erstellt von volkard:
    ok.
    Wie viele Jahrhunderte müssen eigetlich noch vergehen, bis alle Nicht-Nasenbären begriffen haben, daß C++ plattformunabhängig ist, während Java und .net eigene Plattformen sind?

    Stimmt schon. Die Spezifikationen von Java und der Laufzeitumgebung stehen jedem offen, so daß man es, falls gewünscht, auf jeder Platform portieren kann, genuaso wie man ein Compiler für C++ bauen kann der Binäries für die gewünschte Plattform erzeugt.

    bis dänn, O'Dog



  • Der Ansatz von Java oder C# ist z.B. der Transfer in sogenannten "Bytecode", >den dann eine virtuelle Maschine interpretiert. In diesem Fall bedeutet >Plattformunabhaengigkeit, dass es auf möglichst vielen
    plattformunabhaengig, da hat Volkard Recht.

    Also meines Wissens nach wird C# Code nicht von der .NET Runtime interpretiert.
    C# Code wird ähnlich wie C/C++ Code kompiliert und nur von der Runtime ausgeführt, denn diese übernimmt das komplette Speicher/ und Rechtemanagment.
    Das ist ein entscheidender Vorteil (Geschwindigkeit) gegenüber eines interpretierten Codes, wie in Java.

    MfG
    Schakal



  • Da hast Du was falsch verstanden.

    C# und Java verwenden den gleichen Ansatz, im Gegensatz zu C++.

    Bei C# wird der C#-Code in MSIL übersetzt, das ist eine Art Assemblercode. Dieser Assemblercode wird von der .NET-Maschine während der Ausführung in echten Maschinenanweisungen compiliert und ausgeführt.

    Bei Java wird der Java-Code in den Java-Bytecode übersetzt, was letztlich die gleiche Ebene ist wie MSIL. Der Bytecode wurde früher(!) bei den ersten Virtuellen Maschinen interpretiert und schrittweise in Maschinencode übersetzt und ausgeführt. Das ist aber seit der Einführung von JIT (Just in Time Compiling) Geschichte, seither wird der Java-Bytecode ebenfalls vor Ausführung compiliert und dann ausgeführt.

    Der Hauptunterschied liegt also bei C/C++ <-> C#/Java, bei C/C++ wird compiliert und daraus ein fertiges Programm gemacht, bei C#/Java wird zwischenübersetzt und ein fertiges Programm gemacht, die Compilierung findet kurz vor/während der Ausführung statt.

    Daher liegt das Laufzeitverhalten von C# irgendwo in der Größenordnung von Java, da die gleichen Probleme, aber auch die gleichen Optimierungsmöglichkeiten vorhanden sind.



  • hi,

    jetzt muß auch mal meinen Senf dazugeben.

    Ich habe das ebenfalls so verstanden, das vor der Ausführung eines C#-Programmes kompiliert wird.

    Weiters habe ich den Eindruck, das C# schneller gegenüber Java ist. Wenn man beispielsweise ein einfaches Fenster mit Text "Hallo Welt" startet. Vielleicht weis ja jemand, woran das genau liegt.

    Und drittens, für mich stellt sich weniger die Frage ob Java oder C#, vielmehr C# oder VB.NET. Diese beiden Sprachen haben zuviel gemeinsam (Vollkommene OO, beide verwenden das selbe Framework). Im Detail gibts unterschiede, aber ob genau die es ausmachen?

    Bis auf z.B. Netscape Communicator oder JBuilder kenne ich keine anderen Javaprogramme, aber alleine diese beiden Programme können mit dem Look & Feel von Windows nicht mithalten. Irgendwie langsam und eckig. Und darauf kommt es doch letztendlich an in einer GUI-Anwendung.

    Zum jetztigen Zeitpunkt würde ich Java (J2EE) im Serverbereich platzieren und C# mit .NET in den Client-Anwendungsbereich.

    Und obwohl ich schon viel mit VB (VB6.0) gemacht habe, weis ich nicht, was VB.NET sein soll, bzw. für welchen Bereich es geschaffen wurde.

    grüße
    ms



  • Original erstellt von ms:
    **
    Weiters habe ich den Eindruck, das C# schneller gegenüber Java ist. Wenn man beispielsweise ein einfaches Fenster mit Text "Hallo Welt" startet. Vielleicht weis ja jemand, woran das genau liegt.
    **

    Es ist mir unbegreiflich, warum Leute auf die Geschwindigkeit einer GUI Wert legen. Ich merke es eigentlich garnicht, wenn sich ein Fenster nach 0,05 Sekunden oder nach 0,1 Sekunden öffnet. ...und ich kann da auch keinen größeren Unterschied feststellen.

    Dich stört das Look & Feel von Java? Dann nimm doch einfach ein anderes. Bei Java kannst du mit Swing das Look & Feel während der Laufzeit umstellen. Ich finde das Standard-Java-Look & Feel (Metal Look & Feel) übrigens sehr gut.

    Und darauf kommt es doch letztendlich an in einer GUI- Anwendung.

    Nein! In einer GUI-Anwendung kommt es darauf an, dass der User gut mit der GUI zurechtkommt, dass die GUI übersichtlich ist und leicht und intuitiv zu bedienen ist. Eine GUI ist eine Schnittstelle zwischen Programm und User. Man kann in jeder Sprache gute und schlechte GUIs machen. Java-GUIs haben den Vorteil, dass sie auf unterschiedlichen Platformen gleich sein können. Der User muss sich dann nicht erst an eine andere GUI gewöhnen.



  • Für solche, die keine Programme kennen, die in Java geschrieben wurden.

    • Webgain StructureBuilder
    • Headway reView
    • Together Control Center
    • NetBeans (SunONE formerly Forté for Java)
    • TOPlink (mittlerweile von Oracle)
    • Borland JBuilder
    • Merant PVCS
    • und weitere viele kleine GUI-Clients für Kazaa, Esel, CVS etc. pp

    Nachtrag: Dass der Netscape Communicator in Java entwickelt wurde wäre mir neu.

    [ Dieser Beitrag wurde am 25.09.2002 um 16:40 Uhr von CengizS editiert. ]



  • java und c# zielen genau auf dasselbe marktsegment ab
    java ist nicht als server sprache konzipiert worden und es gibt viele gute programme die in java geschrieben wurden
    es wird nur mehr im server bereich verwendet

    C# wiederrum ist die ms initiative ein verbessertes java zu nutzen um von anderer leute ideen zu profitieren
    was ja auch nix neues ist und was mich auch nicht wirklich aufregt

    .NET wiederum ist etwas was fuer mich entscheidende vorteile gegenueber java hat
    weil es sehr wahrscheinlich schneller sein wird als java --- NICHT JETZT -- aber ab der naechsten version von windows
    schliesslich wissen die entwickler dort wie das OS aufgebaut ist und sie werden .NET sicherlich in das OS integerieren

    das ist es

    cu

    gomberl



  • Original erstellt von gomberl:
    **
    .NET wiederum ist etwas was fuer mich entscheidende vorteile gegenueber java hat
    weil es sehr wahrscheinlich schneller sein wird als java --- NICHT JETZT -- aber ab der naechsten version von windows
    schliesslich wissen die entwickler dort wie das OS aufgebaut ist und sie werden .NET sicherlich in das OS integerieren
    **

    Ich denke, man darf einen Vergleich zwischen Java und C# nicht auf Windows beschränken. Wenn man das macht, dann misachtet man einen Hauptvorteil von Java. Nämlich die Platformunabhängigkeit, die so bei C# (?noch?) nicht gegeben ist. Wenn man nur eine Platform betrachtet, dann sollte man die entsprechende Sprache mit C++ vergleichen. Was bringt denn eine Zwischensprache, wie MSIL oder Java-Bytecode, wenn ein Programm dadurch nicht auf unterschiedlichen Platformen problemlos ausgeführt werden kann?



  • @Gregor:

    Mit dem Look geb ich dir recht, kann man ein anderes nehmen.
    Bei dem Feel lege ich schon viel Wert darauf, das es halbwegs schnell geht.
    Falls du schon mal den JBuilder vor dir gehabt hast und damit länger gearbeitet hast, dann ist es bestimmt auch dir aufgefallen, das alles ein bisserl eckiger läuft. Mag sein das es dich nicht stört, mir ist es jedenfalls unangenehm aufgefallen. Übrigens programmiere ich viel und gerne in Java.

    @CengizS: Ich korrigiere mich, Netscape´s open-source clone ist in Java geschrieben.

    grüße
    ms



  • @ms
    quatsch das Mozilla Projekt basiert auf den Original Netscape Sourcen und hat diese weiterentwickelt (nunr basiert Netscape auf Mozilla :)) und Netscape/Mozilla sind AFAIK in C++ geschrieben.

    Zur Zeit hat dotNET aber einfach noch zu viele Mängel. Zwar gibt es ECMA Standards für C# und CIL (auch MSIL genannt), aber an höheren System Librarys mangelt es, zwar bietet MS Visual dotNET WinForms an, diese sind aber nicht standardisiert und wurden auch nicht in dotGNU oder Mono eingebaut. MS ist anscheinend auch nicht bemüht diese Dinge von der ECMA standardisieren zu lassen. GTK# ist hier wohl die einzige Alternative.

    Java hat unterdessen unmengen an Dingen zu Verfügung für GUI, Netzwerk, Sound etc.

    Außerdem ist das mit dem mischen von den Programmiersprachen zZ. noch Zukunftsmusik, zwar gibt es schon verschiedene Compiler für dotNET, aber viele sind noch beta, neu (C#) oder zu weit von den Original Sprachen entfernt um irgend einen nutzen zu bringen (C++,VB).

    Ich denke für wirkliche Entwicklung kann man dotNET erst in 2-3 Jahren in betracht ziehen, wenn es die Kinderkrankheiten hinter sich hat und vor allem die dotNET Platform mehr verbreitung hat und auf mehr Systemen läuft.



  • Möchte nochmal C# mit VB.NET vergleichen. Seht ihr das genauso wie ich, das VB.NET neben C# überflüssig geworden ist? Oder gibt es grundsätzliche Problemstellungen, bei denen man mit VB.NET einfacher oder besser gegenüber C# bedient ist?

    grüße
    ms

    Wo hab ich blos diesen Schwachsinn mit "Netscape in Java geschrieben" her?



  • Original erstellt von ms:
    @CengizS: Ich korrigiere mich, Netscape´s open-source clone ist in Java geschrieben.

    War es nicht viel eher so, daß IBM ein Betriebssystem in Java gebaut hat und wegen des großen Erfolges seitdem alle Projekte in Java macht?
    Natürlich wird der nächste große Browser von IBM auch in Java sein. Aber ich bezweifle, daß der Freeware sein wird.



  • Original erstellt von ms:
    **Möchte nochmal C# mit VB.NET vergleichen. Seht ihr das genauso wie ich, das VB.NET neben C# überflüssig geworden ist? Oder gibt es grundsätzliche Problemstellungen, bei denen man mit VB.NET einfacher oder besser gegenüber C# bedient ist?
    **

    VB.NET hat Microsoft wohl entwickelt, um auch ein paar VB-Programmierer nach .NET zu holen.



  • @volkard
    so weit ich weiss, hat nur SUN mal ein OS auf Java Basis geschrieben und auf Thinclients eingesetzt.

    Etwas von einem IBM OS auf Java Basis wär mir neu.

    Genauso wie Pläne von IBM einen Browser zu schreiben 😉



  • Von den angeblichen IBM-Projekten habe ich auch noch nichts gehört, aber egal.

    C# ist rein von der Sprache her Java überlegen. Da ich Mirco$oft hasser bin verwende ich es trotzdem nicht. Ich habe sowieso das gefühl, das kaum einer zu C# migriert, da es den großen Vorteil von Java nicht bringt und wenn ich plattformspezifisch programmiere mit C++ plus spezielle Bibliotheken besser beraten bin.

    @Kingruendi:
    Du scheinst Delphi/Object Pascal nicht sonderlich zu mögen. OK einige Konstrukte, wie diese seltsamen Sets oder auch schon die einfache For-Schleife stören mich ein wenig, aber ansonsten ist es eine vernüpftige und vor allem leicht zu erlernende Sprache, die zudem extrem schnellen Code erstellt.


Anmelden zum Antworten