Ist C# besser als Java?

Relativ einfache Frage (abgesehen von JavaEE) glaubt ihr das C# Java mittlerweile überholt und abgelöst hat?

Mein Gefühl sagte mir bereits länger auf C# bzw. Mono zu wechseln, werde immer unsicherer ob Java überhaupt noch eine Zukunft hat oder ein baldiges Ende finden wird. Der Wechsel ist nicht schwer.
Am Anfang eine billige Kopie, mittlerweile kopiert Oracle mehr und mehr C#.

Mist. Ich habe für „Nein“ gestimmt, aber dann erst bemerkt, dass die Frage im Titel eine andere ist, als in der Umfrage.

Meine Abstimmung bezog sich auf die Frage im Titel!

„Besser“ ist so… ähja, was soll man da sagen. Eigentlich wollte ich in diesem Thread nur antworten

Aber verloren hat Java sicher nicht. Ich habe zwar mit C# NICHTS zu tun, deswegen kann ich da keine „fundierte“ Aussage machen, und nehme an, dass es wohl schon Bereiche gibt, in denen C# Vorteile hat / „Markt“-Anteile gewinnt / beliebter wird etc, aber die Infrastruktur und das, was als das „Ökosystem“ bezeichnet wird, sind so reichhaltig, und Java so omnipräsent (von der Kaffeemaschine bis zum Server) dass es wohl auch keinen Punkt gibt, an dem man diese Frage mit einem klaren „Ja“ beantworten könnte.

Die Umfrage kann ich als normaler Nutzer nicht ändern, deshalb habe ich den Titel geändert - guter Punkt, darauf hatte ich nicht geachtet.

Technisch gesehen: Ja. C# hat viele coole Features, die ich Java ab und an vermisse
Marktanteil: Nein. Microsoft hält sich viele Entwickler damit fern, einfach mal alle 2 Jahre Techniken einzustellen, die vorher aufwändig geschult wurden. Ich kenne .net Entwickler die auf Java umschulen, da sie keine ordentlichen Jobs finden

Also im Desktop Bereich hat Java schon lange verloren, da wird JavaFx auch nicht mehr viel richten. Wenn ich ehrlich bin kenne ich keine Consumer Software (Eclipse und andere Entwicklungstools zähle ich da nicht)
die in Java geschrieben sind (ok Minecraft)

Im Server und IoT -bereich schaut es aber schon wieder anders aus, (und Android nicht zuvergessen). Zusätzlich kommt hier immer die obligatorische Frage sprechen wir von JAVA der Sprache oder von der JAVA VM als Plattform. Dadurch, dass schon extrem viel nach Java ByteCode kompiliert wird die Plattform noch sehr viel länger halten.

Und gerade mit Java8 hat mir persönlich die Sprache wieder viel gebracht SwingUtilities.invokeLater(this::doSomething)

Java und c# werden wohl noch länger parallel existieren.

Hat Java gegen C# verloren?
und
Ist C# besser als Java?
gleichzusetzen, impliziert: dass der/die “Bessere” öfter genutzt wird!!! Das muss nicht ubedingt so sein. Ich denke, viele stimmen Marco13’s Wahl zu. Bis denne

wer sich auf eine Sprache spezialisiert hat pauschal verloren - biete C/C++, C#, Java, Bash - und noch diverse andere Sprachen. Es wird alle Jubel-jahre eine Sprach-Sau durchs Dorf getrieben. Scala, Go, …

Wenn es Bash noch in deine Auflistung geschafft hat dann können die „diverse andere“ Sprachen nicht sehr signifikant sein.
Entschuldige, wollte nicht gemein sein aber das musste jetzt irgendwie einfach raus, nicht böse sein. :smiley:

Nein, ernsthaft, Projekte müssen nunmal in irgendeiner Sprache geschrieben werden und nicht in allen gleichzeitig.
Mit wechseln meine ich vor allem neue Projekte komplett in C# zu schreiben statt Java.
Beide bedienen den selben Markt.

So ganz stimmt das leider nicht (mehr). C++ (und C#) haben auf Druck der Industrie auf Google starken Einzug in Android erhalten. Auch wenn Java immer noch die sicherste Wahl ist um eine Anwendung zu schreiben.

Genau das ist vielleicht manchmal auch garnicht schlecht.
Viele IT Unternehmen setzen auf Nachhaltigkeit damit auch in 100 Jahren noch die alten Programme funktionieren, zum Vorteile C#s konnten die Entwickler an Java lernen und besser machen, etwas was Java nie aufholen wird.
z.B.

  • Generics ohne type erasure(!!)
  • Properties (syntax getter/setter)
  • Delegates
  • Pointer
  • Structs

Damit wird Java zu C# immer viele Schritte hinterher sein und nie aufholen werden. Was kann Java was C# nicht kann?
Welchen Grund gibt es das Java nicht langsam dem Ende dahinsiecht?

[quote=TMII]Was kann Java was C# nicht kann?
Welchen Grund gibt es das Java nicht langsam dem Ende dahinsiecht?[/quote]

Gigantische Community Unterstützung :wink: Gerade jetzt wieder gesehen, es gab Anzeichen dafür dass Oracle JEE vernachlässigt. Sofort hat die Community sich zusammengetan und so lange Druck aufgebaut, bis Oracle sich wieder mehr darum gekümmert hat. Und lange gedauert hat das nicht. Microsoft lernt dazu, siehe Linux Unterstützung. Aber auch im Punkt Plattformunabhängigkeit ist Java noch (weit!) voraus.

Scala kann etwas besser, Ruby, Groovy oder wie sie alle heißen und C# meinetwegen genauso,
aber mit Syntaxkleinigkeiten kommt man letztlich nicht weit,
das ist nichts gegenüber Kompatibilität mit vorhandenden Programmen, gigantische Library-Mengen, großes Sprachwissen

Java war die erste moderne Sprache (oder jedenfalls die, die sich am Anfang durchgesetzt hat)
im Mittelalter von C und wer weiß was alles,
mit sicherer Speicherverwaltung, ordentliche Syntax, ordentlichem OO, alles was heute noch wichtig ist,

damals war es vergleichsweise leicht, auf alles vorherige zu verzichten, weil quasi gemeingefährlich :wink:
soviel war das wohl eh nicht (aber ich kann nur spekulieren…)

dass 90% der heutigen Programmierer eh erst nach Einführung Java ausgebildet wurden, hilft freilich auch,
heute schwerer, die bedeutende Menge vorhandener Programmierer mit all ihren Programmen, Tools, Erfahrung, umzulenken

einen solchen neuen Dauerbrenner Java zu verdrängen ist ganz ganz schwer,
da helfen einfache neue optimierte Syntaxen nicht,
außer evtl. mit JVM- und idealerweise auch kompletter Java-Syntax-Kompatibilität…,

es bräuchte ansonsten schon eine bahnbrechende neue Programmiersprachengeneration, so wie Java gegenüber C und sonstigen Vorgängern,
fraglich ob es noch je einen neuen Durchbruch geben kann, aber C# ist dabei gewiss ignorierbar,

Microsoft-Geruch ist dabei natürlich eh üble Voraussetzung, aber auf andere Weise hätte auch nie jemand so eine wenig neues bringende Spielerei derart kostspielig groß verbreiten können,

ob Microsoft, Google, Apple oder sonst wer es irgendwann noch mit reiner Marktmacht schafft, alle Programmiersprachen durch Eigenkreation X zu ersetzen, wer weiß

@Falk :scheiterhaufen:

(Man muss trotz der angestrebten breiteren Aufstellung des Forums noch damit rechnen, dass hier der eine oder andere noch etwas biased ist :wink: )

Dem Kontext nach scheinst du unter „spezialisieren“ etwas anderes zu verstehen, als ich. Und zwar etwas ganz anderes, und etwas negatives. Eher im Sinne von „beschränken“ oder „versteifen“. Ich bin zu sehr auf Java beschränkt/versteift/spezialisiert(?), das ist mir bewußt. Sicher, etwas C,C++, (soll ich jetzt auch MIPS-Assembler, QBasic und Pascal erwähnen?) und JavaScript krieg’ ich auch noch hin, und ich beruhige mich selbst mit dem Mantra (das anscheinend auch SlaterB angedeutet hat), dass die Frage „Wofür steht das ‚L‘ in ‚SOLID‘?“ Sprachunabhängig ist, und die Fähigkeit, diese Frage zu beantworten, schonmal ein grobes Sieb ist, und die Fähigkeit, diese Antwort in Code einfließen zu lassen ein beliebig feines.

Wie schon in anderen Posts angeklungen ist die Frage nach der Sprache und ihren syntaktischen Details das eine, aber die Frage nach Ökosystem und Infrastruktur eine andere.
(einwerf: https://mvnrepository.com/growth/9d57a0f037ef369cce727e47b55b407f )

Jemand der (wie ich) >15 Jahre lang mit Swing programmiert hat, wird nicht nach dem Lesen der C#-Language-Spec direkt ein C#-GUI-Projekt aus dem Boden stampfen können - und das gälte auch für jemanden, der „die Sprache gut kann“. Und wenn er die Wahl hat, ob er für irgendeine Standard-Desktop-GUI-Anwendung nun Swing verwendet, oder das entsprechende C#-GUI-Toolkit, dann wird er eine eindeutige Wahl treffen. Und so sehr man sich „Professionalität“ und „technisch fundierte Entscheidungen“ anmaßt oder wünscht: Selbst wenn C# für diesen Fall technisch objektiv (und enstprechend der Pro-Kontra-Bulletpoint-Liste auf der PowerPoint-Präsentation des Consultants) „besser (geeignet)“ wäre, hat die Verwendung einer Programmiersprache ein Moment. (Nicht „einen“. Es geht um das physikalische Moment. Das war eine Metapher). Und selbst COBOL bewegt sich noch :wink:

Man könnte statt von „Moment“ auch von „Trägheit“ reden, aber das klänge nicht so gut :wink: trotzdem muss man sagen: Es stimmt, dass Java sehr träge ist. („Ey, sach ich doch! C++ is viel schnella“ - „NEEEIN!“ :rolleyes: ). Es ist sehr konservativ, und es werden selten „neue Features“ in die Spache geworfen (nur weil sie gerade hip sind). Aber trotzdem entwickelt sich die Sprache IMHO gut weiter. Java8 mit allem drum und dran. Was jetzt mit „Value Types“ in Planung ist. Das klingt alles ganz gut.
Eine andere Seite dieser Medallie der Trägheit ist aber etwas, wovon ich schon mehrfach betont habe, dass ich es für etwas SEHR positives halte: Nachhaltigkeit. Es gab bisher praktisch
NIE
einen echten Kompatibilitätsbruch zwischen den Versionen. Und gerade Firmen legen wert auf diese Mischung aus Nachaltigkeit, Beständigkeit und Offenheit.

Das Rennen ist noch nicht vorbei :cool:

[QUOTE=Marco13]@Falk :scheiterhaufen:
[/QUOTE]

Gibt es hier nicht freigeschaltete Posts?

Und wie ich bereits vor ein paar Wochen schonmal erwähnt habe sind viele Projekte auch ohne Microservice-Architektur grundsätzlich Polyglot. Java or C#, who cares, someday we all migrate to JS.

Ich jedenfalls hasse aus tiefstem Herzen Microsoft, MS, Windows und alles was damit verbunden ist. Hass ist was wunderschönes, dass vieles leichter macht. Von daher ist es mir völlig egal was die mit C# machen. Auch wenn es zur besten Programmiersprache der Welt mutieren würde oder die einzig verbleibende erlaubte Programmiersprache wäre. Da bin ich Fundamentalist. Da höre ich lieber auf Computer zu benutzen. Von daher hat C# alleine schon wegen der Herkunft verloren. Zu oft wurde ich von diesem Unternehmen schon verarscht. Zu viel Lebenszeit und Lebensenergie ging dabei drauf. Der grösste Makel an C# ist MS.

Noch ein Video schaun um wieder runterzukommen. Es gibt wichtigere Dinge.

Nein, aber die Umfrage ist nicht anonym… :wink:

[QUOTE=ionutbaiu;139792]
Ich jedenfalls hasse aus tiefstem Herzen Microsoft…[/QUOTE]

Zugegeben, das ist bei mir auch ein Grund - tatsächlich vielleicht sogar der wichtigste. Es mag paradox wirken, dass ich das von einem Windows-Rechner aus schreibe, aber - ja, gut, gönnen wir ihnen ihr Betriebssystem-Monopol, Windows tut verläßlich und einfach seinen Dienst, sei’s drum - aber den Compiler oder die Programmiersprache will ich mir von denen nicht auch noch vorschreiben lassen…

Und Oracle ist die Alternative zu Microsoft?
Das Unternehmen welches erst kürzlich einen jahrelangen milliarden großen Rechtsstreit gegen Google erneut verloren hatte und erneut in Revision gehen will, die Freiheit aller Programmierer zu Geld Zwecken einzuschränken?

Keines der Unternehmen ist ein Freund, alle versuchen Profit zu erwirtschaften und das bedeutet auch in den Matsch geschubst zu werden.

Wie war das mit dem Glashaus nochmal?

Sicher. (Und bei dieser Antwort schwingt, ähnlich wie bei der vorherigen, das Unbehagen mit, hier potentiell schrecklich „un-technische“ (aber … ja, doch zumindest nerdig-geekige) Argumente und Punkte anzuführen).

Als Java „rauskam“ war die Marktmacht und Monopolstellung von MS noch deutlich ausgeprägter - mitten rein in den Browserkrieg – Wikipedia (und Linux wurde höchstens von ein paar exzentrischen Spinnern eingesetzt :stuck_out_tongue_winking_eye: ). Ich will nicht behaupten, Sun wäre da wie das kleine Gallische Dorf erschienen, aber war zumindest kein allgemeines Nerd-Feindbild. Inzwischen haben sich die Zeiten geändert. Viele haben die Sun-Übernahme kritisch gesehen, und teils sicher zu recht. Es ist noch nicht so lange her, dass ich meine Standard-Sucheingabe für einen schnellen Blick in die API-Doku von "java sun WasIchSuche" zu "java se8 WasIchSuche" geändert habe (und irgendwelche Hinweise auf das Thema „Monopole“ und die Tatsache, dass diese Suche dann durch Google bedient wird, erübrigen sich wohl). Es ist klar, dass Unternehmen Gewinne machen wollen, und im Zusammenhang mit diesem Patentstreit mit Google erscheint vor meinem inneren Auge ein Dinosaurier, der hilflos in irgendeiner Teergrube versinkt - damit haben sie sich sicher keinen Gefallen getan. Es gibt viel zu kritisieren, aber Dinge wie den JCP (auch wenn es manchmal knirscht) oder auch das OpenJDK sind in so-derart-keinster-Weise mit der Politik von Microsoft vergleichbar, dass dieser Punkt IMHO eindeutig an Java geht. (O=Opinion).

Umfrage passt halt echt nicht zur Frage.

Lohnt es sich Java zu können?
Ich sag mal so: 90% der Headhunter-anfragen die ich bekomme beziehen sich auf Java. Danach kommt PHP/Javascript. Aber ich glaub eine C#-Anfrage war noch nicht dabei (und ja: es steht im Xing/LinkedIn-Profil das ich Kenntnisse hab). Also jobtechnisch lohnt sich Java auf jeden Fall

Ist C# besser als Java?
Kommt immer an die Anforderung drauf an. Aber ich würde mal sagen von den Sprachfeatures her ist C# weiter als Java. Zumal oracle keine gute Arbeit macht und JavaFx gerade bei größeren Projekten sehr schnell zu massiven Problemen führen kann (Memory leaks weil das WeakListener-Konzept von Oracle nicht funktioniert. Bekanntes Problem bei Oracle und wurde geschlossen mit Status: wont-fix).

Was genau ist “Java”? Java als Sprache hinkt C# technisch hinterher. Für die praktische Arbeit ist aber das verfügbare “Ökosystem” um eine Sprache herum mindestens so wichtig wie die Sprache selbst, und da hat Java deutlich die Nase vorn.

[ot]
Du hast das „^ tl;dr“ vergessen :wink:
[/ot]

Wie lange wird sich die Community, die Infrastruktur, das Ökosystem halten wenn es eine Sprache gibt die den gleichen Markt bedient aber technisch besser ist wie hier mehrmals angedeutet wurde?

Einen C# Job hab ich persönlich bisher auch noch nicht gesehen, aber die neue Entwickler auf dem Markt ziehen eben wegen der besseren Technik und dem besseren allgemein Image, C# vor.
(Danach gibt es mit jedem Zehnten erstmal nicht selten laut Krach “warum man diese veraltete Sprache… Blabla… Mono auch plattformunabhängig… blabla…” bis man dann eindeutig klar gemacht hat “ich chef du nix”.)

Die nahe Zukunft gehört C#. Vielleicht nicht jetzt aber unabwendbar schon bald.
Was wird Oracle machen? Wenn die weiterhin Google verklagen Java auf Android einzusetzen wohl eher das Gegenteil.

Ihr wisst (als längeres aktives Foren-Mitglied (davor jahrelang auf j-f.org)) das ich hier nicht versuche gegen Java zu wettern und wenn ich einfach Zustimmung erhalten wollte, würde ich in die C# Foren gehen.

ist nicht auch Scala oder sonstiges kleines ‚technisch besser‘ als C#?
und doch auch gegenüber C# im Nachteil

wenn so stark auf diesen Technik-Punkt drängend, wieso dann gerade C#,
wäre die logische Konsequenz nicht weiteres noch neueres, oder alle wichtigen Sprachen halbwegs sauber geprüft?

oder kennst du C# verstärkt und ein Wechsel wäre etwas weit hergeholt? - oh, der springende Punkt kommt angesprungen…


und wie lange sich ein Ökosystem halten kann trotz evtl. besserer Konkurrenz ist nunmal hinlänglich bekannt,
Windows vs. Linux (und meinetwegen auch Apple-PC) usw. :wink:
da hilft es auch nur begrenzt, wenn die Superhirne die bessere Sprache erkennen, programmiert wird im Team, auch die Normalos müssen einbezogen werden

wollen wir die Zukunft mal in Ruhe abwarten