Betriebswirtschaftslehre
Wer oder was ist eigentlich Java? Während der ein oder andere den Atlas wälzt oder ein Lexikon bemüht, denkt der Informatiker sofort an eine clevere Programmiersprache, die einst Webseiten zu bewegten Bildern und zu mehr Dynamik verhalf. Heute ist Java weitaus mehr und kommt neben Großrechnern auch in Handys und sogar in Autos zum Einsatz. Ein Stuttgarter Informatiker zeigt, was hinter dieser Programmiersprache steckt. Er verrät auch welche Gemeinsamkeiten diese Sprache mit Kaffee hat.
Von Professor Dr. Thomas Kessel, Berufsakademie Stuttgart
Vor geraumer Zeit lernte ich in Erdkunde, dass Java eine indonesische Insel ist. Im Film „Tote tragen keine Karos" verriet mir der bekannte amerikanische Komiker Steve Martin, dass das Wort Java in den USA umgangssprachlich auch Kaffee bezeichnet. Im Laufe des Studiums lernen viele Studierende heute eine weitere Bedeutung des Wortes Java kennen: nämlich die der modernen Programmiersprache.
Die Programmiersprache Java wurde Anfang der neunziger Jahre von der Firma SUN Microsystems entwickelt[1]. Obwohl sie ursprünglich für den Einsatz in elektronischen Geräten entwickelt wurde, erfolgte kurze Zeit später eine Neuausrichtung auf die Integration des Internets. Java wurde damals einer größeren Öffentlichkeit erst bekannt, als sich die Firma Netscape, der damalige Marktführer für Internetbrowser, für die Lizenzierung von Java entschied, um so betriebssystemunabhängig kleine Java-Programme im Browser ablaufen zu lassen und so die Webseiten dynamischer und animierter gestalten zu können.
Was ist eigentlich der Sinn einer Programmiersprache?
Zentrale Aufgabe einer Programmiersprache ist es, den Algorithmus eines Softwareentwicklers, das heißt seine Problemlösung, in eine für den Computer verständliche und ablauffähige Sprache zu übersetzen. Als Ergebnis erhält man dann ein Programm, das auf dem Computer ausgeführt werden kann.
Die erste offizielle Java Version 1.0 erschien 1996 und legte damit den Grundstein für die Popularität und die weite Verbreitung von Java innerhalb der Programmiererszene. Die in rascher Folge erscheinenden weiteren Versionen erweiterten dabei nicht nur kontinuierlich die zur Verfügung stehende Funktionalität, sondern auch die Ablaufgeschwindigkeit. Im Dezember 2006 erschien bereits die aktuelle Version 6.
Die Weiterentwicklung von Java wird durch den Java Community Process (JCP) bestimmt. An diesem Gremium können interessierte Unternehmen teilnehmen, um auf die Entwicklung zukünftiger Java Versionen Einfluss zu nehmen, indem neue Features vorgeschlagen und in den Standard aufgenommen werden. Dieses Vorgehen sichert zum einen weiterhin die breite Marktpräsenz und Marktunterstützung und zum anderen wird so Sorge getragen, dass ständig technische Innovationen in den aktuellen Versionen Einzug halten.
Obwohl gemäß einer alten Verleger-Regel jede veröffentlichte Formel (oder analog jedes Programm) die Anzahl der potentiellen Leser halbiert[2], so soll hier doch zumindest ein erster Eindruck von Java vermittelt werden, indem das übliche „Hallo Welt"-Programm abgedruckt wird. Es handelt sich um die Ausgabe der Zeile „Hallo Welt" auf dem Bildschirm.

Die allererste Aufgabe in einem Java Programm besteht darin, eine Klasse zu definieren, in der dann die Eigenschaften und das Verhalten dieser spezifiziert werden kann. Im vorliegenden Fall ist dies sehr einfach, da es nur eine Klasse gibt, die die Methode main enthält, welche nur den Befehl System.out.println( ..) aufruft. Wie schon zu vermuten ist, wird der Text, der in doppelten Anführungszeichen steht, einfach auf dem Bildschirm ausgegeben.
Obwohl es damals wie heute eine große Vielzahl von Programmiersprachen auf dem Markt gibt, so hat sich Java in den letzten Jahren ganz klar im Markt der Programmiersprachen als ein Marktführer etabliert. Alle großen Softwarehersteller, zum Beispiel IBM, Oracle, SAP setzen mittlerweile auf Java-Technologien für die Entwicklung neuer Anwendungen. Die weltweite Java-Entwicklergemeinschaft zählt momentan über 6,5 Millionen Mitglieder. Als Gegenentwurf und Wettbewerber zu Java kann Microsofts .NET Technologie gesehen werden. Der Unterschied zwischen Java und .NET lässt sich pointiert illustrieren durch: „Java ist sprachen-spezifisch, aber plattformunabhängig, .NET ist sprachenunabhängig, aber plattform-spezifisch."[3] Um also die obige, rhetorische Frage zu beantworten: es handelt sich bei Java um einen starken Kaffee. Die Gründe des Erfolgs werden im nächsten Abschnitt vorgestellt.
Java-Technologien sind vor allem deshalb so erfolgreich, weil sie alle vollständig portabel sind. Portabilität ist die herausragende Eigenschaft von Java, was durch den früheren Java-Slogan „write once, run anywhere" zum Ausdruck gebracht wird. Es bedeutet, dass der Java-Quelltext nur einmal erstellt wird („write once") und dann auf jedem beliebigen Betriebssystem ausgeführt werden kann („run anywhere"), sofern dort eine Java-Laufzeitumgebung verfügbar ist. Somit ist Java völlig unabhängig von einem spezifischen Betriebssystem. Technisch wird dies dadurch umgesetzt, dass aus dem Java-Quelltext zuerst ein Zwischencode erzeugt wird, der so genannte Java-Bytecode, der betriebsystemunabhängig ist und von jeder Java-Laufzeitumgebung ausgeführt werden kann. Ein Java-Quelltext kann also unter Windows „compiliert" werden, und der dort erzeugte Java-Bytecode kann dann von der Java-Laufzeitumgebung eines Macintosh oder eines Linux-Rechners ausgeführt werden - oder umgekehrt.
Um die wirtschaftliche Bedeutung der Portabilität besser zu verstehen, sollte man wissen, dass Softwarehersteller ihre Produkte möglichst für eine große Vielzahl von Betriebssystemen anbieten möchten, um so einen möglichst großen Absatzmarkt zu erhalten. Wenn die zugrunde liegende Programmiersprache allerdings nicht portabel ist, dann hat dies zur Konsequenz, dass die Software auf allen unterstützten Betriebssystemen separat entwickelt, getestet und gewartet werden muss. Dies verursacht erhebliche Kosten.
Betrachten wir als Fallbeispiel ein mittelständisches Softwareunternehmen mit einem Produkt, das zweihunderttausend Zeilen an Programmcode umfasst und ursprünglich für das Betriebssystem Microsoft Windows implementiert wurde. Nun soll dasselbe Produkt aber auch an die Betriebssysteme Linux und Mac OS angepasst werden. Wenn die Software vollständig in Java geschrieben worden wäre, dann würde kein zusätzlicher Aufwand anfallen. Angenommen die betriebssystemspezifischen Programmteile, d. h. die Codebereiche, die für jedes Betriebssystem angepasst werden müssen, umfassen nur ca. zwanzig Prozent des Gesamtumfangs. Dies würde bedeuten, dass vierzigtausend Codezeilen (= 20 Prozent von 200.000) sowohl für Mac OS als auch für Linux nochmals codiert und getestet werden müssten. Der zu erbringende zusätzliche Aufwand würde damit achtzigtausend Codezeilen betragen, was ungefähr einem Mehraufwand von vierzig Prozent im Vergleich zum Gesamtcode entspricht.
Java hat sich dabei im Laufe der Zeit als sehr wandlungsfähig erwiesen und von einer einfachen Programmiersprache zu einer Programmierplattform entwickelt, die sehr unterschiedliche Versionen und Technologien umfasst. Das Produktportfolio an aktuellen Java-Versionen adressiert dabei vom Handy, über den PC, bis hin zum millionenteuren Hochleistungsrechner, der für geschäftskritische Anwendungen in Unternehmen ausgelegt ist, alle wesentlichen Hardwareplattformen.
Wenn man das Angebot der verschiedenen Java-Technologien mit Kaffeesorten vergleichen möchte, so würde die Java Standard Edition (JSE), die sich vornehmlich an PCs wendet, einer Tasse normalen Filterkaffee entsprechen. Die Java Micro Edition (JME) für so genannte eingebettete Systeme, die zum Beispiel in Handys, PDAs oder Autos eingesetzt werden, wäre vergleichbar einem Espresso: klein und kräftig. Die Java Enterprise Edition (JEE), die auf große, komplexe und verteilte Anwendungen in Unternehmen ausgelegt ist, könnte man mit einem Latte macchiato vergleichen, sowohl was das Volumen als auch was die Komplexität der Zubereitung betrifft. Darüber hinaus gibt es natürlich noch viele weitere Java Technologien oder „Kaffeespezialitäten", die hier schon aus Platzgründen nicht alle aufgezählt werden können.
Ähnlich wie bei Kaffeeliebhabern das Angebot zur Herstellung des richtigen Kaffees die normale Kaffeemaschine, die Espressomaschine oder den Kaffeevollautomaten umfasst, so bietet sich auch für den Java-Entwickler ein sehr buntes Bild. Das eine Extrem der Java-Entwicklung stellt die Verwendung eines Texteditors in Verbindung mit dem Java Software Development Kit (SDK) dar. Dies sei vor allem Spezialisten und Puristen empfohlen und wäre mit einem Espressoliebhaber vergleichbar, der an seiner Espressomaschine mit manuellem Siebträger festhält, da er zum einen die eingesetzte Technik auf das Minimum reduzieren möchte und zum anderen gerne die Kontrolle über die Abläufe bewahren möchte. Das andere Extrem ist die Verwendung einer integrierten Entwicklungsumgebung, zum Beispiel Eclipse oder NetBeans, die natürlich die Produktivität des Softwareingenieurs steigert, aber auch gleichzeitig ein gewisses Verständnis der im Verborgenen ablaufenden Prozesse erfordert. Ein solcher Kaffeevollautomat ist natürlich das Maß aller Dinge und kann vom Espresso, über den Latte macchiato noch die eine oder andere Kaffeespezialität hervorzaubern, sofern man weiß, auf welche Knöpfe man zu drücken hat. Es liegt nun an jedem selbst heraus zu finden, was einem am ehesten zusagt.
Der Erfolg einer Programmiersprache beruht nicht nur auf den zahlreichen technischen Features, sondern auch auf vielen weichen Faktoren. Aus diesem Grund soll hier zum Abschluss noch kurz auf das eine oder andere wirtschaftliche Argument zum Einsatz der Java Technologien eingegangen werden.
Die große Verfügbarkeit exzellenter Entwicklungsumgebungen sowie die Erfahrung an technischer Expertise bei den Projektleitern und Softwareentwicklern sind für den erfolgreichen Einsatz von Java entscheidend. Aufgrund des immer höheren Kostendrucks bei der Softwareentwicklung in den letzten Jahren hat sich insbesondere die Nutzung freier Java Entwicklungswerkzeuge als effizientes Mittel zur Reduzierung der Lizenzkosten einerseits und zur gleichzeitigen Steigerung der Produktivität andererseits herausgestellt.
Ein wichtiges Argument ist auch noch die leichte Erlernbarkeit von Java sowohl für Anfänger wie auch für Seiteneinsteiger, die schon Erfahrung mit anderen Programmiersprachen haben. Nicht zuletzt dürften auch die momentan sehr guten Berufsaussichten für Java Spezialisten zusätzlich motivierend wirken.
Professor Dr. Thomas Kessel lehrt seit 2002 an der Berufsakademie Stuttgart im Studiengang Wirtschaftsinformatik, in den Bereichen Betriebssysteme, verteilte Systeme und Softwareentwicklung.
[1] Java ist auch ein eingetragenes Warenzeichen der Firma SUN Microsystems.
[2] Falls Sie sich zufälligerweise fragen sollten, ob Sie zu den besagten 50% der Nicht-Formel-Leser gehören könnten, dann würde ich Ihnen einfach zu einem Sprung ins nächste Kapitel raten.
[3] Das Zitat ist dem Artikel „.NET vs. J2EE" von Jim Farley entnommen, der am 1. März 2001 in Software Development (nun Dr. Dobb's Portal) veröffentlicht wurde und über http://www.ddj.com/architect/184414710 verfügbar ist.