WI – Schlagwort geladen und als Anwendung unter Kontrolle des Web Browsers innerhalb des Dokuments ausgeführt. Sie ergänzen die überwiegend passiven Dokumentbestandteile durch aktive Elemente. Bei Java-Applications handelt es sich um selbständig lauffähige Anwendungen, die unabhängig von der Kontrolle eines Web Browsers ausgeführt werden. Sie entsprechen herkömmlichen Anwendungsprogrammen. Die Programmiersprache Java 2 Merkmale Michael Böhnlein 1 Einordnung Mit dem World Wide Web (WWW) wurde Anfang der neunziger Jahre im Internet die Grundlage für einen offenen, universellen Austausch von Informationen in Form von Dokumenten gelegt. Die weltweite Vernetzung von Informationen bietet Unternehmen die Chance für ein globales Auftreten und damit einer Ausweitung ihrer bestehenden Märkte. Hierzu sind Anwendungsprogramme für das Internet nötig, die dieses Potential ausschöpfen können. Die Programmiersprache Java präsentiert sich als ein aussichtsreicher Kandidat für die Erstellung solcher Anwendungen. In diesem Beitrag wird Java vorgestellt. Dabei werden aktuelle Entwicklungsrichtungen aufgezeigt. Java ist eine von Sun Microsystems entwickelte, objektorientierte Program- Dipl.-Wirtsch.Inf. Michael Böhnlein, Universität Bamberg, Lehrstuhl für Wirtschaftsinformatik, insbesondere Systementwicklung und Datenbankanwendung, Feldkirchenstr. 21, D-96052 Bamberg. Tel. (0951) 863-2514, E-Mail: [email protected] 398 miersprache, deren Einsatzfeld gleichermaßen auf das globale Internet wie auf unternehmensweite Intranets ausgerichtet ist. Sie hat das Potential, die Grenzen heterogener Anwendungssystem-Landschaften zu überwinden. Herkömmliche Anwendungen werden i.d.R. für nur eine Plattform unter Verwendung einer bestimmten Programmiersprache entwikkelt (single plattform application). Um die Anwendung auch auf anderen Plattformen einsetzen zu können, ist häufig eine aufwendige Portierung nötig. Java hingegen liegt der „write once, run everywhere“-Gedanke zugrunde. Anwendungen, die in Java geschrieben wurden, sind unverändert auf jeder Plattform einsetzbar, für die eine Implementierung in Form einer Java Virtual Machine (JVM) existiert (multiple-platform-application), z.B. Windows, Macintosh, OS/2 und Unix. Bei der Erstellung von Java-Anwendungen unterscheidet man zwischen den beiden Grundformen Java-Applet und JavaApplication (vgl. Bild 1). Java-Applets sind fester Bestandteil eines WWW-Dokuments. Sie werden bei Anforderung des Dokuments durch den Web Browser, z.B. Netscape Navigator oder Microsoft Internet Explorer, vom Web Server über das Inter- bzw. Intranet Java ist insbesondere durch nachstehende Merkmale charakterisiert [GoMc95]. Objektorientierung: Die Wurzeln von Java sind in den Programmiersprachen C, Smalltalk, C++ und Objective C zu finden. Jedes Java Programm besteht aus einer Menge von Objekten als Instanzen von Klassen, die Daten und Methoden kapseln und über Nachrichten miteinander interagieren. Verteilung: Java unterstützt verteilte Anwendungen in Netzwerken. Durch geeignete Aufteilung der Anwendung in Kommunikations-, Anwendungs- und Datenhaltungsteil lassen sich verteilte ClientServer-Anwendungen realisieren. Einfachheit: Die Sprache soll einfach und schnell erlernbar sein. Dazu trägt einerseits die enge Verwandtschaft mit weit verbreiteten Programmiersprachen wie C und C++ bei, andererseits die stark eingeschränkte Anzahl vorhandener Sprachkonstrukte. Insbesondere das Fehlen von Zeigern vereinfacht die Erstellung von Anwendungen. Das Verbot mehrfacher Vererbung führt zu übersichtlicheren Klassenbibliotheken und Vererbungsstrukturen. Interpretierung: Der Quellcode wird nicht wie bei herkömmlichen Programmiersprachen üblich in den Maschinencode der zugrundeliegenden Basismaschine, sondern in einen Zwischencode, den sog. Bytecode, übersetzt. Dabei handelt es sich um ein architekturunabhängiges Objektdateiformat, das auf jeder Basismaschine ausführbar ist, für die ein Laufzeitsystem und ein Interpreter in Form einer virtuellen Java Maschine (Java Virtual Machine) vorliegt. Der eigentliche Java-Interpreter verwendet folglich nicht den ursprünglichen Quellcode, sondern einen bereits optimierten, plattformunabhängigen Zwischencode. Robustheit: Java ist als stark typisierte Programmiersprache konzipiert. Dies er- WIRTSCHAFTSINFORMATIK 39 (1997) 4, S. 398 – 400 WI – Schlagwort 3 Funktionalität von Java Web Server Server Internet bzw. Intranet Java Applet Java Application Web Browser Java Virtual Machine (JVM) Interpreter / JIT Compiler Laufzeitsystem Windows Macintosh OS/2 Unix ... Client Bild 1 Architektur von Java (vereinfacht) möglicht bereits zur Übersetzung die Überprüfung potentieller Typinkonsistenzen. Während der Laufzeit wird zudem die Einhaltung von Feld- und Zeichenkettengrenzen überwacht. Durch den Verzicht auf Zeigervariablen können viele fehlerträchtige Konstruktionen vermieden werden. Referenzen von Variablen auf Speicherstellen werden vom Java-Laufzeitsystem automatisch behandelt, wodurch das Referenzieren bzw. Dereferenzieren von Variablen durch den Entwickler entfällt. Weiterhin übernimmt Java das Speichermanagement der während der Laufzeit dynamisch erzeugten Datenobjekte durch eine eigene Garbage-Collection-Routine. Mit Hilfe eines leistungsfähigen Konzepts zur Ausnahmebehandlung wird das Kriterium der Robustheit abgerundet. Architekturunabhängigkeit und Portabilität: Einzige Voraussetzung für die Unabhängigkeit von der zugrundeliegenden Rechnerarchitektur ist das Vorhandensein einer Java Virtual Machine für die jeweilige Basismaschine. Damit ist eine explizite Portierung auf ein neues Zielsystem nicht mehr notwendig. Darüber hinaus wurde bei der Sprachdefinition von Java auf implementationsabhängige Aspekte verzichtet. Multithread-Fähigkeit: Java unterstützt die Nebenläufigkeit innerhalb von Programmen durch Multithreading. Mehrere Aufgaben eines Programms können mit Hilfe von unabhängigen Threads quasi simultan abgearbeitet werden. Durch umfassende Synchronisationsmechanismen sollen Verklemmungen (Deadlocks) von Threads vermieden werden. Seit Anfang des Jahres ist das Java Development Kit (JDK), die Referenzimplementation Javas von Sun Microsystems, in der Version 1.1.x verfügbar und löst damit die erste offizielle Fassung 1.0.x aus dem Jahr 1995 ab. Das JDK stellt ein Grundgerüst für die Entwicklung von Java-Anwendungen zur Verfügung. Zentrale Bestandteile des JDK sind neben einem BytecodeCompiler ein Java-Interpreter und ein Debugger. Die Funktionalität der von Sun Microsystems mitgelieferten Klassenbibliothek hat sich in der aktuellen Version beträchtlich erweitert. Neben Klassen zur Implementierung von grafischen Benutzeroberflächen, Netzwerkfunktionen und Einund Ausgaben sind nun u.a. auch Hilfsmittel für sprachunabhängige und damit internationale Anwendungen, Methodenaufrufe über das Netz für verteilte Anwendungen, Datenbankanbindungen und eine Java-Komponentenarchitektur (Java Beans) vorhanden. Die beiden letzteren werden beispielhaft herausgegriffen. Datenbankanbindung: Java stellt in Form von Java Database Connectivity (JDBC) eine Standardschnittstelle für den Zugriff auf relationale Datenbanken zur Verfügung [HaCa97]. Sie unterstützt neben Abfragen an Datenbanken in der Structured Query Language (SQL) auch Mehrbenutzerzugriff und Transaktionssicherheit. Da JDBC und der von Microsoft in der Windows-Welt etablierte Quasi-Standard Open Database Connectivity (ODBC) auf gemeinsame Grundlagen zurückzuführen sind, kann auf Erfahrungen aus dem Umfeld von ODBC aufgebaut werden. Sun Microsystems befreit den Entwickler durch JDBC von einer eigenen, proprietären Datenhaltung und erlaubt die Integration umfangreicher, bereits bestehender Datenbanken in Java-Programme. Damit lassen sich u.a. auch betriebswirtschaftliche Anwendungen, wie Produktkataloge, Auftragserfassungen, Börsensoftware oder Reservierungssysteme, im Internet realisieren. Die Object Database Management Group (ODMG) erarbeitet zur Zeit eine Alternative zu JDBC [Deba97]. Ihr Ansatz zur Persistierung von Daten soll eine objektorientierte Anbindung von Datenbanken an Java ermöglichen, wodurch der in JDBC vorhandene, klassische Strukturbruch zwischen relationalen und objekt- 399 Michael Böhnlein orientierten Konzepten vermieden werden soll. Java-Komponentenarchitektur [De So97]: Grundgedanke der Java-Komponentenarchitektur ist, daß Java-Programme aus bereits existierenden bzw. kundenindividuell anpaßbaren Softwarekomponenten, sog. Java-Beans, zusammengesetzt werden können. Java-Beans sind spezielle Klassen, deren Entwicklung besondere Konventionen hinsichtlich Eigenschaften und Ereignissteuerung voraussetzt. Das Zusammenfügen von einfachen zu komplexeren Teilen führt zur Wiederverwendbarkeit von Komponenten. Eine visuelle Manipulation grafischer Repräsentationen von Java-Beans vereinfacht die Anwendungsentwicklung und unterstützt prototypische Realisierungen. Der Vorteil von Java-Beans über bereits existierende Komponentenmodelle ist in der Plattformunabhängigkeit von Java zu sehen. 4 Schwachstellen und Problemfelder In der vorliegenden Fassung weist Java noch eine Reihe von Schwachstellen auf. Performance: Der interpretierte JavaZwischencode erreicht nicht die Ausführungsgeschwindigkeit des kompilierten Codes herkömmlicher Programmiersprachen, wie z.B. C oder C++. Java Just In Time-Compiler (JIT) ermöglichen eine Leistungssteigerung. Sie konvertieren vor der Programmausführung den Java Bytecode in Prozessoranweisungen für den Rechner des Endanwenders. Werkzeugunterstützung: Zur Zeit gibt es bereits eine Vielzahl kommerzieller und nichtkommerzieller, integrierter Entwicklungsumgebungen (Integrated Deve- 400 lopment Environment) für Java. Deren Stabilität und Funktionsumfang weist aber teilweise noch Schwachstellen gegenüber etablierten Werkzeugen herkömmlicher Programmiersprachen auf. Standardisierung: Eine (internationale) Standardisierung zur Gewährleistung der inhaltlichen Stabilität der Java Technologie fehlt. Sun Microsystems hat durch Vorlage von Teilen der Java-Technologie bei der ISO/IEC JTC1 (International Organization for Standardization/International Electrotechnical Commission Joint Technical Committee) als Publicly Available Specificaton (PAS) einen ersten Schritt zur internationalen Standardisierung von Java unternommen. Netzinfrastruktur: Es bleibt abzuwarten, ob die Bandbreite des Internets die durch zukünftige, umfangreichere Java Applets verursachte Datenlast ausreichend bewältigen kann oder ob für die Zukunft ein Stau auf dem Daten-Highway vorprogrammiert ist. Funktionsumfang der Klassenbibliotheken: Aktuelle Klassenbibliotheken von Java bieten noch nicht den Funktionsumfang von Klassenbibliotheken herkömmlicher Programmiersprachen. Besonders die Unterstützung bei der Entwicklung grafischer Benutzeroberflächen läßt noch viel an Komfort vermissen. Die Java Foundation Classes (JFC), eine in Zusammenarbeit zwischen Sun Microsystems und Netscape entstehende Klassenbibliothek, sowie die Application Foundation Classes (AFC) von Microsoft versuchen, diese Lücke zu schließen. Sicherheit: Das Sicherheitskonzept von Java stellt zur Zeit lediglich rudimentäre Grundfunktionen zur Verfügung und bedarf einer eingehenden Überarbeitung. 5 Entwicklungstendenzen Aus Sicht der Wirtschaftsinformatik ist eine Ausdehnung der Entwicklung auf unternehmenskritische, betriebswirtschaftliche Anwendungen mit Java von Interesse. Java hat das Potential, sich von einer Internet-Programmiersprache zu einer Softwareplattform für das gesamte Unternehmen zu entwickeln. Mit der Spezifikation der Java Enterprise Beans und einer Reihe von neuen Application Programming Interfaces (API) hat Sun Microsystems den Grundstock gelegt. Die Java Enterprise Beans erweitern die Java Bean Komponentenarchitektur für transaktionsbasierte, betriebliche Anwendungen. Literartur [Deba97] Debatin, F. F.: Java und Datenbanken – Der ODMG-Standard zur objektorientierten Datenbank-Anbindung. In: Java Spektrum (1997) 2, S. 25-28. [DeSo97] DeSoto, Alden.: Using the Beans Development Kit 1.0 April 1997 – A Tutorial. http://splash.javasoft.com/beans/ Tutorial-Apr97.pdf. [GoMc95] The Java Language Environment White Paper. http://www.javasoft.com/nav/read/ whitepapers.html. [HaCa97] Hamilton, G.; Cattell, R.: JDBC: A Java SQL API. ftp://splash.javasoft.com/pub/ jdbc-spec-0120.pdf. [Kram96] Kramer, D.: The Java Platform – A White Paper. http://www.javasoft.com/nav/ read/whitepapers.html.