Welche Technologie ist technisch besser? Welche wird sich auf Dauer durchsetzen? Auf welche Technologie muss ein Unternehmen heute setzen, um morgen erfolgreich zu sein?
Fragen, die sich viele IT-Manager stellen.
Weltweit sind unzählige Anwendungen beider Technologien nicht nur erfolgreich im Einsatz, sondern werden auch mit Hochdruck weiterentwickelt. Laut der renommierten Gartner-Group werden sowohl Java als auch .NET noch die nächsten hundert Jahre überleben (in Zeitmaßstäben der IT gerechnet).
Performance zählt
Die Laufzeiten von gleichen in Java und C# geschriebenen Programmen auf derselben Hardware zeigen kaum Unterschiede. Das ist verständlich, wenn man weiß, dass bei Businessapplikationen viel Zeit ohnehin beim Lesen und Schreiben von Daten – also bei der Persistenz in der Datenbank - verloren geht. Und bei rechenintensiven wissenschaftlichen Applikationen, wo die Ausführungszeit eines Programmbefehls wirklich zählt, kommen meistens C oder MatLab zum Einsatz.
Produktivität in der Entwicklung?
Nun stellt sich die Frage, in welcher Technologie es die ausgereifteren Frameworks gibt, um etwa die mühselige Aufgabe der Persistenz in den Griff zu bekommen. Die Java Welt mit ihren von der weltweiten Community entwickelten Open Source Produkten hat da einiges zu bieten. Was hat dem Microsoft eigentlich entgegen zu setzen?
Oder haben wir die Frage falsch gestellt? Wer heute im Google z.B. nach „Hibernate“ (weit verbreitetes Persistenzframework in der Java Welt) sucht, wird schnell darüber aufgeklärt, dass es sich dabei um „Relational Persistence for Java and .NET“ handelt. Portiert von der Open Source Community!
Auch viele andere Open Source Java Tools und Frameworks wurden bereits auf .NET portiert. Ein Beispiel dafür ist „JUnit“, das als quasi Standard Unit-Test Framework schon vor mehreren Jahren auf .NET portiert wurde und dort NUnit heißt. Es ist heute voll integriert in Visual Studio 2005 wieder zu finden, da Microsoft dafür kurzerhand den Entwickler eingekauft hat. Auch ANECON ist mit mehreren Committern wesentlicher Open Source Frameworks in der Committergemeinschaft aktiv.
Die weltweite Entwicklercommunity hat einfach keine Lust mehr auf bewährte Frameworks zu verzichten, nur weil eine Software statt in Java in C# geschrieben wird. Die Syntax der beiden Sprachen unterscheidet sich kaum voneinander, wer die eine kann, versteht auch die andere.
Und nicht nur die Open Source Community sorgt für eine Gleichstellung der beiden Technologien durch Portierung von etablierten Frameworks auf die jeweils andere Technologie. Die beiden Hersteller, so verfeindet sie sonst wirken mögen, sind Meister im Abschreiben. Die Sprache und Klassenbibliothek von .NET hat sich stark an die von Java angelehnt, aber auch SUN hat in der Java2 5.0er Version einiges von C# übernommen (z.B. Annotations, Autoboxing, enhanced for loops, …).
Einmal .NET immer .NET oder einmal Java immer Java?
Die Diskussion um die Frage, welche Technologie technisch besser ist, wird wohl etwas länger dauern. Eine eindeutige Antwort darauf gibt es nicht, was auch der Auslöser für regelmäßige Polarisierung dieser Thematik ist. Sie teilt die Entwickler regelrecht in zwei große Gruppen, was mitunter von Herstellern sogar durchaus unterstützt wird, eine Tatsache, die eigentlich nicht in dieses innovative, technische und wirtschaftliche Umfeld passt! Nicht umsonst läuft eine wachsende Anzahl von Software Architekten bei ihrer Titulierung als „Java-Gurus“ oder „.NET Experten“ schreiend aus dem Zimmer.
„Diese Polarisierung bringt uns nicht weiter“, bestätigt DI Sebastian Dietrich, Software Architekt der ANECON. Bei der Auswahl einer passenden Architektur sollten handfeste Überlegungen im Vordergrund stehen:
Die Mischung macht es aus
„Mitunter ist eine Aufgabenstellung durch einen Technologieschwenk oder gar durch einen Technologiemix viel schneller und günstiger zu realisieren“, erklärt DI Christian Bauer, ebenfalls als Softwarearchitekt bei ANECON tätig. Ein Technologiemix macht vor allem dann Sinn, wenn das Unternehmen konsequent ein Architekturkonzept verfolgt, welches Interoperabilität ermöglicht.
Service Oriented Architecture (SOA), oft mit XML-Webservices realisiert, ist ein Beispiel für ein solches Konzept. Java und .NET Komponenten können dann genauso wie Altsysteme transparent miteinander kommunizieren.
Die Umstellung einer gewachsenen Applikationslandschaft auf SOA ist natürlich kein Spaziergang. Unternehmen, die diesen Weg gehen, können sich dann aber buchstäblich die Rosinen aus dem „Technologiekuchen“ picken.
Wer seine Applikationen schnell und kostengünstig an die Erfordernisse des immer dynamischeren Marktes anpassen kann, hat einen entscheidenden Wettbewerbsvorteil und unter seinen Mitbewerbern die Nase vorn. Leben von Rosinen eben statt mit technologischen Scheuklappen.