C# im Vergleich zu Java Serhad Ilgün Seminar Universität Dortmund SS 03
Gliederung Entstehung von C# und Java Überblick von C# und Java Unterschiede und Gemeinsamkeiten Zusammenfassung und Ausblick
Entstehung Entstehung von C# C-Familie: C, C++ und C# C# erstmals von Microsoft im Jahre 2000 präsentiert Definition von C# (Microsoft): C# soll die besten Eigenschaften aus mehreren Sprachen vereinen!
Entstehung Entstehung von Java Java wurde von Sun Microsystems 1995 als neue Objektorientierte Sprache vorgestellt Java im Grunde auch eine Sprache aus der C-Familie teilweise mit C++ identisch einige Sprachbestandteile von C++ anders umgesetzt oder konsequent eliminiert.
Überblick Java C# objektorientierte Sprache objektorientierte Sprache plattformunabhänig plattformunabhänig breit gefächerte Klassenbibliothek wichtige Komponente der MS-.NET Framework
Überblick Wieso wird C# immer wieder mit Java verglichen 1. beide sind objektorientierte Sprachen 2. Java ist zur Zeit Marktführer unter den objektorientierten Sprachen 3. Microsoft Strategie: Nicht mitbestimmen, sondern den Markt anführen (also den Marktführer ablösen)
Gemeinsamkeiten und Unterschiede Gemeinsamkeiten Verzicht auf Zeiger (C/ C++) alle Objekte erben von Object -Klasse Objekte werden auf dem Heap erzeugt (mit dem Schlüsselwort new) Garbage Collector Thread Unterstützung ( z. B.: synchronized - Konstrukt)
Gemeinsamkeiten und Unterschiede keine Header- Dateien Mehrfachvererbung für Schnittstellen (nicht für Implementierungen) keine globalen Funktionen oder Konstanten (alles in Klassen) Arrays und Strings mit festen Längen und Zugriffskontrolle Bedingungen nur mit boolean -Werten // kein if ( ref ) {... } // Compiler- Fehler // stattdessen if ( ref!= null ) {... }
Gemeinsamkeiten und Unterschiede Datentypen Java C# 1. Value-Typen: - byte, int, long, boolean, etc. 1.Value-Typen: - sbyte, byte, int, long, ulong, boolean, etc. Boxing: Der Boxing-Vorgang wandelt eine Value-Typ in ein Objekt!
Gemeinsamkeiten und Unterschiede Java 2. Referenztypen Referenz dient als Zeiger auf ein Objekt String, Interface, Class oder Array c# 2. Referenztypen Referenz dient als Zeiger auf ein Objekt String, Interface, Class, Objekt, Array oder Delegate Delegate: Ein Delegate ist ein Referenztyp der sich auf eine Methode oder auf eine Objektinstanz und die Instanzmethode dieses Objektes bezieht.
Gemeinsamkeiten und Unterschiede Beispiel: Alle Variablen müssen vor der ersten Verwendung initialisiert werden // Werttypen int x = 100; int y = x; y = y * 2; y=200; x=100; // Referenztypen MyObject ref1 = new MyObject(); ref1.value = 100; MyObject ref2 = ref1; ref2.value = ref2.value * 2; ref1=200; ref2=200;
Gemeinsamkeiten und Unterschiede Polymorphismus class A { public virtual void printname() { Console.WriteLine("A"); } } class B : A { public override void printname() { Console.WriteLine("B"); } } class C : B { public new void printname() { Console.WriteLine("C"); } } public class MyTest { static void Main(){ C c = new C(); c.printname(); //-->C ((B)c).printName(); //-->B ((A)c).printName(); //-->A } }
Gemeinsamkeiten und Unterschiede Properties: Geben die Möglichkeit, auf interne Daten und auf den Code einer Klasse zuzugreifen In Java wird dies durch Get- und Set- Methoden realisiert.
Gemeinsamkeiten und Unterschiede Enums Java //Deklaration public class Ampelfarbe { public final static String GRUEN =grün, public final static String GELB = gelb; public final static String ROT =rot; } //Benutzung String ampel = Ampelfarbe.GRUEN; C# //Deklaration public enum Ampelfarbe {gruen, gelb, rot}; //Benutzung Ampelfarbe ampel = Ampelfarbe.gruen; //Deklarationpublic enum Ampelfarbe : byte { gruen = 0, }; gelb = 5, rot = 5
Zusammenfassung Zusammenfassung C# teilweise identisch aufgebaut wie Java C# besitzt zusätzliche Komponente zu Java Nachteile: - nicht plattformunabhänig - kleine Klassenbibliothek Vorteile: - wichtige Komponente von MS-.NET Framework - leichter Umstieg ist möglich
Ausblick Über 8.000 Projektangebote seit Januar 2001 bescherten Java einen durchschnittlichen Marktanteil von 14 Prozent. Java C++ C#
Ausblick Progranm miersprache Freiberufler mit Kenntnissen in Projektangebote (seit 2001) Anzahl Anteil Anzahl Anteil Java 15.762 39 % 8.146 14 % C++ 14.294 35 % 5.298 9,4 % C# 285 0,7 % 394 0,5 % Tabelle 1: Anzahl Freiberufler in der GULP Profiledatenbank mit Kenntnissen in der jeweiligen Programmiersprache (Stand: 03/03) und Anzahl Projektangebote seit 2001.
Ausblick Marktchancen für die Zukunft Java hat weiterhin gute Zukunftschancen, solange Sun C# hat sehr gute Zukunftschancen, weil 1. sich nicht auf seinen Lohbeeren ausruht 2. auf die Bedürfnisse der Programmierer eingeht 3. keine Lizenzen an MS verkauft 1. C# ist eine wichtig Komponente der.net-framework 2. Plattformunabhänigkeit steckt noch in den Kinderschuhen 3. leicht zu erlernen