Ist C# besser als Java?

Das „technisch besser“ ist jetzt IMHO etwas eng gefasst, bzw. wird den hier ja ausführlicher besprochenen Punkten nicht ganz gerecht.

Wie schon angedeutet habe ich zu Java einen speziellen Bezug (vielleicht hat den jeder zu irgendeiner Sprache), und mangels Kenntnis der technischen Details von C# und der darunterliegenden Infrastruktur maße ich mir kein „Urteil“ an, und es kann gut sein, dass meine Wahrnehmung verzerrt oder schlicht falsch ist. Vielleicht liege ich auch mit meiner übergeordneten Einschätzung falsch, dass Java nicht innerhalb von 5 Jahren „obsolet“ wird. Vielleicht liegen auch die falsch, die innerhalb weniger Jahre mehrere hippe Webframeworks kommen und gehen sehen, und das auf den dicken Pflock übertragen, den eine etablierte, beständige Sprache und eine robuste, ausgereifte, hoch-optimierende VM darstellen.

Insgesamt denke ich aber natürlich auch, dass auch kein „Java-Fan“ abstreiten kann, dass es Argumente FÜR C# gibt, und dass es Fälle gibt, wo das „besser“ ist, und dass die Gefahr besteht, dass es Java mehr und mehr das Wasser abgraben wird. Aber ich denke, dass in diesem Thread auch das offensichtliche nochmal klar wurde - nämlich dass es kein pauschales „besser“ gibt. Es bleibt zu hoffen, dass die angesprochene Beständigkeit von Java erhalten bleibt, aber gleichzeitig KEIN zu großer Hemmschuh wird. Und natürlich, dass Oracle nicht zu viel politischen Mist macht.

Na, dann ist ja gut.

Grüße
Marco „Moderator“ 13 ::haue

:o)

die 13 steht für die Anzahl gelöschter User,
und nicht einfach so hier löschen, wenn dann richtig, global

[QUOTE=TMII]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#.[/QUOTE]

Als jemand, der gerade auf Stellensuche ist, kann ich nur sagen: es sieht nicht so aus. Java dominiert bei den Stellenangeboten doch ziemlich stark, was natürlich vor allem an der weiten Verbreitung liegt - und nichts mit der “Qualität” der Sprache an sich zu tun hat.

Die Sprachen an sich - da habe ich auch das Gefühl, dass C# leichte Vorteile hat, teilweise ein bisschen leistungsfähiger, knappere Syntax, LINQ etc. Aber wirklich entscheidend ist das sicher nicht. Wann man unbedingt was “besseres” will, dann doch lieber gleich Scala oder F#?!

Gegen C# sprechen immer noch tausend Dinge:

  • die Verzahnung mit dem Visual Studio

  • die vielen Visual Studio “Assistenten”, die tonnenweise Code im Hintergrund generieren

  • es ist ganz unklar, was man machsen soll? Universal Platform? C/C++ native? Forms? XAML? usw. Windows10 oder Mobile? Javascript GUI?

  • MS hat die letzten Jahre viele Dinge in die Tonne getreten, die man kurz vorher noch als “die Zukunft” gepriesen hatte

usw. usf.

Im übrigen sind sich C# und Java einfach zu ähnlich, für den Profi läuft mehr oder weniger alles darauf hinaus, wie gut man mit den Tools umgehen kann, die Frameworks und das ganze Ökosystem kennt, usw. - lauter Dinge, für die man ein paar Jahre investiert haben muss.

Im übrigen steht und fällt natürlich alles mit .NET Core - sobald MS den ganzen Bims wirklich komplett vollständig auf Mac und Linux portiert hat und das stabil und zufriedenstellen läuft, dann wird das für Java sicher eng. Aber ich rechne nicht damit - zumal ja jederzeit ein neuer CEO auftauchen könnte, der die ganzen Projekte wieder in die Tonne tritt…

Ein Gedanke kam mir gestern noch zu diesem Thema. Dieser Gedanke soll kein “Argument” für irgendwas sein, ist in der konkreten Ausformulierung vermutlich zu fuzzy, als dass man eine echte Antwort darauf geben könnte, und mag schon fast infantil oder nach einem argumentatorischen Taschenspielertrick wirken, aber …

Welche “Vorteile” hat C#, die man nicht “in Java einbauen” könnte?

(Ich denke, dass an vielen Stellen einer der Hauptgründe für die nicht-Integration von neuen Features darin besteht, dass es schwierig (oder, in Einzelfällen, und bei bestimmten Zielsetzungen auch unmöglich) ist, sie in rückwärtskompatibler Form einzubauen)

Abhängigkeit von der Windows API in einigen Assemblys (WMI, Registry, …)

“Abhängigkeit” klingt erstmal schlecht, aber … man könnte das, wenn ich das richtig sehe, verallgemeinern als “Dinge, die die Plattformunabhängigkeit kaputt machen würden” (und dann könnte man clever nachfragen: “Welche Nachteile hat C#, die man nicht ‘ausbauen’ könnte” :D). Aber IIRC gibt es für Registry-Zugriffe auch in Java libraries. Das ist ja in dem Sinne kein Sprachinhärentes Feature - auch wenn es Teil der Infrastruktur ist, und man es (wenn man auch die Hotspot-VM als Argument anführt) fairerweise auch gelten lassen muss). Ich dachte eher an sowas wie "Properties kann Java nie haben, weil … " (und, wie angedeutet: Sie genau so zu haben wie in C# könnte an Kompatibilitätsfragen scheitern).

Du hast Jahre mit Jahrzehnten verwechselt :smiley:

Ansonsten kann ich dir nur voll zustimmen.

Das Maerchen von „Java ist bald nicht mehr gefragt“ hoere ich schon seit ueber 10 Jahren, ausschliesslich von MS Anhaengern.
Da hat sich in den letzten 10 Jahren naemlich nix veraendert, die meisten Stellen werden fuer Java Entwickler ausgeschrieben, aber bei der Lage am Markt ist man auch gegenueber C# Entwicklern die umsteigen wollen nicht abgeneigt.

… und Mono ist nicht mehr als ein gescheitertes Experiment, vor allem weil es halbherzig vorangetrieben wurde.

Mono gilt aber mittlerweile auch als deprecated, seitdem Microsoft .NET zum Open-Source Projekt gemacht hat.

Aus eigener Erfahrung, solange ich nicht gezwungen werde, würde ich nicht mehr in C# coden. Warum soll ich mir als Entwickler / Firma / etc so einen Klotz wie .Net ans Bein hängen? Seitdem ich mit Coden angefangen habe, stelle ich unzählige Bugs / Probleme mit Visual Studio, C# und .Net fest.

Die Projekte lassen sich entweder gar nicht oder über zig Baustellen auf eine andere Plattform / device portieren. Ich weiß nicht was MS mit der open source Strategie vor hat. Aber für mich Persönlich spricht die Zukunft Java (oder deren Derivate/ Forks) , egal wie gut oder schlecht C# oder Java auch sein mögen.

C# Dot.Net ist für mich ein Sportwagen, bei dem der Hersteller Bremsen einbaut. Also nicht auf die Ausführungsgeschwindigkeit bezogen, sondern auf die Verwendbarkeit.
Wäre ich nochmal in der Ausbildung, würde ich sofort mit Java anfangen und C# Dot Net links liegen lassen.

Selbst wenn C# eine Zukunft hat, MS hat in der jetzigen Form zumindest keine. Technisch hinkt Java der C# Gemeinde hinterher. Das liegt aber leider am jetzigen “Eigentümer”. Während MS ständig Vollgas bei der Weiter entwicklung von C# gibt, bohrt Oracle lieber in der Nase.

Zumindest ist das mein Eindruck.

[QUOTE=array]C# Dot.Net ist für mich ein Sportwagen, bei dem der Hersteller Bremsen einbaut. Also nicht auf die Ausführungsgeschwindigkeit bezogen, sondern auf die Verwendbarkeit.
Wäre ich nochmal in der Ausbildung, würde ich sofort mit Java anfangen und C# Dot Net links liegen lassen.[/QUOTE]
ist die Bahn statt Sportwagen,
schnell, aber nur in bestimmten Bahnen, in teurer zentral angelegter Infrastruktur mit vielleicht großen Bahnhöfen und Werkstätten, aber nur dort wo die Macht von oben entsprechendes baut,

Autos kommen dagegen überall hin, Straßen gibts überall, zur Not ist auch eine neue im Nirgendwo halbwegs fahrbar selbst angelegt,
jeder Futzi kann kleine Tuning-Werkstatt, neue Spoiler, Autoradio, Navi und wer weiß was alles anbieten :wink:

euch ist schon bewusst das hier langsam ein Religionskrieg ausbricht

Ich sehe nicht dass hier ein Religionskrieg bevorsteht auszubrechen. Die Diskussion ist sehr einseitig Pro-Java.
Kein Wunder bei 15 Leute die für Java gestimmt, 3 für C#, nur vfl_freak hat von der „multiple choice“ Funktion bei der Umfrage gebraucht gemacht.

Ich habe die selbe Frage mal in einem C++ Forum gestellt und dort ist der Konsens genau gegenteilig. C# ist DIE bessere Sprache, Java hätte verloren, C# wird vorallem fürs schnelle Tooling verwendet, hat eine bessere Syntax, ist praxisorientierter umgesetzt und nicht so theoretisch wie Java (was auch immer das bedeuten mag), ist besser in der technischen Umsetzung und hat damit auch eine bessere Performance.
Mal so frei aus dem Kopf zitiert. Die Beteiligung mit 73 Mitgliedern +/- über mehrere zweistellige Seitenzahlen ist dabei auch höher.

Haben die keine Ahnung oder sind zu festgefahren mit Ihrer Meinung?
Die selbe Frage könnte man auch euch stellen. Es ist schwer sich eine Meinung zu bilden weil

ach ja, Abstimmung, 16 also nun :wink:

edit:
Ja - 3 - 16,67%
Nein - 16 - 88,89%
??
muss in C# programmiert worden sein :wink:
(edit: mit Doppelantwort und wie genannt nur 18 Teilnehmer kommts hin)


die Meinungen müssen ja nicht zu einer werden, es reicht sie erklären zu können,
die technischen Punkte mögen stimmen, da hat hier wohl kaum einer oder komplett keiner widersprochen,

und trotzdem ist klar dass das nicht für sich reicht,
dass Java in der Verbreitung vorne ist wird sicher auch im anderen Forum zugegeben,

Ablehnung von Microsoft an sich ist ein großer Punkt, im C#-Forum sicher nicht so schlimm gesehen, aber das ist ja verständlich,
alles recht klar ersichtlich


und immer gilt:
wenn es nach bester Sprache für Witze geht bin ich auch für Deutsch, in USA oder China wird man anderer Meinung sein…

Tatsächlich habe ich mit einer gewissen Spannung darauf gewartet, ob sich @TMII mal wieder hier einklinkt (und wie er abstimmt ;-)).

Um das nochmal zu betonen: Die Frage im Titel war ursprünglich eine andere. Auch DIE war in diesem Sinne „schwammig“, aber die Frage nach dem „besser“ ist so pauschal-unspezifisch, dass sie subjektive Faktoren enthalten MUSS. Sonst wäre ja auch eine Abstimmung sinnlos.

[ot]
Eigentlich genauso sinnlos wie Multiple-Choice mit „Ja“ und „Nein“…

void foo(boolean b) {
    if      ( b) System.out.println("Foo");
    else if (!b) System.out.println("Bar");
    else throw new UnknownBooleanStateException("Smurf!");
}

… aber …
[/ot]

In diesem Sinne hätte JEDER mit „Ja“ UND „Nein“ antworten müssen, denn trotz der subjektiven Faktoren hat IIRC keiner in seinem Post ein klares „JA“ oder „NEIN“ postuliert, sondern immer versucht, auszudifferenzieren. (Schön, eigentlich :slight_smile: War das in dem anderen Forum auch so? :smiley: ).

Dass der Versuch, Dinge auszudifferenzieren, auch immer unvollständig bleibt, ist auch klar. „Unendlich präzise“ Aussagen sind schwierig. Frag’ doch mal in einem C+±Forum:
„Ist C++ schneller als Java?“
und wenn du nicht als Troll verhaftet wirst, wird die Antwort eindeutig sein - abgesehen von denjenigen, die versuchen auszudifferenzieren. Das ist eben aufwändig…

Oder mal andersrum: Was hattest du denn bei dieser Umfrage erwartet? (oder dir davon versprochen?)

Sie verläuft so wie ich mir das vorgestellt hatte.
Das von oben war keine negative Kritik sondern eine absichtlich provokant gestellte kritische Frage die zur Diskussion einladen soll.
Die Frage war „welche Sprache ist besser“ und das darf jeder so interpretieren und abwägen wie er will - eine Art philosophische Erörterung und Selbsthinterfragung - ich muss mir praktisch jeden Tag die Frage stellen welche Sprache verwendet werden soll.

Meist sind die Pros und Cons eindeutig und die Basis schnell gefunden.
Java und C# sind sich jedoch so verdammt ähnlich und verwandt und bedienen den exakt selben Markt, dass es praktisch keinen Unterschied gibt.
Jeder Java Entwickler kann VisualStudio öffnen und Anfangen C# zu schreiben; die Libs heißen ein bisschen anderst.
Anderst herum wird es schwerer, da grundlegende C# Konstrukte in Java nicht funktionieren.

Das die Umfrage Pro-Java ausfällt überrascht mich nicht, wir sind hier in einem Java Forum. Die erörterten Argumente sind aber interessant.
Dagegen stelle ich das C++ Forum gegenüber und derren Meinung auf der anderen Seite.
Java ist weit verbreitet, war das einzige Zugeständnis übrigens.

Ja und Nein als Multiple Choice macht entsprechend Sinn wer mit Ja und Nein antworten möchte oder „sowohl als auch“ mit Argumenten gestützt natürlich.

Meine persönliche Meinung dazu habe ich bereits genannt. Die Nachzügler an Programmierern strömt gegen C# und nicht mehr Java.
Ich denke solange C# die bessere technische Platform bietet, wird das auch so bleiben und solange das so bleibt bilden die jungen Nachzügler immer mehr eine Java ähnliche Community aus. Ich denke an die Zukunft und Nachhaltigkeit.

Das finde ich einen sehr guten Vergleich.
Vor 10 Jahren hat mein Chef gesagt „lernt lieber mal Chinesisch, die Sprache wird in Zukunft sehr sehr wichtig werden wenn die Chinesen nicht mehr für uns schaffen sondern schaffen lassen“.
Im Moment hat er den Nagel damit perfekt auf den Kopf getroffen. Einer unserer Mitarbeiter hat sie gelernt.
Praktisch die gleiche Thematik.

Am besten ist sowieso Kotlin :wink: Da hast die Java/JVM Umgebung + moderne Sprachfeatures (ich find Syntax wichtig). Und es ist so einfach zu verstehen und zu lesen wie es Java mal war.

Ueberhaupt find ich den Kurs, den Oracle aktuell einschlaegt irgendwie fragwuerdig. Und mit JavaFX hat Java/Oracle sowie auf ganzer Linie ins Klo gegriffen.

Fuer C#/.NET spricht IMHO vor allem sowas wie Unity (und viele andre Werkzeuge setzen auf .NET, Stichwort DirectX). Das is irgendwie spannender als irgendwelche Backendserver. Oder das gehassliebte Javascript, schlicht weil das Deploymentthema nicht existiert.

Am Ende ist aber die Sprache eh das geringste Problem in der Softwareentwicklung. Viel schwieriger ist die Teamorganisation und damit im Zusammenhang, die sozialen Probleme.

Das bewerte ich jetzt nicht über, aber… bei sowas muss man i.a. auch vorsichtig sein. Ähnliche Argumente gab es auch schon im Stil von „Wer C++ kann, kann auch Java“ - und auch wenn es, je weiter man abstrahiert und von Konzepten redet, immer größere Gemeinsamkeiten gibt, kann das auch ganz schön nach hinten losgehen…

Gibt’s auf die andere Umfrage einen Link? (Ich wollte schon immer mal ein bißchen trollen ;-))

Die Jugend steht auf Haskell IME

Die starke Java Community hat sich aus der Open Source Bewegung gebildet, Apache Jakarta, etc. pp.
In Java kommen so gut wie alle Bibliotheken, Frameworks etc. pp. und aus der Open Source Ecke, siehe auch JCP usw. usf.
Wenn ich in Java eine Jar verwende, kommt die eigentlich nie von Sun/Oracle (von reinen Interfaces mal abgesehen, und dann eben JCP durch JSRs)…

Was tut sich denn da so in der .NET Welt?
Sind die meisten Bibliotheken von Open Source Projekten?
Oder kommen die meisten schlicht von MS?
Gibt es eine starke Open Source Community in .NET?

Mei Oberflaechlicher Eindruck ist, dass eben fast alles von MS kommt,und wenn nicht, wird es von VS nicht unterstuetzt…

In vielen Berufsschulen wird Java gelehrt. In Akademien anfangs eher C++ und je nachdem welcher Dozent verfügbar ist auch Java. In FH und Uni nachwievor eher C++. Und in den meisten Stellenangebote wird immer noch nach Java Leuten gesucht. Nichtmal Win 10 hat es geschafft, mehr Leute in die C# Welt zu holen.

Nur nebenbei: Es sollte klar sein, aber all diese Aussagen „Hier-und-da gibt es mehr dies-und-das“ sind immer verzerrt, und es ist praktisch unmöglich, da eine objektive, fundierte und validierbare Aussage zu machen. (Und sowas wie TIOBE Index | TIOBE - The Software Quality Company zählt nicht). Aber auch subjektive Statements können als solche zu einer Diskussion beitragen. Zumindest ist das meine Meinung :smiley: