C# vs. Java

Status
Nicht offen für weitere Antworten.

SirGawain

Grünschnabel
Hi,

Ich will mir eine neue Programmiersprache aneignen, und schwanke im Moment zwischen Java und C#.

Wo liegen die Vor- und Nachteile von Java/C#?

Welche der beiden ist Zukunftsorientierter? Mit welcher kann man denn besser Spiele programmieren (was ich nämlich u.a. auch vorhabe).

Und braucht man für einer der Sprachen irgendetwas, das kostet? Z.B. ein Programm, welches ich mir erst kaufen muss, damit die Sprache überhaupt auf meinem Rechner rennt, etc.?
Oder kann ich es ganz kostenfrei programmieren, und die Programme benutzen?

Achja, und bitte bewertet alles Objektiv, also nicht sagen, dass weil euch der Name "Java" besser gefällt, ihr mir diese auch empfiehlt :)

mfg gawain
 
Ich würde dir persönlich Java empfehlen, ist eine sehr gute Sprache.
C# ist wieder so eine Sache, von Microsoft eingeführt, ähnelt Java "rein zufällig" etwas ;)
C# ist zwar auch plattformunabhängig, jedoch bietet Microsoft dafür dann wieder bestimmte packages an, die nur auf Windows laufen etc. (wenn jetz irgendwas, was ich über C# gesagt hab, nicht stimmt, nicht hauen ;))
Ich programmiere gerade selber ein Spiel in Java, das geht auch sehr gut, nur muss man halt auf die Performance achten, weil das ganze über die JVM läuft und daher nicht mit der Performance von nativen Sprachen wie C++ mithalten kann. Dafür ist es aber komfortabler, die Spiellogik damit zu machen. Der Egoshooter "Chrome" wurde z.B. bis auf die Grafik mit Java gemacht.
Für Spieleprogrammierung mit Java empfehle ich dir die Seite http://fivedots.coe.psu.ac.th/~ad/jg/, allerdings erst, wenn du mit den Grundlagen vertraut bist. Dafür gibts dann das hier: http://www.dpunkt.de/java/index.html
Als Entwicklungsumgebung gibt es kostenlos eine von Sun (ka wie die heißt, sry ;)) und den Borland JBuilderX Foundation.
Außerdem hast du bei Java den Vorteil einer recht großen Community und der Portabilität von Klassen, soll heißen, es gibt viele Problemstellungen, die andere schon gelöst haben und diese Lösungen dann auch zum Download anbieten.
 
Zuletzt bearbeitet:
C# ist eigentlich nicht Plattformunabhängig, da es auf dem .NET-Framework aufbaut, welches nur für Windows zu haben ist. Es gibt allerdings eine Gruppe von Leuten, die sich darangemacht haben. Das Framework auf Linux zu portieren (mono Projekt).

In C# ist es recht bequem möglich mit DirectX9 zu programmieren.
Allerdings baut es, auch wie Java, auf ein Framework auf und ist somit auch nicht so schnell wie C++.

Für Pacman sollte es allerding reichen. Ich weiss nicht, wie es bei Java mit DirectX aussieht, aber wenn du kein DirectX willst, denke ich, dass Java die bessere Wahl ist.
 
Jetzt geht das schon wieder los .. gibt unzählige Threads dazu.

Grafikprogrammierung ist mit C# absolut kein Problem. Und vermutlich sogar einfacher unter Windows als mit Java. Willst spiele verkaufen, sollten diese wohl eher auf Windows laufen und da spricht Java schon mal dagegen.

DirectX mit C# ist kein Problem. Dann gibts da noch das GDI+ welches recht mächtig ist, immerhin visualisiert Windows damit so ziemlich alles.

Von der Sprache her ists eigentlich egal. Sind beide sehr ähnlich und gleich zu lernen. Für Java hast viele freie Tools, die das Programmieren ein wenig erleichtern, dafür gibts keine GUI, die an Visual Studio rankommt (nein, IDEA nicht und Eclipse auch nicht).

Du solltest Dir vielleicht überlegen, für welche Plattform Du hauptsächlich entwickeln möchtest. Ist es Windows, dann nimm C#, ist es Linux/Unix/etc. und willst Du plattformunabhängig sein, dann Java. Wobei die Plattformunabhängigkeit auch so eine Sache ist .. da musst auch wieder aufpassen, welche Klassen Du verwendest und vor allem gestaltet sich die Grafikprogrammierung unter Linux (Treiber bla bla bla) ein wenig anders als unter Windows. Wirst also vermutlich eh zweimal schreiben müssen, wenns was gscheites werden soll. Bei Pacman is egal :)

Nitro

PS: Ich muss auch dazusagen, dass Du ausser Deinem Windows für C# auch nicht mehr brauchst. Für C# gibt es mittlerweile auch kostenlose Entwicklungsumgebungen etc. Das Framework sowie das SDK sind ohnehin gratis. SharpDevelop zum Beispiel. Ausserdem gibts von Microsoft-Mitarbeitern, den User-Groups etc. große Anstrengungen, da noch ein wenig mehr Leben hineinzubekommen. Die Kosten sollten also hier keinen Faktor darstellen.
 
Zuletzt bearbeitet:
nitronic hat gesagt.:
Jetzt geht das schon wieder los .. gibt unzählige Threads dazu.

Grafikprogrammierung ist mit C# absolut kein Problem. Und vermutlich sogar einfacher unter Windows als mit Java. Willst spiele verkaufen, sollten diese wohl eher auf Windows laufen und da spricht Java schon mal dagegen.

Und wenn du es tausendmal wiederholst es wird nicht wahrer.
Java ist auf Windows wunderbar. Performanter als C#. Und es wurden schon mehrere Spiele mit Java programmiert, was bei C# noch nicht der fall ist. Dennoch sind Java und C# beides keine Programmiersprachen um Spiele zu programmieren. Wenn du Spiele programmieren willst dann lern C++;

nitronic hat gesagt.:
Von der Sprache her ists eigentlich egal. Sind beide sehr ähnlich und gleich zu lernen. Für Java hast viele freie Tools, die das Programmieren ein wenig erleichtern, dafür gibts keine GUI, die an Visual Studio rankommt (nein, IDEA nicht und Eclipse auch nicht).

Dafür ist Visual Studio ziemlich altbacken. Kein Incremental Build, kein HotCode Replacement (in der neusten iX wurde von dem MS Produktmanager versprochen das dies in 2 Jahren kommt, eclipse kann es schon lange).

nitronic hat gesagt.:
Du solltest Dir vielleicht überlegen, für welche Plattform Du hauptsächlich entwickeln möchtest. Ist es Windows, dann nimm C#, ist es Linux/Unix/etc. und willst Du plattformunabhängig sein, dann Java. Wobei die Plattformunabhängigkeit auch so eine Sache ist .. da musst auch wieder aufpassen, welche Klassen Du verwendest und vor allem gestaltet sich die Grafikprogrammierung unter Linux (Treiber bla bla bla) ein wenig anders als unter Windows. Wirst also vermutlich eh zweimal schreiben müssen, wenns was gscheites werden soll. Bei Pacman is egal :)
Erzähl kein Zeuch von dem du keine Ahnung hast. Damit es wirklich auf jedem OS gleich aussieht gibt es bei Java LayoutManager die das komplett hinbekommen.
Und sämmtliche Klassen des JDK sind auf allen Plattformen lauffähig.

Wenn du etwas nicht weisst, sag lieber gar nichts, anstatt so ein blödsinn zu erzählen.

Wir fassen zusammen, ausser ein paar falsche Behauptungen kaum Inhalt in dem Post.

Sorry wenn meine Reaktion etwas scharf ist, aber bevor mann falsche Dinge erzählt sollte mann sich informieren.
 
Sorry, die LayoutManager kenn ich natürlich schon. Und DARAUF hab ich auch nicht abgezielt. Dass ich mit nem LayoutManager das Layout komplett ändern kann ist mir bewußt. Soviel kenn ich mich mit Java auch aus. Außerdem hab ich diesen Punkt auch niemals erwähnt. Also warum die Aufregung? Hab ich in einem Wort gesagt, dass das Endergebnis anders aussieht? Ich sagte, dass sich die Grafikprogrammierung anders gestaltet - und zwar unter Linux. Und dem wirst Du wohl nichts entgegenzusetzen haben. Kannst also Deinen kompletten letzten Absatz streichen, da dieser mit meiner Post rein gar nichts zu tun hat.

Tja, Visual Studio kann vielleicht ein paar Dinge nicht, dies sind aber Dinge die man durchaus verkraften kann und die jemand, der in den Startlöchern steht, ohnehin nicht braucht. Visual Studio 2005 hat die Punkte meines Wissens nach drinnen - und das dauert keine 2 Jahre mehr.

Ausserdem muss hier angemerkt werden, dass ich mit Visual Studio ein paar Dinge mehr kann als Programmieren. Ich kann hier meine Datenbank administrieren, mir daraus jede Menge Zeugs generieren lassen. Ich damit XML verarbeiten, mir Schemata bilden, ich hab ein UML dabei etc. Dinge wozu ich mir unter Eclipse wieder irgendein Plugin suchen muss, wovon die, die zu brauchen sind, erst wieder kosten.

Ad Performance:
Ja, hier hast Du natürlich wieder Deine Quellen. Ich hab die meinigen und die bescheinigen C# ein anderes Zeugnis. Wie gesagt, traue keiner Statistik, die Du nicht selbst gefälscht hast. Es gibt im Netz mind. gleich viele Aussagen, die bescheinigen dass C# schneller ist, als umgekehrt.

PS: Falsch war an meiner Aussage gar nichts. Nur anscheinend ist für die Java-Welt so manches anders.
 
Original geschrieben von nitronic
Sorry, die LayoutManager kenn ich natürlich schon. Und DARAUF hab ich auch nicht abgezielt. Dass ich mit nem LayoutManager das Layout komplett ändern kann ist mir bewußt. Soviel kenn ich mich mit Java auch aus. Außerdem hab ich diesen Punkt auch niemals erwähnt. Also warum die Aufregung? Hab ich in einem Wort gesagt, dass das Endergebnis anders aussieht? Ich sagte, dass sich die Grafikprogrammierung anders gestaltet - und zwar unter Linux. Und dem wirst Du wohl nichts entgegenzusetzen haben. Kannst also Deinen kompletten letzten Absatz streichen, da dieser mit meiner Post rein gar nichts zu tun hat.

Swing sieht auf Linux genauso aus wie auf Windows.

Original geschrieben von nitronic

Tja, Visual Studio kann vielleicht ein paar Dinge nicht, dies sind aber Dinge die man durchaus verkraften kann und die jemand, der in den Startlöchern steht, ohnehin nicht braucht. Visual Studio 2005 hat die Punkte meines Wissens nach drinnen - und das dauert keine 2 Jahre mehr.

Wir sprechen über die Version die mit Longhorn kommt und diese kommt in 2 Jahren


Original geschrieben von nitronic

Ausserdem muss hier angemerkt werden, dass ich mit Visual Studio ein paar Dinge mehr kann als Programmieren. Ich kann hier meine Datenbank administrieren, mir daraus jede Menge Zeugs generieren lassen. Ich damit XML verarbeiten, mir Schemata bilden, ich hab ein UML dabei etc. Dinge wozu ich mir unter Eclipse wieder irgendein Plugin suchen muss, wovon die, die zu brauchen sind, erst wieder kosten.

Achso VS kostet nichts? währe mir aber neu.
Im übrigen ist MS Visio keine UML Implementierung die nicht annähernd den UML Standard umsetzen. Für korrektes UML verweist auch der Produktmanager auf die Partner die Erweiterrungen für VS liefern.
UML Plugins bekommst du auch kostenlos für Eclipse.

Original geschrieben von nitronic

PS: Falsch war an meiner Aussage gar nichts. Nur anscheinend ist für die Java-Welt so manches anders.

Nein deine Aussage das mann bestimmte Klassen nicht benutzen darf, um Plattformunabhängig zu sein, ist falsch.
Alles was in dem Java Standard Library drinne ist, ist definitiv genauso nutzbar auf allen Betriebssystemen die eine Java Standard Library nutzen.

Die 2. Aussage das GUIs unter Windows anders aussehen als unter Linux sind definitiv falsch. Dafür gibt es Swing und Swing sieht auf beiden absolut gleich aus.
Auch gestalltet sich die "Grafikprogrammierung" nicht anders. Java2D und Java3D sind auf beiden Betriebssystemen ebenso absolut plattformunabhängig.
 
Ad Swing:
Tja, Swing sieht zwar auf Linux gleich aus wie unter WIndows, sieht aber nicht wie Windows aus. Ausserdem hab ich davon nicht gesprochen, das ganze Thema hast du ins Rennen geworfen und ist irrelevant.

Ad VS 2005:
Erklär mir mal bitte was VS 2005 mit Longhorn zu tun hat? Nämlich original GAR NIX! Mit Longhorn hat Yukon was zu tun, aber das ist der SQL-Server.

Ad Kosten:
Ich hab in keinster Weise behauptet, dass VS nichts kostet. Leg mir doch keine Dinge in den Mund, die ich nicht gesagt habe.
Meine Aussage lautete: Dass du für saubere, schnelle und gute Plugins für Eclipse bezahlen musst. Dem ist so und mehr habe ich nicht gesagt. Wenn Du etwas in meine Worte rein-implizierst, dann wirf es mir nicht vor.

Ad UML:
Tatsache ist, dass Du ein UML-Diagramm erstellen kannst. Fakt. Dass dem nicht 100%ig dem Standard entspricht weiß ich auch. Dass es allerdings immer noch besser ist, als das kostenlose UML-Plugin für Eclipse liegt aber auch auf der Hand. Für ein wirklich ordentliches Produkt musst ohnehin in beiden Fällen bezahlen.

Java-Klassen:
Tja, Standard-Klassen. Leider reichen die für spezielle Zwecke dann nicht mehr aus. Und willst du eine spezielle Sache umsetzen, dann musst du auf Klassen zurückgreifen, die dann leider nicht mehr von allen Systemen unterstützt werden.
 
Ad Produkt-Manager von Microsoft:

Die Aussage eines Produkt-Managers von M$ ist mir vollkommen egal. Ich hab auf der CeBit selbst erlebt wieviel Ahnung die tatsächlich haben. Danke, da verlass ich mich eher auf die Blogs von den Programmierern vom VS, denn die wissen wann sie fertig sein müssen. Der Produktmanager kriegt ohnehin etwas hingeworfen. Veröffentlichungstermin vom VS2005 ist kommendes Jahr, 1. Quartal.
 
Original geschrieben von nitronic
Ad Swing:
Tja, Swing sieht zwar auf Linux gleich aus wie unter WIndows, sieht aber nicht wie Windows aus. Ausserdem hab ich davon nicht gesprochen, das ganze Thema hast du ins Rennen geworfen und ist irrelevant.

Du hast davon gesprochen das Grafikprogrammierung anders gestalltet was totaler Blödsinn ist.

Original geschrieben von nitronic

Ad VS 2005:
Erklär mir mal bitte was VS 2005 mit Longhorn zu tun hat? Nämlich original GAR NIX! Mit Longhorn hat Yukon was zu tun, aber das ist der SQL-Server.

Die Aussagen des Produktmanagers beziehen sich aber darauf das Hot-Code Replacement ein Feature für das VS das mit Longhorn ausgeliefert wird ist.


Original geschrieben von nitronic

Ad Kosten:
Ich hab in keinster Weise behauptet, dass VS nichts kostet. Leg mir doch keine Dinge in den Mund, die ich nicht gesagt habe.
Meine Aussage lautete: Dass du für saubere, schnelle und gute Plugins für Eclipse bezahlen musst. Dem ist so und mehr habe ich nicht gesagt. Wenn Du etwas in meine Worte rein-implizierst, dann wirf es mir nicht vor.

Nein brauchst du nicht. Denn saubere, schnelle und gute Plugins für Eclipse gibts in Massen für Lau. Zum Beispiel ist das Struts Plugin ein ziemlich klasse Ding, für lau.
Es gibt sowohl gute Plugins die richtig Geld kosten, als auch kostenlose. Dennoch kommt mann selbst vollgepackt mit Plugins nichtmal annähernd auf den Preis von einem Vergleichbaren VS Studio.


Original geschrieben von nitronic

Ad UML:
Tatsache ist, dass Du ein UML-Diagramm erstellen kannst. Fakt. Dass dem nicht 100%ig dem Standard entspricht weiß ich auch. Dass es allerdings immer noch besser ist, als das kostenlose UML-Plugin für Eclipse liegt aber auch auf der Hand. Für ein wirklich ordentliches Produkt musst ohnehin in beiden Fällen bezahlen.

Das ist schon wieder totaler Müll.
Omondo:
http://www.omondo.com/features.jsp
Unterstützt den UML Standard und ist demnach um einiges besser als ein Halbwertiges Visio.

Original geschrieben von nitronic

Java-Klassen:
Tja, Standard-Klassen. Leider reichen die für spezielle Zwecke dann nicht mehr aus. Und willst du eine spezielle Sache umsetzen, dann musst du auf Klassen zurückgreifen, die dann leider nicht mehr von allen Systemen unterstützt werden.

Och echt? Ist mir in meinen Jahren der Java Erfahrung noch nie vorgekommen. Anscheinend programmier ich ja keine richtigen Sachen.
Sach mir doch welche Speziellen Klassen ich denn umbedingt brauche die nicht
Plattformunabhängig sind. Mir sind nähmlich noch keine Untergekommen.

Mich nervt einfach deine Mutmassungen und unhaltbaren Behauptungen.
Bisher sind deine Aussagen alle widerlegbar falsch, komplett.
 
Status
Nicht offen für weitere Antworten.

Neue Beiträge

Zurück