Vergleich von CSharp und Java: Unterschied zwischen den Versionen
Aus Byte-Welt Wiki
Zur Navigation springenZur Suche springenK (1 Versionen) |
K |
||
Zeile 31: | Zeile 31: | ||
|- | |- | ||
!Objektorientierung | !Objektorientierung | ||
− | |align="center" |Alles ist objektorientiert bis auf die primitiven Datentypen. Diese werden seit Java5 automatisch in ihre Wrapperklassen gecastet. | + | |align="center" |Alles ist objektorientiert bis auf die primitiven Datentypen. Diese werden seit Java5 automatisch in ihre Wrapperklassen gecastet (Autoboxing). |
|align="center" |Alles ist objektorientiert bis auf die primitiven Datentypen. Diese werden automatisch in ihre Entsprechungen im System-Namespace gecastet. | |align="center" |Alles ist objektorientiert bis auf die primitiven Datentypen. Diese werden automatisch in ihre Entsprechungen im System-Namespace gecastet. | ||
|- | |- | ||
Zeile 59: | Zeile 59: | ||
|- | |- | ||
!GUIs | !GUIs | ||
− | |align="center" |[[Swing]] und [[AWT]] (One-Step-Coding) | + | |align="center" |[[Swing]] und [[AWT]] (One-Step-Coding), Seit Java 7 ist JavaFX in die API integriert |
|align="center" |Windows Forms (One-Step-Coding) | |align="center" |Windows Forms (One-Step-Coding) | ||
|- | |- |
Version vom 17. Januar 2015, 16:06 Uhr
Dieser Artikel zählt einige der wichtigsten Unterschiede und Gemeinsamkeiten zwischen den Programmiersprachen C# und Java auf.
Java | C# | |
---|---|---|
Übersetzung | javac übersetzt Quellcode in Java-Bytecode, JIT-Compiler kann diesen zur Laufzeit in Maschinencode übersetzen | csc übersetzt Quellcode in IL-Code, JIT-Compiler kann diesen zur Laufzeit in Maschinencode übersetzen |
Interpretation | Bytecode wird von der JRE interpretiert | IL-Code wird von der CLR interpretiert |
Codestrukturierung | Die Klassen werden in Packages eingeordnet, die der Ordnerstruktur entsprechen müssen. Diese werden mit import importiert, es wird dabei aber kein Quellcode direkt in die Datei eingebunden. | Die Klassen werden in Namespaces eingeordnet. Diese werden mit using importiert, es wird dabei aber kein Quellcode direkt in die Datei eingebunden. |
Variablentypen | boolean, byte, char, short, int, long, float, double | bool, sbyte, byte, char, short, ushort, int, uint, long, ulong, float, double, decimal |
Mehrdimensionale Arrays | nur Arrays von Arrays möglich | Mehrdimensionale Arrays und Arrays von Arrays möglich |
Variablenübergabe | by value | by value, mit Parametern ref oder out auch by reference |
Objektorientierung | Alles ist objektorientiert bis auf die primitiven Datentypen. Diese werden seit Java5 automatisch in ihre Wrapperklassen gecastet (Autoboxing). | Alles ist objektorientiert bis auf die primitiven Datentypen. Diese werden automatisch in ihre Entsprechungen im System-Namespace gecastet. |
Interfaces | Existieren, können Methoden und Konstanten enthalten | Existieren, können Methoden, Properties, Indexer und Ereignisse enthalten |
Zugriff auf Variablen | getter/setter-Methoden | Properties, die getter und setter Methoden implizieren |
Polymorphie | Laufzeitpolymorphie (late binding) | Standardmäßig Kompilationszeitpolymorphie (early binding), mit den Schlüsselwörtern virtual und override auch late binding |
Speichermanagement | Automatisch per Garbage Collector | Automatisch per Garbage Collector |
enums | ja (Seit Java 5) | Ja |
structs | Nein | Ja |
GUIs | Swing und AWT (One-Step-Coding), Seit Java 7 ist JavaFX in die API integriert | Windows Forms (One-Step-Coding) |
Indexer | Nein | Ja |
Funktionszeiger | Nein | Nein, aber Delegates |
Reflection | Ja | Ja |
Operatorüberladung | Nein | Ja |
Pointer | Nein | Ja, in unsafe-Blöcken |