Die Programmiersprache Java

Werbung
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.
Herunterladen