Hi,
da scheint einiges durcheinander zu gehen. C# ist eine Programmiersprache, so wie C, C++, Java, Delphi … .
Für jede dieser Sprachen gibt es Compiler (oder ggfs. Interpreter), die den Code übersetzen (in Maschinensprache).
Dann gibt es Entwicklungsumgebungen, z.B. Microsoft Visual Studio, Borland J Builder (weiß gar nicht, ob es den noch gibt und viele mehr. Das sind Tools, die Editoren mit Syntaxüberprüfung, Intellisense, Projektverwaltung, …, und Parametrierhilfen für den Compiler anbieten. Von hier aus wird der Compiler auch angesteuert (meistens ist er bereits im Tool integriert, und Du merkst nicht, dass das was ‚anderes‘ ist).
Dann gibt es noch die Frameworks, also Bibliotheken, die Dir jede Menge Funktionen liefern, damit Du sie nicht mehr selber schreiben musst. Das geht von einfachen String-Bearbeitungen über Datenbankzugriffe und Verschlüsselungsroutinen bis halt zu GUI-Elementen. Das sind z.B. Sachen wie J2EE und .NET.
Java hat nun eine kleine Besonderheit: der Compiler übersetzt nicht direkt in Maschinensprache, es kommt also keine ausführbare Datei (.exe) dabei heraus. Um das compilierte Java-Programm dann ausführen zu können, braucht man daher noch den Interpreter, das ist hier die Java Runtime Environment (‚Laufzeitumgeb ung‘). Die braucht natürlich bei der Ausführung selber Resourcen, das eigentliche Programm wird also langsamer. Bei der heitigen Hardware meistens kein Problem, aber bei enorm aufwendiger Rechenarbeit dann doch spürbar.
Darauf aufbauend hier noch ein paar Abwägungen:
-
Java ist, eben wegen der betriebssystemspezifischen Runtime Environment, viel leichter auf andere Systeme portierbar
-
der C#-Compiler optimiert dagegen deutlich besser für Windows-Systeme
-
das .NET-Framework hat nichts mit C# zu tun! Es erlaubt einen sehr komfortablen und effizienten Einsatz von Windows-Funktionen (aller Art, also auch GUI)
-
J2EE (oder all die anderen) bieten (aus den genannten Gründen) natürlich nicht dieselbe Tiefe und Komfort
Also im wesentlichen: Portierbarkeit (Java / J2EE) versus Komfort und Effizienz (C#, .NET).
Das waren viele Worte, ich hoffe, sie helfen
Gruß,
Michael