Noch vor ein paar Jahren - es muss wohl 2003 gewesen sein - habe ich auf der JAX Konferenz für ein .NET Statement in der Kategorie von "Es gibt da draußen keine großen .NET Systeme" erhebliche Prügel bezogen und das wohlgemerkt auf eine Java Konferenz. Überhaupt hatte ich das Gefühl, dass Microsoft ein sehr geschicktes Marketing zeigt: Sie treten auf Java Konferenzen auf und zwar mit der Aussage "Hey, guck mal, ist fast Java, ist doch auch nett, oder?" und bei den Entwicklern herrscht - berechtigterweise - die Stimmung vor, dass man eben die Technologie wählt, die passt, und .NET ist eben schon eine sinnvolle Technologie.
In letzter Zeit mehren sich allerdings aus meiner Sicht die Anzeichen dafür, dass .NET anscheinend im Enterprise Bereich ein Problem hat. Viele Firmen scheinen ein strategisches Commitment zugunsten von Java zu haben und haben kein Interesse, auch .NET noch zu unterstützen. Während dies nur bedeutet, dass Java eben früher da war und dadurch schwer zu verdrängen ist, gibt es dann sogar Firmen, die ein solches Commitment haben, um einen Vendor-Lock-In zu vermeiden. Firmen mit Mainframe Erfahrung wissen häufig, wo so ein Vendor-Lock-In endet.
Ich selber muss auch immer noch gestehen, dass es mir schwer fällt, zu glauben, dass man mit Windows wirklich große Server betreiben kann. Dies ist allerdings deutlich ein Vorurteil: Ich habe noch nirgendwo gesehen, dass soetwas schief geht, und es gibt Referenzkunden, bei denen soetwas funktioniert.
Wo ist also .NET einzuordnen? Wahrscheinlich im Mittelstand, bei denen Windows Skills vorhanden sind und die mit Microsoft Server einen recht umfangreichen Application Server im Betriebssystem integriert bekommen und auch eine leichte Integration von Exchange usw. Wer also eine Integration in die Microsoft Plattform sucht - und damit meine ich die anderen Microsoft Server Produkte - ist mit .NET gut bedient.
Die andere Stärke von .NET sind ja scheinbar Client Systeme. Ob das wirklich so sinnvoll ist, sei mal dahingestellt: Mit Eclipse RCP gibt es in der Java Welt eine aus meiner Sicht attraktive Lösung, die auch über eine GUI Bibliothek hinausgeht und eine Struktur einer Client Anwendung vorgibt. Ob es soetwas auch im .NET Umfeld gibt, ist mir unklar. Und eine Fernsteuerung von Office zumindest mit Groovy (Java Skriptsprache) ist genauso einfach wie mit .NET. Dennoch ist es natürlich so, dass man mit .NET hier die "offizielle" API hat.
Was bedeutet das? Die Argumentation ist - wie man sieht - nicht sehr technisch - hier gibt es wohl kaum einen klaren Sieger. Ein wichtiger Punkt ist Plattform-Gedanken und die dahinter stehenden Namen: Es geht Microsoft mit .NET Plattform und den verschiedenen .NET Servern und auf der anderen Seite um die Java EE Plattform, auf die z.B. auch Oracle, SAP und IBM ihre weiteren Produkte aufbauen.
Strategisch scheint es zum einen schwerer als gedacht zu sein, Java aus den Unternehmen herauszudrängen, und es kann auch sein, dass bei CIOs doch die Angst vor proprietären Lösungen zu groß ist. Also sollte man das ganze weiter beobachten und wenn man Microsoft in der Vergangenheit studiert hat, weiss man, dass sie auch nach einem ersten, weniger erfolgreichen Versuch, nicht locker lassen. Für Java EE ist das Ziel natürlich, auch im Mittelstand und bei weniger komplexen Projekten eine gute Alternative zu sein: Genau dies soll die Vereinfachung in Java EE 5 und Java SE 5 bringen. Konkurrenz und Pluralismus belebgen das Geschäft, führen zu besseren Produkten und machen das Business spannend. Ich bin schon auf die weiteren Schachzüge in diesem Spiel gespannt!