.NET
Java und C# – Die feinen Unterschiede
Posted on .Immer wieder begegnen mir Leute, die Java und C# in die selbe Schupp-lade stecken. Man hört dann meist Sätze wie „C# ist Java von Microsoft“, „Dann lerne ich doch gleich lieber Java statt Microsofts Kopie“. Jeder der sich mit der .NET Plattform beschäftigt wird natürlich wissen, wie falsch diese Aussagen sind, die meist nur auf alten Vorurteilen und Unwissenheit basieren.
Die Anfänge
Natürlich haben diese Vorurteile irgendwo etwas wahres dran, so ist es nicht von der Hand zu weisen, dass sich die Syntax der beiden Sprachen sehr sehr ähnlich ist, und auch die Ausführung des Codes in einer VM kann man auch zu den Gemeinsamkeiten zählen. So ist C# ja auch entstanden, als eine Mischung aus Java und C++. Dies sollte es den Leuten erleichtern auf die neue Plattform zu wechseln und schnell einen Einstieg zu finden, desweiteren hat es sich in der Technischen Welt bewährt gute und erfolgreiche Konzepte zu kopieren und zu perfektionieren/verbessern. So würde ich auch C# mehr als eine Weiterentwicklung von Java betrachten.
Wo liegen die Unterschiede?
Natürlich fragt man sich dann, wo die Unterschiede sind und wenn man sich etwas damit befasst, wird man feststellen, dass es doch ziemlich viele Unterschiede und (meiner Meinung nach sehr nützliche) Weiterentwicklungen gibt.
Hier ein paar Beispiele:
- Properties – Saubere Model-Klassen ohne einen riesen GetBla & SetBla Gestrüppe
- Delegates (Funktionszeiger) – Übergabe von Funktionen als Parameter uvm.
- LINQ (Language Integrated Queries) – Objektorientierte SQL/XML-Abfragen
- Events – Erleichtert strickte Trennung von Schichten und Informationsweitergabe
- Lambda Ausdrücke – Viel Arbeit auf wenig Platz (Wird eventuell im JDK 1.7 Einzug halten)
- Enums und Colections
Desweiteren gibt es auch wichtige Unterschiede, die unter der Haube ablaufen:
- Assembly-Konzept – Einfache und schnelle Interaktion zwischen den .NET Sprachen wie C#, Visual C++.Net, Visual Basic.Net oder Delphi.Net
- Namespaces – Auf den ersten Blick sehr ähnlich zu Packages , aber nicht auf den zweiten 😉
Natürlich gibt es noch vieles mehr was an Unterschieden zu entdecken gibt. Wer da interessiert ist kann dich mal diese Seite anschauen mit vielen Beispielen und Vergleichen.
Einsatzbereiche
Sogar in den Einsatzgebieten ähneln sich die Plattformen sehr, denn wie mit Java kann man auch in .NET sowohl für Desktop, für Web und für mobile Plattformen entwickeln, wobei die mobilen Plattformen noch auf Windows Mobile beschränkt ist. (Aber Mono für Android ist ist ja auch schon unterwegs)
Dank Mono kann man viele .NET Programme auch sehr einfach auf Unix Systeme portieren, womit man teilweise auch die Plattformunabhängigkeit von Java erreicht. (Mono unterstützt zur Zeit das komplette .NET Framework 2.0)
Die Zukunft
Microsoft entwickelt die .NET Plattform sehr aktiv. Vor Kurzem ist die 4te Version des Frameworks inklusive einer neuen Visual Studio Version erschienen. Weitere Releases und Weiterentwicklungen dürften somit auch bald folgen.
Bei Java schaut man momentan noch in eine ungewisse Zukunft, da Sun vor einer Weile von Oracle aufgekauft wurde, weis man nun nicht mit Sicherheit was aus den Produkten wird. So musste die Community bereits den Verlust von Open Solaris hinnehmen und es hagelte auch schon die ersten Patentklagen wegen dem Aufbau der Java VM auf verschiedenen Plattformen. – Keine Rosigen Aussichten für Java Fans.
So scheinen nun sich die Feindbilder zu ändern. Lange Zeit war Microsoft wohl der Anführer der Bösewicht Nummer 1 – Liste, doch das Unternehmen hat sich gewandelt und stellt inzwischen sogar zu vielen Projekten sogar den Code zur Verfügung, so ist zum Beispiel ein großer Teil des .NET Frameworks einsehbar und auch das ASP.NET MVC Framework lässt sich komplett einsehen.
Die .NET Plattform ist inzwischen eine sehr mächtige geworden, und alle die es runterspielen oder ignorieren kann ich einfach nicht ernst nehmen. Und auch wenn man ein Open-Source-Junkie oder einfach nur ein Microsoft-Feind ist sollte man dennoch wissen, wovon man redet.
Sebastian Gross
http://www.bigbasti.comSebastian Gross arbeitet in Bielefeld als Softwareentwickler für .NET und Java im Bereich Web.Als Fan der .NET-Plattform lässt er sich kein Userguppen Treffen und Community Event im Raum OWL entgehen.Dabei hat er eine besondere Vorliebe für das ASP.NET MVC Framework und für das Test Driven Development (TDD) entwickelt.
Author bigbasti87
Posted at 07:57 6. September 2010.
Bloggd: Java und C# – Die feinen Unterschiede – http://blog.bigbasti.com/java-und-c-die-…
Author 1001100
Posted at 08:08 6. September 2010.
RT @bigbasti87: Bloggd: Java und C# – Die feinen Unterschiede – http://blog.bigbasti.com/java-und-c-die-…
Author Hendrik
Posted at 22:25 27. Oktober 2010.
Als Anmerkung zu Mono:
Mit Mono lassen sich Apps sowohl für Android als auch für das Iphone Entwicklen(Nach dem letzten Update der letzten Nutzungsbedingungen darf man dies nun auch)
Author Christian
Posted at 12:05 19. Dezember 2011.
Ich fange bald einen neuen Job als C# Programmierer an. Bisher habe ich immer in Java gearbeitet und hoffe das mir der Umstieg relativ leicht fallen wird.