Hi,
ich muss mschaefer mal total recht geben, dass die Komplexität der Sprache irrelevant ist (sorry, zu faul zum zitieren).
Wichtig ist es einzusehen, dass alle Sprachen (weitestgehend) gleichmächtig sind, es geht nur darum wie einfach man etwas machen kann. Sicherlich hat Java eine Rechtfertigung (schaut euch an wie lange es Java gibt und wie verbreitet es ist, so zu sagen quasi empirischer Beweis).
Java ist natürlich eine Netzwerksprache bedingt durch die Entwickler (bzw. das Augenmerk eben dieser) und damit nicht wirklich geschrieben wurden um GUIs zusammen zu klicken. Was Java aber für den Unternehmensbereich nützlich macht liegt weniger an der Eigenschaft der Netzfähigkeit als vielmehr schon an der Typsicherheit.
An sich kennt Java (sehen wir von native Code ab) keine expliziten Zeiger. Ein wichtiger Fakt.
J2EE (dass dann für Großrechner mit .Net konkurriert und klar vorne liegt) sollte eigentlich nicht direkt mit J2SE verglichen werden. Aber ich mache es mal trotzdem
Also bei J2EE muss man sich nicht mehr um Threading kümmern, dass macht alles die Umgebung in der J2EE-Objekte sich befinden. Diese sehr starke Kapselung (möchte hier nicht in die Details von J2EE gehen), ermöglicht ein sehr leichtes und mächtiges skalieren und ein hohes Maß an Sicherheit (Genau genommen noch ein paar Dinge mehr). Aber das sind Anforderungen die in der Softwaretechnik wirklich wichtig sind.
Und da MS nicht dumm ist, versuchen sie natürlich auch ein eigenes Konzept in der Richtung zu etablieren (das wahre Geld kommt nun mal von großen Firmen mit große Budgets und großen Aufträgen). Ob .Net sich etablieren wird oder nicht wird sich erst zeigen, noch ist es einfach zu jung.
Nebenbei bemerkt ist Einfachheit einer Sprache (mathematisch) anders definiert als ich glaube ihr es meint. Die Sprache der Universellen Turingmaschine ist z.B. sehr sehr einfach (man liest ein Zeichen, schreibt ein Zeichen und wandert entweder nach links oder rechts, darf vielleicht auch stehen bleiben. Zudem merkt man sich noch den aktuellen Zustand und der kann natürlich auch in jedem Schritt geändert werden). Aber mit dieser Sprache etwas zu implementieren kann sehr sehr anstrengend werden (schon für kleine Probleme).
Gruß Der Unwissende