2.3. GNU, .NET, JAVA

Fast alle nützlichen Programme sind von Linux auch auf andere UNIXe und Windows NT/XP portiert worden, so z.B. auch die Benutzeroberfläche von Linux und alle UNIX - Werkzeuge, siehe Cygnus.com. Cross-Entwicklungs - Werkzeuge machen es möglich. Einmal programmieren, auf vielen Plattformen lauffähig - "write once, compile everywhere" ist ein Slogan, der nicht nur auf JAVA zutrifft, sondern insbesondere eine Eigenschaft der GNU Software ist, mit ihrem GNU - Compiler und unzähligen Toolkits. Nur ein Programm, ompiliert in Maschinensprache des jeweiligen Prozessors ist vielfach schneller, als ein Interpreter, der kompilierten Java Bytecode ausführt. Inzwischen ist der GCJ so weit fortgeschritten, daß er JAVA direkt in Maschinencode übersetzen kann.

Schaut man sich .NETTM an, dem neuen Framework von Microsoft, so ist ist es weder fertig, noch hat Microsoft selber seine eigenen Produkte dorthin portieren können. .NET ist ein völliger Technologiebruch, der viele Kunden daran hindert, ihre Software dorthin zu portieren, weil über 90% des Quellcodes neu geschrieben werden müssen!

UNIX mit X-Windows, Motif ... hat einen solchen Technologiebruch nie erfahren - alle Software von annodazumal läuft heute plattformübergreifend (SUNTM, SGITM, IBM AIXTM, ...) immer noch. Sogar alte Binaries aus Linux 0.99 lassen sich auf dem Kernel 2.6 mit KDE3 / GNOME2.8 GUI starten. Wer genau hinschaut, findet unter Linux noch "Uraltprogramme", die heute noch laufen, wie z.B. "xfig" aus dem Jahre 1985, siehe Abschnitt 3.3.

Kommerzielle Softwareprodukte von Microsoft, wie ExchangeTM, OfficeTM, InfoPathTM, SharePointTM, BizTalkTM und dem vielbeworbenen .NETTM Framework versprechen viel Zeitersparnis und neue Möglichkeiten der Programmierung, und sind aber auch äußerst teuer in Anschaffung und Wartung. Die Kosten für das "Customizing" samt vollständiger Dokumentation dieser hochkomplexen Produkte sind oft unterschätzt, bzw. vernachlässigt. Zu jeder Software gehört z.B. vollständige Dokumentation, und zwar für Bedienung, Programmierung und Schnittstellen! Wie viele Softwarepakete sind entwicklet worden, wurden genutzt, dann aber mangels Quellcode, Support, Überalterung weggeworfen, weil die Software nach Office Updates nicht mehr lief, z.B. ACCESSTM-Anwendungen? Wie oft war ein Refactoring nicht mehr möglich, mangels nicht vorhandener Quellcodes, nicht mehr lesbarem Code (Spaghetti), Closed - Source Module (COM, COM+, Active-X), nicht mehr lesbarem Code (Spaghetti-Code)? Welche Werte wurden dadurch vernichtet?

Der Slogan von SUNTM mit dem JAVA Framework: "Write once, run anywhere", trifft auf .NET nicht zu. Alle .NET - Anwendungen sind ausschließlich auf MS - Plattformen lauffähig. Die Dauerbaustellen MONO und DotGNU sind nicht kompatibel zu Microsoft, und werden es niemals sein, weil - hierzu müßten sämtliche Security-Features ebenfalls nachprogrammiert werden, die jedoch unter Patentschutz stehen. Microsoft könnte also genau dann, wenn alles fertig programmiert ist, die Anwender für Patente zur Kasse bitten, oder einfach ein Modul so ändern, daß Inkompatibilitäten auftreten, wie bei Microsofts Implementierung von Kerberos V gesehen. JAVA2 hingegen ist auf allen Plattformen lauffähig und Entwicklungen, die das lizenzpflichtige J2EE verwenden, können auf das lizenzfreie JBOSS umgestellt werden, siehe Abschnitt 24.6.

Wer ausschließlich mit und für Microsoft Produkte entwickelt, läuft in Gefahr, daß er Nachfragen für andere Plattformen (MAC, Linux, Handhelds...) nicht bedienen kann, bzw. mit hohem Aufwand neu programmieren lassen muß. Welche großartigen Möglichkeiten der Cross Plattform Entwicklung es gibt, welche Technik dahinter steckt und was sie leistet, siehe Kapitel 24.