# C# vs. java



## dotlens (6. Dez 2004)

hallo

weiss das wurde auch schon besprochen, jedoch möchte ich das thema noch mal aufkommen lassen. wer findet es ist überflüssig braucht ja nichts zu schreiben...

habe einen älteren Bericht im vt gelesen in dem das .NEt framework vorgestellt wurde und anschliessend java und c# verglichen wurde. darin wurde java in vielen Punkten als schlechter dargestellt als c# was mich immer genervt hat. 

auch haben sie das .NET framework gelobt wegen der einheitlichen sprache nach dem kompilieren (MISL). so könne man auch von PDA's und so weiter den gleichen code verwenden. nun frage ich mich wie sich das weiterentwickelt hat, und wie sich das weiterentwickeln wird.

denkt ihr java kann auf die Dauer bestehen wenn das .NET einmal grossen Anteil finden wird??

Da ich erst ein paar Monate Java interessiert bin lass ich mich auch gern belehren wenn ich unwissend bin... :wink:

gruss


----------



## Student (6. Dez 2004)

also ich finde diesen artikel ganz nett:
:arrow: http://www.csharphelp.com/archives/archive96.html

wie sich das entwickeln wird.
ich denke, dass C/C++, Java und das .NET-framework wohl nebeneinander existieren werden.

eine diplomatische antwort .. aber ich denke nicht, dass C# als teil von .NET da alles revolutionieren wird. :roll:


----------



## Bleiglanz (6. Dez 2004)

IMHO

C# ist eine sehr gute Programmiersprache (genau wie Java viel von Smalltalk und C++ geklaut), die Visual-Studio IDE bleibt weit hinter Eclipse / IDEA zurück (Refactorings, CodeStyles, Konfigurierbarkeit...), aber wie immer bei MS ist alles aus einer Hand und die Entwicklung von GUIs oder sonstigem Zeugs geht sehr schnell

Der Käse mit Com+ Wrappern und P/Invoke erzeugt aber wieder viel hässliches Gewirr in .NET Projekten 

Java hat IMHO in vielen Gebieten wesentlich mehr zu bieten (O/R Mapping, die ganze J2EE Welt, seit neuestem Generics usw., viele Frameworks, etc.);

Aber allein die Stellung von Microsoft wird dafür sorgen, dass viel mit C# gemacht wird!


----------



## Student (6. Dez 2004)

Bleiglanz hat gesagt.:
			
		

> Aber allein die Stellung von Microsoft wird dafür sorgen, dass viel mit C# gemacht wird!


wichtiger punkt!


----------



## Illuvatar (6. Dez 2004)

"Erfahrungsbericht" in C#:

-Die Klassenbibliothek in Java ist einfach größer.
-Was am Umstieg ziemlich nervt sind die großgeschriebenen Methoden- und Eigenschaftsnamen.
-Ansonsten kann man Javacode häufig ohne größere Änderungen kopieren.
-Zuerst unverständlich, später dann aber recht sinnvoll ist die Verwendung von "virtual", "new" und "override" zur Steuerung von Early/Late Binding.
-GUIs werden in C# normalerweise "zusammengeklickt", in zwei Büchern, die ich bereits gelesen habe, wurde fast nur behandelt, wie man zusammenklickt.
-Das Eventhandling über Delegates ist nicht sehr intuitiv, da ist das Listener-Pattern besser.
-Der C#-Compiler ist schneller
-Die neuen Features aus Java5 sind ein guter Teil von denen, die C# mehr hatte, nur Generics gibt net 
-Die Eigenschaften sind ein sehr gutes Konzept (Erklärung an nichtc#ler: Eine Eigenschaft ist so was:

```
class Clazz
{
  int i_var = 0;
  int Var{
    get{
      return i_var;
    }set{
      i_var = value;
    }
  }
}
//Zugriff mit:
Clazz c = new Clazz();
int var = c.Var;
```
)-Die Java-Apidoc ist besser und schneller, in C# gibt es ja nicht mal ein richtiges Konzept wie das //* ... */
-Operatorüberladung und Indexer sind interessant, aber braucht man das?
-Naja, goto braucht man sicher net :/
-Die Arraydeklaration is bissle komisch (wann mach ich [][], wann [,], wie krieg ich von irgendwas die Länge raus, wieso is in einem zweidimensionalen Array i[0] manchmal kein int[], ...)
-btw: Die MSIL ist plattformunabhängig, und das Mono-Projekt ist eine sehr aussichtsreiche Implementierung der .NET-Runtime für Linux

das wars fürs erste...


----------



## Jockel (7. Dez 2004)

Na, geb ich auch mal meinen Senf hinzu:
1. Für jede Aufgabe das richtige Tool!
2. Es ist nicht immer die beste Technologie die sich durchsetzt!
(Wie gern, würde ich mir diese beiden Sprüche patentieren lassen...)

Was mir an C# gefallen hat (soweit ich das mit meinem kleinen Ausflug in die C#-Welt beurteilen kann), war das von Illuvator bereits erwähnt Prinzip der Eigenschaften. Das würde ich mir in Java auch noch wünschen.
Dann, dass C# objektorientierter scheint als Java (z.B. das auch 'normale Zahlen' Methoden haben).

Das Java nun soviel mehr zu bieten hat, würde ich nicht unbedingt als Argument gelten lassen, hat Java doch schon ein gutes Dutzend Jahre auf dem Buckel und C# nicht mal eine handvoll. Das wird sich mit der Zeit also auch ändern.

Ob Java auf die Dauer bestehen kann, kann wohl guten Gewissens bejahen. Schliesslich ist C auch schon gut 30 Jahre alt und wird immer noch verwendet. Und einmal erst bestehende Systeme werden ja nicht immer gleich in der neuen 'Hype-Sprache' neu geschrieben...

Wenn du also angst hast, etwas zu lernen, was bald wieder veraltet ist, so ist diese Angst unbegründet! Zumal ja programmieren an sich, mehr als nur die Kenntnis einer API oder Programmiersprache ist...


----------



## dotlens (7. Dez 2004)

danke für die antworten.

weiss schon dass Programmieren mehr ist als API kenntnis, aber hab mich so schön an Java gewöhnt 

wenn die GUI zusammengeklickt wird, gibt es dann auch so Layouts wie das GridBag? hab das mal versucht mit dem GUI Builder zusammenzuklicken aber nicht wirklich etwas erfolgreiches zusammengebracht. (vieleicht auch meine unfähigkeit mit GUI builder)

MISL ist plattform unabhängig? wie geht denn das wenn sie c++ in Misl übersetzten?? oder anderes Systemabhängiges?


----------



## Student (7. Dez 2004)

man kann auch in java GUIs zusammenklicken .. das nur der vollständigkeit halber ;-)


----------



## Bleiglanz (7. Dez 2004)

> Die MSIL ist plattformunabhängig, und das Mono-Projekt ist eine sehr aussichtsreiche Implementierung der .NET-Runtime für Linux


Natürlich ist die MSIL plattformunabhängig, aber ob Mono "aussichtsreich" ist, würde ich nicht unterschreiben. Was hilft einem die Plattform-Unabhängigkeit, wenn die Standard-Bibliothenken volle Socke ins Windows-Betriebssystem hineingreifen.

Mehr als 99% ist für Mono wahrscheinlich nicht erreichbar (und das dürfte das Marketing doch etwas erschweren)!



> MISL ist plattform unabhängig? wie geht denn das wenn sie c++ in Misl übersetzten??


na ja, solche Sachen werden dann eben durch den JIT durchgereicht ("unmanaged code")

Der Themenkomplex "unmanaged code", "COM" und "P/Invoke" ist für MS unverzichtbar, aber so hässlich, dass man als Java-Entwickler dankbar aufatmet...


----------



## dark_red (7. Dez 2004)

C# ist wirklich eine schöne Sprache. Es gibt einige Dinge, die ich auch gerne in Java gesehen hätte (Operatoren überladen usw). Bei einigen Punkten kann man sich wirklich auch die Köpfe einschlagen. 

C# ist aber nicht besser als Java. Genauso wie Java nicht besser als C# ist. Des weitern muss man auch unterscheiden. Java ist nicht Java. Sun hat den Namen Java für vieles verwendet: Syntax, Technolgoie, API. Microsoft hat das mit C#, .NET usw getrennt. Deshalb muss man auch sagen, welchen Teil man von Java mit C# vergleichen möchte. Ansonst währe die Fragestellung .NET vs Java wohl besser gewesen. 

Der Vorteil von .NET ist für mich vor allem der, dass es eine fast vollständige und vor allem brauchbare freie Implementierung (mono) davon gibt. Mit GTK# hat man dann auch noch ein sehr schönes Toolkit, dass auch Swing-Anhängern gefällt (mit schön meine ich nicht das Aussehen, sondern die API). Aus diesem Grund beschäftige ich mich in letzter Zeit viel mehr mit mono, c# und gtk# als mit Java. 

Mein Tipp beim Kampf von Java und .NET: Java macht auf den Servern mit J2EE usw das Rennen, während sich .NET auf Desktops mit den typischen Desktopapplikationen durchsetzten wird. Vermutlich werden auch viele Hobbyprogrammierer in Zukunft eher auf .NET stürzen, als für Java, zumal MS eine Express Version ihrer IDE Anbieten wird (bzw es mit der Beta bereits tut), .NET sich besser für Desktopapplikationen eignet (Integration, Feeling, usw.) und wenige Hobbyprogrammierer interessieren sich in erster Linie für Dinge, wie zB J2EE. 

Auf der anderen Seite hat Sun sehr mächtige APIs. Sie sind so mächtig, dass man dazu dentier sie als zu gross einzustufen. Ich denke soetwas hat vor allem im Serverbereich Zukunft. Es gibt auch ein paar sehr gute Frameworks, welche sich bereits bewährt haben.


----------



## Gast (25. Feb 2005)

ich frage mich nur, was beruflich gefragter ist? Ich habe mich in den Jobbörsen mal umgesehen, und gemerkt, dass mehr Java Programmierer als C,C++, und C# gesucht werden. Stimmt das jetzt so, oder gibt es einfach zu viele C sprachen programmierer als java pro. .


----------



## Jockel (26. Feb 2005)

Hm, das kann ich mir eigentlich nicht vorstellen. Ich denke eher, dass sich das die Waage hält. 
Interessant ist vielleicht folgender Link: http://www.gulp.de/statistik/stseekps.html
(Dort gibt es noch mehr Statistiken).
Und was beruflich gefragt ist? Kommt tw. darauf an, in welchen Sektor du willst...


----------



## dotlens (28. Feb 2005)

Folgende Statisitik zeigt, dass doch viele Programmier Kenntnis von Java haben.
Nach der Statistik sogar mehr als in c++. 
Dass Java und JavaScript zusammengefasst werden relativiert die Statistik allerdings.


----------



## thE_29 (28. Feb 2005)

Sehr gute Statistik!

Alleine deswegen: 21453	Java, JavaScript

ist die mal fürn Arsch!


Desweiteren unterrichtet in Österreich zumindest, jedes Gym schon Java oder Delphi in ihren Computerfächern, da C/C++ mit den Refenzen schwerer ist als Java oder Delphi!


----------



## AlArenal (28. Feb 2005)

Delphi.. .*würg*


----------



## Student (28. Feb 2005)

thE_29 hat gesagt.:
			
		

> Alleine deswegen: 21453 Java, *JavaScript*


 :arrow:  ???:L  *tz*

und ... [schild=2 fontcolor=000000 shadowcolor=C0C0C0 shieldshadow=1]Delphi is ja wohl der totale Kotzreizanreger ...[/schild]


----------



## thE_29 (28. Feb 2005)

Alleine Deswegen kannst du diese ganze Seite als irgendeine Referenzstatistik vergessen!

Da hier java und javascript in einer Zeile genannt werden....  (wäre ja das gleiche wenn ich Delphi und C in der gleichen Zeile hinschreib..)


----------

