Java vs. C#
-
Das neue .net wird Win32-API ersetzen. Eine auf .net basierende Windowsversion (Windows .net), wird ca. 2004 auf dem Markt sein.
Das .net Framework SDK gibt es nicht für Win95 / Win98/ Win98SE / WinMe.
Man kann jedoch die .net-Laufzeitumgebung (ist im SDK enthalten) auch auf Win98(SE) und WinMe laufen lassen (nicht auf Win95).
Anhänger von Win98, WinAPI und MFC werden daher aufgrund der Sprachen- und Plattformunabhängigkeit zur Umorientierung (und Geldausgabe) gezwungen!
.net wird analog Java auch auf Linux und MacOS laufen. Man kann Sprachen wie VB, C++ und C# teilweise mischen.
Auf Dauer wird sich in der Breite aber sicherlich C# durchsetzen, da es "Java-ähnlich" ist.
[ Dieser Beitrag wurde am 25.08.2002 um 17:42 Uhr von Erhard Henkes editiert. ]
-
Plattformunabhängigkeit
*grml*
-
Wie meinen?
-
Platformunabhängigkeit ist bis jetzt nur versprochen, wirkliche Platform unabhängigkeit gibt es nicht.
-
Wie viele Jahrhunderte müssen eigetlich noch vergehen, bis alle Nasenbären begriffen haben, daß C++ plattformunabhängig ist, während Java und .net eigene Plattformen sind?
[ Dieser Beitrag wurde am 27.08.2002 um 12:12 Uhr von volkard editiert. ]
-
Ich würde es noch etwas genauer fassen, der Vergleich von Java und C# hinkt ebenfalls, da Java die Sprache + Plattform umfasst, während C# nur die Sprache ist. Bei Java müßte man noch mal nach Java und Java VM auftrennen, um den Vergleich mit der .net-Plattform hinzubekommen.
Aber wer würde so genau sein? Ich geh' jetzt erst Mal eine Runde Delphi programmieren, Visual C++ ist mir nicht schnell genug.
-
Original erstellt von Marc++us:
Ich geh' jetzt erst Mal eine Runde Delphi programmieren, Visual C++ ist mir nicht schnell genug.Hol dir den Intel C++ *fg*
-
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++ gewinntNasenbä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 verwendetC# 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 integerierendas 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?