Wird Java C # einholen? [geschlossen]

17

Heute habe ich eine Frage gestellt, welche Sprache C # oder Java besser für mich ist, um zu lernen. Ich hatte einige großartige Antworten. Eine Sache, die auftauchte, war, dass Java vielleicht jetzt eher hinter C # mit neuen Funktionen steckt. Ich sah einige Weblinks und die meisten wiesen darauf hin, was C # hatte und was Java nicht hatte.

Meine Frage an Sie alle lautet also: Wird Java C # wieder einholen? Und wenn Sie raten würden, wo es in 5 Jahren stehen würde. Hätte es all die Dinge, die jetzt vielleicht fehlen? Wie wäre es mit Java 7?

MandyNelson
quelle
7
-1, mutmaßlich und hypothetisch. Wird zu +1 geändert, wenn der Titel zu "Ist Java hinter C #, und wenn ja, wie könnte es aufholen?"
Nicole
2
Werden Java und C # das Scheme einholen? Lassen Sie mich wissen, wenn Sie anonyme erstklassige Funktionen, Abschlüsse und Fortsetzungen erhalten.
Dietbuddha
5
@dietbuddha: Ich ziehe es vor, meinen Code nicht mit )'s zu verunreinigen , vielen Dank.
Josh K
1
@ JoshK Sie möchten es lieber mit füllen; und rechts? LISP scheint viele Klammern zu verwenden, da jede Funktion sie verwendet und Sie viele Funktionen darin verschachteln.
YuriAlbuquerque

Antworten:

32

Sprachfunktionen sind nur ein sehr kleiner Teil dessen, was Java und C # zum Ticken bringt. Letztendlich sind dies Teile größerer J2EE- und .NET-Ökosysteme.

Beide haben ihre eigenen Stärken und sollten in den nächsten 5 Jahren größer werden.

Schamit Verma
quelle
19
+1 für "Sprachfunktionen sind ein sehr kleiner Teil dessen, was Java und C # tickt"
Craige
1
Ja, die APIs und Bibliotheken sind in vielerlei Hinsicht viel wichtiger.
Michael K
2
Einverstanden, aber die Fragen sind über die Sprache und nicht das Ökosystem;)
Philippe
1
Ich hasse es wirklich, über sehr kurze Antworten +1 zu geben, aber Sie sind auf dem Laufenden. Würde mich freuen, wenn Sie diese Antwort erweitern.
Nicole
3
Die Frage lautet: "Welche Sprache in C # oder Java könnte ich besser lernen?" Und "Wo würde sie in 5 Jahren stehen?" Beide Aspekte hängen mehr vom Ökosystem als von der Sprache ab.
Shamit Verma
16

Ich hätte ja gesagt, bis Oracle ins Bild kam. Das ist traurig, denn ich habe es wirklich genossen, die Features, die Java und C # in den letzten sechs Jahren hatten, zu erweitern.

Jesse C. Slicer
quelle
2
Warum wird Oracle Ihrer Meinung nach Java sabotieren?
2
Ich glaube einfach nicht, dass die Unternehmenskultur dort die gleiche Beweglichkeit aufweist, die Sun bei der Integration von Funktionen hatte.
Jesse C. Slicer
8
@Glenn, der Rechtsstreit zwischen Oracle und Google zeigt mir, dass sie kein Open Source "bekommen" und dass große Unternehmen sich weniger für Java für die zukünftige Entwicklung entscheiden. groklaw.net/staticpages/index.php?page=OracleGoogle
Tangurena
Oracle könnte nicht genau "Java schrauben", sondern die JVM. Derzeit haben sie das Projekt, zwei JVM-Implementierungen zu kombinieren, die sie von BEA und HotSpot for Sun erworben haben. Während sie dabei sind, haben sie das Da Vinci Machine-Projekt komplett ausgelassen.
Vartec
2
Ich bin auf Oracle gemischt. Der Android-Anzug ist ein bisschen abschaltbar, aber sie tragen zum Linux-Kernel bei und sind die Hauptentwickler des Btrfs-Dateisystems. Oracle scheint Open Source besser "zu bekommen" als Microsoft, aber das sagt nicht viel.
Jonescb
6

Als Sprache erweitere ich Java nicht, um Innovationen in nennenswertem Umfang hinzuzufügen, vor allem, weil diejenigen in der Open-Source-Community, die auf dem neuesten Stand sind, sich eher auf die neueren JVM-Sprachen konzentrieren, wie Scala, Clojure, Groovy, JRuby und JPython.

Außerdem bedeutet Javas Engagement für die Abwärtskompatibilität, dass das Hinzufügen von Sprachfunktionen von Natur aus schwieriger ist als in den früheren Tagen der Sprache.

Eric Wilson
quelle
5

Das große Fragezeichen hier ist Oracle. Sun hat Java in den letzten etwa einem halben Jahrzehnt erheblich gebremst. Die Hoffnung vieler in der Java-Community war, dass Sun Java ausgliedern oder an jemanden verkaufen würde, der viele Ressourcen und Anstrengungen aufbringen würde. Oracle könnte das sicherlich, aber es ist ein großes Unternehmen mit vielen Gruppen mit eigenen Interessen. Ich vermute, und es ist nur eine Vermutung, dass Oracle Java stagnieren lässt und es hauptsächlich als Instrument für Patentstreitigkeiten verwendet.

Vielleicht verkaufen sie es für einen großen Geldbetrag an Google und alle sind glücklich. Es ist in den Händen von Vorstandsetagen und Anwälten, nicht von Ingenieuren und Software-Designern.

Auf der anderen Seite ist Java auch ohne Verbesserungen eine gute Sprache und hat ein gutes Ökosystem. Ich persönlich bevorzuge C # und die .net-Welt, aber Java ist immer noch eine gute Wahl. Die Zeit wird es zeigen, aber Java ist noch gar nicht so schlecht. (Datums- und Zeitbibliotheken ausgeschlossen ... wow, sind die immer hässlich und chaotisch)

Jason
quelle
1
Es gibt jetzt Bibliotheken von Drittanbietern , um die Probleme mit Datum und Uhrzeit zu beheben.
Michael K
1
Oracle verwendete Java zusammen mit PL / SQL als Sprache für Programme, die sich in der Datenbank befanden, mindestens ab 10 g. Oracle verwendet Java in hohem Maße. Ob dies bedeutet, dass sie Java in eine Richtung bringen, die ich mag, ist fraglich, aber sie werden es nicht töten.
David Thornley
4

Es gibt nichts, mit dem man aufholen könnte, daher ergibt die Frage keinen Sinn.

Nur weil Java C # nicht exakt repliziert, heißt das noch lange nicht, dass es in irgendeiner Weise "minderwertig" ist. Es ist einfach anders. Könnte auch fragen, wann C # Cobol "einholen" wird.

jwenting
quelle
23
Ich stimme nicht zu. C # und Java ähneln sich in vielerlei Hinsicht viel mehr als C # und COBOL. Ich erinnere mich, dass ich eines Tages gelesen habe, dass "C # das ist, was Java hätte sein sollen". Zusammenfassend glaube ich, dass C # und Java direkt miteinander konkurrieren, und nachdem ich mit beiden gearbeitet habe, muss ich sagen, dass ich viele C # -Funktionen in Java habe, aber nicht umgekehrt ...
Philippe
Haben Sie Situationen gefunden, in denen Sie entweder C # oder Java verwenden können? Dh Situationen, in denen Entwickler eine Wahl treffen könnten. Normalerweise hat ein Geschäft bereits Vorlieben / Vorurteile / Vorurteile und die Wahl zwischen Sprachen im selben Ökosystem. ZB zwischen Java und Scala oder zwischen C # und F #
Shamit Verma
2
Ich bin nicht mit der gesamten Designentscheidung einverstanden, die C # getroffen hat, aber wie Java haben sie sich bewusst vorgenommen, C ++ zu ersetzen, und am Beispiel von Java haben sie bewusst einige wichtige Funktionen hinzugefügt, die Java ausgelassen hat. Wenn Sie der Meinung sind, dass diese Funktionen gut sind, muss Java C # "einholen". Insbesondere die Möglichkeit, Inline-Objekte zu erstellen, damit nicht alles, was objektorientiert ist, aufgebläht wird, und ich denke, const. Delegaten sind eine neue Funktion, die sie integriert haben, nicht dass sie nicht als Bibliotheksdatenstruktur erstellt werden können. Ich würde sagen, dass beide C ++ einholen müssen!
Dov
@Philippe, lass dich von seinem Gegenbeispiel nicht einfangen. Er hätte genauso leicht sagen können: "Wann wird C # Java einholen?". Sein Standpunkt ist immer noch, dass es keinen objektiven Grund gibt, warum Java hinter C # steht; es ist alles persönliche Präferenz.
Jonescb
Niemand spricht über Replikation, aber C # hat einige wesentliche Merkmale, die Java gerade in Erwägung zieht, JETZT zu implementieren (wie Lambdas, die mit einer hässlichen Objektimplementierung emuliert werden).
YuriAlbuquerque
4

Die Frage, ob C # oder Java der anderen überlegen ist, steht zur Debatte, aber anstatt mich auf die Sprachmerkmale der einen oder anderen Sprache zu konzentrieren, möchte ich mich lieber darauf konzentrieren, was mit der Weiterentwicklung einer Sprache zu tun hat. Das ist eine Tatsache, mit der sich wohl niemand auseinandersetzen wird: Java ist älter als C #.

Probleme beim Ändern der Funktionsweise einer Sprache:

  1. Wenn Sie die Abwärtskompatibilität aufheben, ärgern Sie viele Entwickler
  2. Wenn Sie Ihre Entwickler verärgern, wechseln sie zu einer anderen Sprache, die sie besser unterstützt. Daher kein Grund, weiter mit der Sprache zu arbeiten.
  3. Java traf einige Designentscheidungen schon früh mit dem Druck, die Sprache auf den Markt zu bringen. Die Hoffnung war, zurück zu gehen und einige der Lücken auszufüllen. Diese Entscheidungen plagen immer noch die Sprache, weil die Betreuer nicht gegen den ersten Punkt verstoßen wollen.
  4. Java hat viel Neuland betreten und ein für allemal bewiesen, dass eine Sprache, die mit Müll gesammelt wurde, ernst genommen werden kann - und für die meisten Menschen eine gute Leistung erbringt.
  5. C # kam später dazu und lernte eine Menge der Lektionen, in die Java geraten ist - so konnten sie einige der technischen Einschränkungen vermeiden, die Java aufgrund von Punkt 3 hat.
  6. Neue Sprachfunktionen müssen ein echtes Problem auf sinnvolle Weise lösen. Nicht jede Sprachfunktion ist im Kontext der Sprache, zu der Sie sie hinzufügen möchten, sinnvoll. Aus diesem Grund werden Java und C # trotz ihrer Ähnlichkeiten weiterhin unterschiedliche Sprachen sein.

Hat C # mehr Sprachfunktionen als Java? Ich glaube schon. Sind sie nützlich Ich glaube schon. Bedeutet das, dass C # besser oder ausgereifter als Java ist? Dem stimme ich nicht zu. Sie sind schlicht und einfach verschieden. Java wird niemals alle Funktionen von C # haben, da C # niemals alle Funktionen von Java haben wird.

Eine der Funktionen von Java, die Fähigkeit, ein Programm unter Windows zu schreiben und auf Unix oder Mac zu implementieren, wird von der Microsoft-Unterstützung niemals direkt ausgeführt. Warum fragst du? Es liegt nicht daran, dass Microsoft böse ist (ob das stimmt oder nicht, ist mir eigentlich egal). Das liegt daran, dass sie eine Lektion gelernt haben, die Sun noch nie gelernt hat: Einmaliges Schreiben an einer beliebigen Stelle macht die Betriebssysteme und die Hardware zu einer Ware. Wenn Sie daran interessiert sind, mit dem Verkauf Ihres Betriebssystems Geld zu verdienen, möchten Sie nicht, dass es trivial ist, das Betriebssystem auszutauschen und immer noch eine Anwendung zu haben. Wenn Sie das getan haben, können Sie mit dem Betriebssystem keinen Gewinn erzielen, da es immer billigere Optionen gibt.

Berin Loritsch
quelle
Warum ist es wichtig, dass Mono nicht von MS betrieben wird? Mono funktioniert wirklich gut. Unterschätze es nicht.
Kugel
Mono ist kein Problem, aber nicht alle .NET-APIs werden direkt unterstützt. Während sie Fortschritte machen und einen langen Weg zurückgelegt haben, gibt es Einschränkungen - insbesondere bei Desktop-Anwendungen. Ich bin mir nicht sicher, wie nahe Mono gekommen ist oder ob es rechtlich möglich ist, Winforms oder WPF zu implementieren. Ich bin mir jedoch ziemlich sicher, dass es kompatibel ist, wenn ausschließlich auf dem Server gearbeitet wird. Hab in letzter Zeit nicht reingeschaut.
Berin Loritsch
Ich denke, "die Möglichkeit, ein Programm unter Windows zu schreiben und auf Unix oder Mac zu implementieren, wird niemals direkt durch die Unterstützung von Microsoft geschehen" wurde jetzt widerlegt
JoelFan,
Zu der Zeit, als ich die Antwort schrieb, war es nicht. Also C # hat ein Microsoft eine Laufzeitumgebung und Bibliotheken geschrieben, die auf Mac und Unix funktionieren? Mono ist nicht direkt von Microsoft, obwohl möglicherweise einige Microsoft-Entwickler daran arbeiten. Ich habe immer noch Zweifel an einer Desktop-App, die auf WPF für Linux basiert. Nur die Serverseite ist möglicherweise in Ordnung.
Berin Loritsch
1

Java benötigt wirklich keine neuen "Features" mehr als C oder C ++. Es ist eine gut konzipierte Sprache für die objektorientierte Entwicklung. Mögliche Ergänzungen sind das Erstellen von Bibliotheken zur Ausführung einer Vielzahl von Aufgaben. Das Gleiche gilt für C # - die meisten Funktionen werden hinzugefügt, damit die Sprache mehr Aufgaben erledigt. Persönlich denke ich, dass die meisten dieser Funktionen nicht erforderlich sind - Zeiger in OO sind wirklich so fluffig, es sei denn, Sie arbeiten auf Hardware-Ebene (an diesem Punkt ist es wahrscheinlich besser, so etwas wie C zu verwenden). Außerdem soll das Ausführen in einer VM den direkten Zugriff auf die Hardware erschweren, wenn nicht sogar unmöglich machen.

Unix begann den Trend, Module zu entwickeln, die eines sehr gut können. Ich denke, dass sowohl Java als auch C # beim Feature-Creep etwas aus dem Ruder laufen. Es ist besser, einen leicht erweiterbaren Kern zu erstellen als eine riesige Mehrzweck- "Sprache", die eher einem Framework ähnelt. Für mich erfüllt Java diese Anforderung besser als C #.

Michael K
quelle
7
Sprache ohne richtiges Lambda ist keine verwendbare Sprache. Wenn dieses eine Feature zu Java hinzugefügt wird, würde ich dem Rest Ihrer Argumente zustimmen. Ohne das ist Java überhaupt nicht erweiterbar, es ist kaum verwendbar.
SK-logic
2
@Craige Persönlich (Meinung) Ich mag keine sytaktischen Eigenschaften. Ich möchte, dass die Sprache mir aus dem Weg geht - sehr minimal.
Michael K
1
@Michael - Ich kann die Verbindung zwischen einer Sprache mit syntaktischen Merkmalen und einer Sprache, die Ihnen im Weg steht, nicht herstellen. Nur weil eine Sprache bestimmte Funktionen hat, heißt das nicht, dass Sie sie verwenden müssen. Nehmen Sie zum Beispiel die Get- und Setter-Methoden von C #. In 90% der Fälle sparen Sie sich das Schreiben von Hunderten von Zeilen redundanten Codes. Sie können jedoch auch Ihre eigenen schreiben, wenn Sie dies wünschen.
Craige
1
@Craige, wenn Sprache Funktionen hat, müssen Ihre Tools diese zumindest kennen. Und die Stärke des Java-Ökosystems liegt in erster Linie in seinen Tools, die aufgrund der sprachlich minimalistischen Einfachheit durchaus möglich sind.
SK-logic
1
@SK, ich verstehe nicht, wie man sagen kann, dass eine Sprache mit Lambda unbrauchbar ist. C hat keine Lambdas, und C ++ ruft sie in C ++ 0x ab, und die Leute benutzen diese Sprachen seit Jahrzehnten. Nur weil Sie funktionale Programmierung bevorzugen, die imperitive Programmierung nicht ungültig macht.
Jonescb
1

An vielen Funktionen, die C # hinzufügt, ist nichts auszusetzen, aber angesichts der Geschwindigkeit, mit der sie die Sprache ändern, erschweren sie es Mono bewusst, wenn nicht sogar unmöglich, Schritt zu halten. Wenn ja, dann sage ich, dass wir darauf warten, dass C # in Bezug auf die Anzahl der Systeme, auf denen es implementiert werden kann, Java einholt. Es reicht nicht aus, nur unter Windows zu laufen.

Dov
quelle
0

Ich werde kein Diskussionsforum eröffnen, aber ich denke, dass Java schon lange vor C # hier war und in dieser Hinsicht scheint C # eher eine Replikation als Java zu sein.

Zur Beantwortung Ihrer Frage: Java und C # sind verschiedene Sprachen, daher können Sie sie nicht nur anhand ihrer Funktionen vergleichen. Was Sie in Java können, können Sie möglicherweise nicht in C # und umgekehrt.

Schließlich ist dies wie das Starten eines Themas zwischen Windows und Linux.

Adam Arold
quelle