In the Code: Java oder .NET?

Patrik Stampfli, Head of Operations bei ELCA.
Java versus .NET, ein Kampf der Titanen oder entspanntes Miteinander? Beide Technologien haben sich für Business-Applikationen bewährt, doch wann sollte man sich für welche Plattform entscheiden?
 
Java und .NET sind inzwischen die führenden beiden Plattformen für die Entwicklung von Business-Applikationen. Deshalb stehen Organisationen häufig vor der Frage: Java oder .NET? Dieser Artikel geht dieser Frage nach bis hin zu einer Gegenüberstellung möglicher Entscheidungsfaktoren. Doch der reine Vergleich reicht nicht aus – in der komplexen Welt der Softwarearchitektur muss immer auch die jeweilige Situation des Unternehmen, technologisch wie auch geschäftlich, sowie seine künftigen Ziele und Anforderungen für die Technologieplattform berücksichtigt werden. Hinzu kommen Fragen nach dem Betrieb, dem Support, der Verfügbarkeit entsprechender Fachkräfte und inwiefern man sich als Unternehmen selbst mit der Technologie auseinandersetzen will.
Hinter beiden Technologien stehen grosse IT-Akteure – hinter Java Oracle, aber auch eine grosse Community, hinter .NET Microsoft – dennoch ist Java breiter gestützt, da von Beginn an als plattformunabhängige Entwicklungssprache und -umgebung entwickelt, die auf verschiedenen Hardware-Typen läuft.
 
Dementsprechend steht Java auch bei dem wohl wichtigsten Kriterium Vielfalt / Auswahl / Innovation grundsätzlich sehr gut da: Java wird von verschiedenen Anbietern und einer grösseren Community unterstützt, so dass häufig auch neue Standards eher in Java verfügbar sind. Allerdings bedeutet der Community-Gedanke auch, dass es keine Führerschaft in Bezug auf die einheitliche (Weiter-)Entwicklung der Plattform gibt. Zugleich muss der Aspekt Vielfalt / Auswahl / Innovation nicht für jedes Unternehmen gleich relevant sein: Je nach Grösse des Unternehmens und der IT-Abteilung beziehungsweise der Relevanz der IT kann es sogar einfacher sein, sich für den eher vorgegebenen Weg von Microsofts .NET zu entscheiden. Hier braucht es weniger Entscheidungen und Aufwand, da Microsoft ein komplettes Paket aus einer Hand anbietet – und auch eine klare Produkt-Roadmap vorgibt. Dafür ist das Risiko des Vendor-lock-ins bei .NET höher. Dass es für die Java-Plattform mehr Anbieter gibt, steigert den Wettbewerb, erschwert aber oft auch den (Kosten-)Vergleich und damit die Transparenz bei der Preisgestaltung. So gilt es gerade beim Preis, beziehungsweise den Gesamtkosten (Total Cost of Ownership), immer das individuelle Szenario eines Unternehmens zu berücksichtigen. Generell kann gerade für kleinere Unternehmen das Microsoft-Angebot im Hinblick auf die Total Cost of Ownership günstiger sein – und als bequemer "One-Stop-Shop" fungieren.
 
Monokulturen selten, eine Hauptplattform empfehlenswert
Eine reine «Monokultur» in Bezug auf ihre Technologieplattform haben, wenn überhaupt, eher kleine Unternehmen. Wenn diese vor allem Windows im Einsatz haben, ist .NET oft die einfachere Lösung. Grundsätzlich hat die bestehende IT-/Server-Umgebung und das ERP-System einen grossen Einfluss auf den Entscheid für eine Technologieplattform: Setzt ein Unternehmen beispielsweise eine Linux-Server-Plattform ein, kommt in der Regel Java zum Zug.
 
Standardsoftwarehersteller SAP unterstützt grundsätzlich alle Technologien, bei einigen ERP-Systemen sind die Integrationsmöglichkeiten für Java etwas einfacher als bei .NET. Auch dies kann den individuellen Entscheid beeinflussen.
 
Grosse Konzerne streben eher danach, eine Hauptplattform zu definieren, bei den meisten Unternehmen besteht die IT-Landschaft aus einem bunten
Vereinfachte Kurzübersicht Java versus .NET
Mix. Damit ist die Frage, welche Technologie die bessere Architektur ermöglicht, auch etwas müssig. Vielmehr zählen Kriterien wie die Integrationsfähigkeit, die Interoperabilität, Portabilität, Cloud-/PaaS- und Open-Source-Möglichkeiten. Letztendlich liegen die Technologien hier je nach Sichtweise fast gleichauf. Die Integrationsfähigkeit von Java ist durch den plattformunabhängigen Ansatz gut, in Bezug auf Microsoft-Produkte wie Windows aber natürlich etwas aufwändiger als bei .NET, selbst Teil des Microsoft-Stacks. Die Interoperabilität, also die Fähigkeit zur möglichst optimalen Zusammenarbeit der Systeme, ist für .NET im Microsoft-Stack sowie für Java bei Oracle am besten gegeben, bei Java in Bezug auf andere Systeme aber grundsätzlich besser, weil die Technologie breiter und plattformunabhängig aufgestellt ist. Nichtsdestotrotz kann es bei der Interoperabilität Brüche geben, wenn Java auf verschiedenen Systemen implementiert wird. Daher sollte man den Aufwand für die Konfiguration in diesem Fall nicht unterschätzen. Mit einer entsprechenden Architektur und zum Beispiel mit Hilfe von Web- oder Micro-Services kann die Interoperabilität aber gut sichergestellt werden. Im Hinblick auf die Portabilität, also den Wechsel auf eine andere Plattform, ist dies bei Microsoft nur durch den Austausch des kompletten Systems möglich. Bei Java sind die Möglichkeiten theoretisch besser, aber in der Realität ist auch dies meistens kein einfaches Unterfangen.
 
Der Einsatz von Open-Source-Frameworks kann für manche Unternehmen wichtig sein, da sie Zugriff auf den Source Code und die darunter liegenden Frameworks erhalten. Hier hat Java einen klaren Vorsprung vor .NET, obwohl die Microsoft-Technologie aufholt. Microsoft hat im letzten Jahr entschieden, .NET in Richtung Open-Source freizugeben. Inwiefern sich hier eine echte Community entwickeln kann und wird, hängt aber auch vom Willen des Unternehmens ab. In der Cloud und beim Platform-as-a-Service (PaaS) bietet Java vielfältigere Möglichkeiten, das heisst Java wird in verschiedenen Clouds unterstützt, während .NET vor allem von Microsoft Azure unterstützt wird, aber auch von Amazon Web Services. Azure ist jedoch eine mächtige und sehr vollständige Cloud-Plattform. Will man neu auf die Cloud umsteigen, ist dies bei Microsoft aufgrund des Komplettpakets auf jeden Fall einfacher, Java bietet dafür mehr Möglichkeiten und verschiedene Produkte und wird auch bei PaaS bevorzugt.
 
Beim Entscheid zu beachten
Dies zeigt, dass es einige Faktoren zu beachten gilt und diese vor allem individuell abgewogen werden müssen. Die folgenden sechs Fragen sollten sich IT-Manager daher bei der Entscheidung zwischen Java und .NET stellen:
  1. Wie sieht die bestehende IT-Umgebung des Unternehmens aus? Welche langfristige Strategie soll hier gefahren werden, auch in Bezug auf Standardprodukte oder massgeschneiderte Individuallösungen?
  2. Wie komplex sind die Software-Applikationen, die künftig entwickelt werden sollen, was ist besonders wichtig?
  3. Wie wichtig sind Faktoren wie die Portabilität der Applikationen, deren User Interface, Cloud und Open-Source für das Unternehmen – jetzt sowie mittel- bis langfristig?
  4. Wie sehen die Gesamtkosten, die Total Cost of Ownership, für die individuelle Situation aus?
  5. Welche Fachkräfte und Kompetenzen habe ich bereits? Wenn eine neue Technologieplattform gewählt wird, welchen Aufwand bedeutet das in Bezug auf Umschulung und Trainings? Sind notwendige Fachkräfte am Markt in meiner Region verfügbar?
  6. Wie steht es mit dem Kunden-Support durch den Hersteller und wie abhängig ist man von diesem (hat man interne Experten oder nicht)?
(Patrick Stampfli)
 
Über den Autor
Patrik Stampfli leitet als Head of Operations das 150-köpfige Zürcher Team des Schweizer IT-Unternehmens ELCA. Unter anderem hat er die methodischen und infrastrukturellen Rahmenbedingungen für eine agile und betriebsnahe Projektabwicklung bei ELCA mit definiert und eingeführt. Sein Studium der Mathematik schloss Patrik Stampfli an der ETH Zürich ab.

(Interessenbindung: ELCA ist Werbekunde unseres Verlags.)