Vergleich C# und Java

M

Mart

Gast
Also im Internet gibt es viele Vergleiche wie und wo C# und Java vergleichbar sind usw...

was ich zb. gefunden habe
C#Java
kann mit Objekte und Constructs umgehen ( ka was constructs sind)Ist komplett mit Objekte und klassen
C# ist näher an java dran als wie an C ( ka ob das stimmt ) weil C sehr hardware nahe ist und C# eher wie java damit umgehtJava hat natürlich die JVM
C# funktioniert nicht auf allen Geräten... ja gut aber C# funktioniert auf linux windows und mac da versteh ich das nichtfunktioniert überall gleich
was hängt an den Sachen dran es würde mich schon interessieren da ich gerade viel mit Unity rum spiele und C# sich doch ähnlich zu java anfühlt aber ich bin da noch nicht so in der Materie drin dass ich an die großen unterschiede ran gekommen wäre


oder gibt es andere begründungen für unterschiede die "wirklich" wichtig sind... zb dass C# const hat und java final ... meine jüte da kann man hinweg sehen :D
 

Barista

Top Contributor
C# hat auch eine Art VM.

C# funktioniert nicht auf allen Geräten... ja gut aber C# funktioniert auf linux windows und mac da versteh ich das nicht
Hängt von der .net-Version ab.

Früher lief C# nur auf Windows, inzwischen auch auf Linux und Mac sowie Android und iOS (Xamarin).

Mit Blazor läuft es sogar im Browser (WebAssembly).

Prinzipiell ist C# umfangreicher als Java.

Da gab es Lambdas schon viel früher.

Es gibt Structs und vorzeichenlose numerische Typen.

Sealed classes gab es in C# auch schon lange vor Java.
 

Barista

Top Contributor
C# hat auch eine Art VM.
noch nie davon gehört was ist das und wie heist das
Virtuelle Maschine.

ka was structs sind
Zusammenfassung mehrerer Werte, stammt aus C.

das mit dem "umfangreicher" kann ich nur nahc unity beurteilen ... da gibts halt doch schon sehr viel krimskrams den man nicht selber machen muss wie zb euler Winkel
Das sind wahrscheinlich Bibliotheken. Hat erst mal nichts unmittelbar mit der Sprache zu tun, Bibliotheken gibt es für viele Sprachen.

und die ganzen Tools die es für C# gibt wie unity hub
Hat erst mal nichts unmittelbar mit der Sprache zu tun, Tools gibt es für viele Sprachen.
 
K

kneitzel

Gast
Also .Net hat keine VM. Da hat man lediglich ein zusätzlichen Layer - aber natürlich vollen Zugriff auf alles, wenn man es wünscht. Das ist ein riesen Unterschied zu Java. (Da kann man mit JNI und so auch was basteln, aber das ist kein Vergleich zu .Net!)

Structs sind ähnlich wie bei C++ - https://docs.microsoft.com/de-de/dotnet/csharp/language-reference/builtin-types/struct

Ansonsten ist C# deutlich aufgeräumter von den Konstrukten her. Java ist extrem von Boilerplate Code geprägt. Diese ganzen Getter / Setter. Standard Properties wären das in C# was in Java dann Variable mit Getter und Setter wäre.

Ansonsten sind die Sprachen aber prinzipiell ebenbürtig. Von der Geschichte her hat Microsoft eigentlich immer mehr den Microservice Ansatz verfolgt. Das mit "großem App-Server" gab es da so in der Form eigentlich nie. (Teilweise gab es Ansätze aber die wurden nie wirklich genutzt) Web Service war also immer extrem Trivial mit WCF ...
 
M

Mart

Gast
es gibt ja auch von der Syntax her kleinere unterschiede wo "c# simpler sein sollte als java" ... angeblich gibts da sooooo viel nur ich kenn nur einen

wenn man eine einzeilige Methode hat kann man es so schreiben
Java:
public void method() => return wert;
weis jemand wo es noch so unterschiede gibt die C# "einfacher" machen als java
 

White_Fox

Top Contributor
C# ist näher an java dran als wie an C ( ka ob das stimmt ) weil C sehr hardware nahe ist und C# eher wie java damit umgeht
Weder Java noch C# sind irgendwie nahe an C dran. C ist eine rein prozedurale Sprache. Es gibt zwar Leute die behaupten daß man auch in C objektorientiert arbeiten kann, aber das ist ziemlicher Unfug.

Ansonsten geben sich beide Sprachen nicht allzuviel, meiner Meinung nach. Java wird, soweit ich das sehe, von einer größeren Gruppe Freiwilliger mitentwickelt was teilweise in langwierige Abstimmungeprozesse mündet, bei C# machen die Microsoftis einfach was sie wollen.
 

mihe7

Top Contributor
wenn man eine einzeilige Methode hat kann man es so schreiben
Java:
public void method() => return wert;
Ich gehe mal davon aus, dass der Rückgabetyp dann aber nicht void sein kann.

Java:
// C#
public int method() => return wert;
// Java
public int method() { return wert; }
 
M

Mart

Gast
Ich gehe mal davon aus, dass der Rückgabetyp dann aber nicht void sein kann.

Java:
// C#
public int method() => return wert;
// Java
public int method() { return wert; }
es ging um den pfeil dass man keine klammern braucht nicht um den sinn davon ... hätte ich erwähnen sollen xD
 
K

kneitzel

Gast
es gibt ja auch von der Syntax her kleinere unterschiede wo "c# simpler sein sollte als java" ... angeblich gibts da sooooo viel nur ich kenn nur einen

wenn man eine einzeilige Methode hat kann man es so schreiben
Java:
public void method() => return wert;
weis jemand wo es noch so unterschiede gibt die C# "einfacher" machen als java
Das siehst Du doch schon bei den Properties:
Java:
public string Name { get; set; }

Das ist eine Property, die sonst aus einem Feld besteht und dann eine get und eine set Implementation bekommen würde. Und das ist dann nur eine Zeile.

Man müsste sich das alles im Detail betrachten. Aber die Entwicklung von Java hat sich ja auch bewegt. Java ist ein Kolloss, der sich lange kaum bewegt hat. Das ändert sich aber, weil Oracle seine Unfähigkeit einsieht und alles abgibt. Aber selbst da schaffen sie es, die tollsten Dinge anzustellen!

wie konnte dann c# so "aufsteigen" bei der spiele programmierung und java nicht
Weil Java diesbezüglich wenig zu bieten hat. Da alles voll einzubauen ist einfach zu komplex. Microsoft hat halt mit DirectX frühzeitig eine Grundlage bereit gestellt für Spiele. OpenGL konnte da aus meiner Sicht nicht mithalten.

Und Microsoft macht eins genial: Die Unterstützung von Entwicklern. Du bist Entwickler? Dann kriegst Du ja fast alles für lau!

Aber sie verscherzen es sich mit einigen. Tolle Produkte bauen sie nur um sie dann einzustampfen. Das macht man paar Mal aber wenn man oft genug abgewatscht wurde, dann wacht man irgendwann auf. So bin ich dann auch wieder bei Java gelandet ....
 
M

Mart

Gast
es wurde für 1en user gemacht und war nicht wie linux darauf ausgelegt dass man 1 datei system hat auf dem server und übern x11 server dann mit vielen usern an 1em dateisystem was machen kann das fällt bei windows eher bescheiden aus ...

um es so auszudrücken... ich kriege es gebacken die dateien von überall zu erreichen in linux und die Rechte so einzustellen dass es passt


bei windows mit der "dateiumgebungsfreigabe aktivieren" fühlt man sich wie ..." hier nimm den lolli ... oder auch nicht " man kann gefühlt nichts damit machen
 
K

kneitzel

Gast
Also da mixt Du Dinge durcheinander.

Dateisystem hat mit Freigaben erst einmal nichts zu tun. Und NTFS ist nicht für einen User gemacht. Windows NT ist nicht von DOS her entstanden und setzt nicht auf DOS auf (im Gegensatz zu den ganzen Windows 1, 2, 3, 95, 98 und ME Varianten).

Und Windows hat - beim Server - seit jeher entsprechende Remote Desktop Lösungen. Die werden dann durch Software von Dritten noch aufgemöbelt, aber da ist das Problem aus der Vergangenheit, dass Microsoft da wegen Kartellrecht immer Knüppel zwischen die Beine geworfen bekommen hat.

Und wie machst Du unter Linux Dateifreigaben? Das ist doch der letzte Dreck! Sorry, wenn ich das so deutlich sage. Bau ein Windows Server auf und mit wenig Mausklicks kriegst Du sofort einiges. Bau sowas erst einmal mit Linux auf. LDAP konfigurieren ... dann Samba mit LDAP Einbindung und und und ... Systeme in einer Domain die sich vertrauen? Mal Kerberos eingerichtet oder so? (Zumal da die Unterstützung bei Linux und Mac mangelhaft ist. Da hat man dann die Autorisierung an der Domain aber das Ticket dann bei Anwendungen einbinden? Welche Linux oder Mac Software unterstützt das denn?)

Aber zurück - Dateisystem ist ja nur Datenablage auf dem Datenträgern. Wir wollen aber Daten über das Netz schicken.
Und dann greift man auch was zurück? SMB mit Samba? Also willkommen bei der Windows Welt.
Oder ist NFS eine Alternative? Wenn man damit schon gearbeitet hat, dann wird man das nicht wirklich wollen. AFP von Apple? Das hat Apple doch schon fallen gelassen und funktioniert mit dem neuen Dateisystem APFS doch auch nicht mehr ...

Aber wir sind von dem eigentlichen Thema weg gekommen. Aber bei Betriebssystemen muss man mir nicht wirklich viel erzählen, denn das war viele Jahre genau mein Umfeld :)
 

Barista

Top Contributor
So etwas wie die Elvis-Operatoren für die null-Behandlung wurden für Java auch mal diskutiert, sind aber nicht in Java reingekommen.
 
K

kneitzel

Gast
Kotlin was auch java ByteCode erstellt macht das ist Null sicher. Und kann viel tipparbeit ersparen.
ZB getter setter bei einer DatenKlasse ist sogar die toString Methode schon dabei.
Also sowas wie records in Java ... da ist sogar auch equals und hashcode mit dabei :)
 
K

kneitzel

Gast
Aber ein ganz wichtiger Unterschied ist noch nicht genannt worden:

Operator Overloading!

Das ist wichtig, dann das führt dann dazu, dass man eben string Instanzen per == vergleichen kann. Oder wenn man da BigDecimal als Klasse hat, dann muss man da nicht irgendwelche .add(..) Konstrukte bauen oder so ...
 

Jw456

Top Contributor
Aber ein ganz wichtiger Unterschied ist noch nicht genannt worden:

Operator Overloading!

Das ist wichtig, dann das führt dann dazu, dass man eben string Instanzen per == vergleichen kann. Oder wenn man da BigDecimal als Klasse hat, dann muss man da nicht irgendwelche .add(..) Konstrukte bauen oder so ...
geht auch in kotlin
 

Neumi5694

Top Contributor
Die getter und setter sind in C# angenehmer zu handhaben.
In anderen Syntax-Bereichen holt Java auf.
Enums sind in Java viel mächtiger als in C#, allerdings muss man in Java für Mehrfachnennungen als Methodenparameter auf eine Collection zurückgreifen und die Methode muss dies explizit erlauben/erwarten.

C# ist nicht "einfacher" als Java. Die beiden sind sich im Grunde durchaus ebenbürtig, in Java sieht man im Text halt deutlich mehr Klammern, da hier immer noch alles mit Methoden geschrieben steht, während C# wie bei den Gettern und Settern Alternativen bietet.
Problematisch wird's, wenn man mit anderer Windows-Software interagieren will. Klar geht das auch mit Java, aber die .net Ansteuerung wirkt hier dann doch eher wie eine rektale Augenoperation. Wenn man nur wenige verschiedene Zugriffe hat, lohnt sich ein Wrapper von C# nach C++.
Nach Visual J++ hat Microsoft mit J# versucht, Java-Programmierer auf "ihre Seite" zu ziehen - mit mäßigem Erfolg.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
P JNA - JNI - pures Java - Vergleich Allgemeine Java-Themen 6
U Java Performance im Vergleich zu C++ in speziellem Anwendungsfall Allgemeine Java-Themen 6
P Vergleich: Java - .net Allgemeine Java-Themen 5
C Performance Vergleich, Java vs. Tcl/Tk Allgemeine Java-Themen 3
Neumi5694 double Vergleich Allgemeine Java-Themen 19
D Vergleich OracleJDK/OpenJDK Allgemeine Java-Themen 7
T Komplexitätsoptimierung String vergleich Allgemeine Java-Themen 4
T If Vergleich ergibt nicht das richtige Ergebnis Allgemeine Java-Themen 2
K Vergleich von Strings von Objekten Allgemeine Java-Themen 4
E Problem mit Array vergleich Allgemeine Java-Themen 4
M Vergleich (unscharf) von Screenshots Allgemeine Java-Themen 0
L Vergleich-Xml-Daten Allgemeine Java-Themen 3
S BufferedImage vergleich mit Subimage Allgemeine Java-Themen 1
Z Vergleich zwischen int und Object Allgemeine Java-Themen 1
M Datums vergleich klappt überhaupt nicht.. Allgemeine Java-Themen 4
S Calendar vergleich Allgemeine Java-Themen 2
G Zeilenweiser Vergleich Allgemeine Java-Themen 10
E Vorschläge, effizientes Hashing von Dateien für vergleich Allgemeine Java-Themen 7
W Vergleich eines Datenträgers auf neue Dateien Allgemeine Java-Themen 14
C Vergleich von Enums gibt inkorrekte Werte Allgemeine Java-Themen 6
N Input/Output Vergleich von identischen Strings schlägt fehl Allgemeine Java-Themen 5
N Vergleich eigener Klassen Allgemeine Java-Themen 5
P J-Unit vergleich von 2 Objekten merkwürdig Allgemeine Java-Themen 7
K GUI-Button Inhalte vergleich - TicTacToe Grundriss Allgemeine Java-Themen 11
N Vergleich von generischen Typen Allgemeine Java-Themen 2
S String-Vergleich in if Allgemeine Java-Themen 7
I Vergleich zweier Felder Allgemeine Java-Themen 3
M Vergleich von TreeSet<HashSet>^2 Allgemeine Java-Themen 8
F Vergleich zweier Listen Allgemeine Java-Themen 4
D Was ist schneller? Zuweisung oder Vergleich? Allgemeine Java-Themen 18
O String NICHT vergleich Allgemeine Java-Themen 7
G Vergleich von .jpg Dateien Allgemeine Java-Themen 2
I vergleich und zählen von Strings Allgemeine Java-Themen 7
K Vergleich von Icons . Allgemeine Java-Themen 8
N vergleich mit while und for schleife Allgemeine Java-Themen 7
M Vergleich im geordeten Vector und Methodenaufruf Allgemeine Java-Themen 2
minzel String in String (Vergleich) Allgemeine Java-Themen 2
J vergleich zweier datenstrukturen Allgemeine Java-Themen 6
T Vergleich von Tastatureingabe mit dem was in der Datei steht Allgemeine Java-Themen 21
N Split -> IF-String vergleich Allgemeine Java-Themen 5
N Vergleich zweier Hashtable / mehrere Enumerations Allgemeine Java-Themen 7
B bit vergleich oder regex Allgemeine Java-Themen 1
OnDemand Java Deployment Vaadin Allgemeine Java-Themen 3
D Hat Java eine Library um JavaScript auszuwerten? Allgemeine Java-Themen 2
Zrebna Wieso sind eigentlich JUnit-Tests in src/test/java platziert - nur Konvention? Allgemeine Java-Themen 7
N LlaMA, KI, java-llama.cpp Allgemeine Java-Themen 39
V Java-Codierungsherausforderung: Navigieren durch die Macken der Datumsmanipulation Allgemeine Java-Themen 2
E Output Fehler (Java-Programm Kuchen) Allgemeine Java-Themen 11
M java: unexpected type Allgemeine Java-Themen 2
harrytut Java Input/Output Tests Junit Allgemeine Java-Themen 3
B Java Discord bot auf ein Root Server? Allgemeine Java-Themen 1
BetziTheRealOne Java PKIX path building failed as non Admin Allgemeine Java-Themen 15
D Linux, Java-Version wird nicht erkannt bzw. welche Einstellung fehlt noch? Allgemeine Java-Themen 19
KonradN Java 21 Release Allgemeine Java-Themen 5
V Umgang mit fehlenden Daten in einer Java-Datenanalyseanwendung Allgemeine Java-Themen 5
P Fehler: Hauptklasse Main konnte nicht gefunden oder geladen werden Ursache: java.lang.ClassNotFoundException: Main Allgemeine Java-Themen 24
K Java Anwendung machen Anleitung Allgemeine Java-Themen 5
G java.io.listFiles() Allgemeine Java-Themen 3
8u3631984 Frage zu Java Streams min / max Allgemeine Java-Themen 17
S Java Programm lässt sich vom USB-Stick starten, aber nicht von HDD Allgemeine Java-Themen 16
K Java-Projekt Allgemeine Java-Themen 11
K Java-Projekt Allgemeine Java-Themen 0
ruutaiokwu Welcher Browser unterstützt heutzutage noch Java Applets? Allgemeine Java-Themen 5
Jose05 Java-Klasse im extra cmd-Fenster ausführen Allgemeine Java-Themen 3
rode45e Java Threads Allgemeine Java-Themen 4
G java.io.listFiles() Allgemeine Java-Themen 2
N Java Dynamic Proxy Allgemeine Java-Themen 3
N Leichte Java Gegner Ki Allgemeine Java-Themen 10
A Java modul Problem Allgemeine Java-Themen 4
Thomasneuling Java Jar datei erstellen, von Projekt, dass auch Javafx Dateien, FXML Dateien und CSS Dateien, sowie Bilder enthält? Allgemeine Java-Themen 14
V Funktionale Schnittstelle in Java Allgemeine Java-Themen 3
OnDemand Java String in Hashmap als Key NULL Allgemeine Java-Themen 27
urmelausdemeis Exception in thread "main" java.lang.Error: Unresolved compilation problem: Allgemeine Java-Themen 7
berserkerdq2 Wenn ich bei Intelij javafx mit maven importieren will, muss ich das in die pom.xml reintun, aber warum noch in module-info.java? Allgemeine Java-Themen 3
KonradN Java 20 am 21. März Allgemeine Java-Themen 1
O Java Website Stock Bot Allgemeine Java-Themen 3
J Front-/Backend in Java Allgemeine Java-Themen 14
doopexxx JAVA Google Webcrawler Allgemeine Java-Themen 1
J JavaScript innerhalb eines Java Projekts ausführen Allgemeine Java-Themen 2
A Java Programm erstellen hilfe Allgemeine Java-Themen 10
G java.lang.NoClassDefFoundError: org/aspectj/lang/Signature Allgemeine Java-Themen 2
lalex1491 Java Aktienkurse nachfragen Allgemeine Java-Themen 4
J Class to link Java Allgemeine Java-Themen 4
V Wie funktioniert das Schlüsselwort "final" von Java? Allgemeine Java-Themen 19
mrStudent Inferenz JAVA Allgemeine Java-Themen 6
U URI Rechner (Java Script) Allgemeine Java-Themen 7
TheSkyRider Java Geburtsdatum Textfeld Allgemeine Java-Themen 7
mihe7 Java 19 JavaDocs: Browserintegration Allgemeine Java-Themen 0
Encera Gleichzeitiges Ausführen und verbinden von 2 Java-Klassen über die Eingabeaufforderung und Eclipse Allgemeine Java-Themen 21
H Java Rechner Programmierung der Mathematik Allgemeine Java-Themen 33
Lennox Schinkel Java Kara Auf einen Java Host laufen lassen Allgemeine Java-Themen 17
C Fußnoten von DocX mit Java Allgemeine Java-Themen 2
C Fußnoten in DocX mit Java Allgemeine Java-Themen 1
M Aussagenlogik in Java Programmieren Allgemeine Java-Themen 22
B Per Java Word Dokument schreiben? Allgemeine Java-Themen 8
krgewb Java-Bibliothek für ONVIF Allgemeine Java-Themen 1
KonradN Oracle übergibt (Java Teile der) GraalVM Community Edition an OpenJDK Community Allgemeine Java-Themen 2
Momo16 Brauche Hilfe - Java Projekt kann nicht erstellt werden Allgemeine Java-Themen 12
B Java mit command line und jars benutzen? Allgemeine Java-Themen 18
M Java Überprüfen ob .exe-Datei bereits ausgeführt wird Allgemeine Java-Themen 2

Ähnliche Java Themen

Neue Themen


Oben