|
| |
- Laut Brockhaus:
-
von staatseigenen indones[ischen] Plantagen auf Java stammender Blatttabak, der je nach Qualität als Deckblatt, Umblatt oder Einlage bei der Zigarrenherstellung verwendet wird.
Aus: Brockhaus --- Die Enzyklopädie, Bd. 11, 20. Aufl., 1997, p. 149. - Java, Jawa früher Djawa [...], kleinste, aber bedeutendste der Großen Sundainseln, Indonesien, 1 060 km lang, 55-195 km breit, 118 000 km2, (1990) 107,58 Mio. Ew.; verwaltungsmäßig (einschließlich der Insel Madura 132 186 km2) in drei Prov., die Sonderregion Yogyakarta und den hauptstadtsonderbezirk Jakarta gegliedert. Die Insel ist überwiegend gebirgig. Tätige und erloschene Einzelvulkane und Vulkangruppen bilden die zentrale Längsachse der Insel (mehrere Gipfel über 3 000m ü. M., Semeru 3 676m ü.M.). Beiderseits der Vulkanreihe (17 tätige Vulkane) gliedern sich Berg- und Hügelländer (aus tertiären kalken und mergeln) an. Im N[orden] sind dem Bergland z.T. versumpfte Schwemmlandebenen vorgelagert.
Aus: Brockhaus --- Die Enzyklopädie, Bd. 11, 20. Aufl., 1997, p. 149. - Informatik: objektorientierte, in starkem Maße an C++ angelehnte betriebssystem- und plattformunabhängige Programmiersprache, die 1995 von der Firma "Sun Microsystems" (USA) entwickelt wurde. J[ava] ist eine Sprache für in Netzen verteilbare Anwendungen, bei denen nicht nur Datensätze, sondern auch Programmteile (so genannte Applets;) in den Rechner geladen und ausgeführt werden können. Damit wird die in der Informatik, speziell im ->Internet, äußerst wichtige Forderung nach Systemunabhängigkeit erfüllt. J[ava]-Programme können auf beliebigen Rechnern ausgeführt werden, die über einen javafähigen WWW-Browser (->World Wide Web) verfügen; zusätzlich können wie --- wie herkömml[iche] Programme --- auch ohne Browser ausgeführt werden, sofern das J[ava]-Laufzeitsystem direkt im Betriebsystem implementiert ist.
Aus: Brockhaus --- Die Enzyklopädie, Bd. 11, 20. Aufl., 1997, p. 149.
-
Umgangssprachlicher Ausdruck für starken, heißen Kaffee in den USA
-
In einem Satz (nach der Definition von Sun Microsystems): eine einfache und kleine, objektorientierte, dezentrale, interpretierte, stabil laufende, architekturneutrale, portierbare und dynamische Sprache, die Hochgeschwindigkeitsanwendungen und Multithreading unterstützt.
Im einzelnen bedeutet das:
-
Java ist einfach; die Sprachkonzepte (Syntax) sind überschaubar. Im wesentlichen Stellen sie eine vereinfachte Untermenge der Programmierspache C++ dar.
Wesentliche Unterschiede: rein objektorientiert (d.h. keine structs mehr möglich), keine Mehrfachvererbung (aber Nachbildung mit Interfaces möglich, wodurch die wesentlichen Nachteile eliminiert werden, jedoch die Vorteile gewahrt beleiben), keine Operatorüberladung, keine Metaprogrammierung (parametrische Polymorphie auch: Templates), kein Präprozessor -
Java gehört der Familie der objektorientierten (Abk. OO) Sprachen an --- dazu später mehr.
-
Java erfüllt ein wesentliches Charakteristikum von Client/Server-Anwendungen, die Fähigkeit, Informationen und die Berechnungslast der Daten zu verteilen. Der Begriff dezentral beschreibt dabei die Beziehung zwischen Systemobjekten, gleichgültig ob diese Objekte auf lokalen oder entfernten Systemen abgelegt sind.
Am bekanntesten dürften die Java Applets sein, welche die Verteilung ganzer Applikationen über das World-Wide-Web (Abk. WWW). -
Mit Java erstellte Applikationen sind auf jeder Plattform (Hardware, Betriebsystem) ausführbar, für die eine Java Virtual Machine (Abk. JVM) existiert. Um dies zu erreichen wird durch den Java-Compiler kein plattformspezifischer Objektcode generiert, sondern eine Zwischenrepräsentation --- der Byte-Code. Dieser wird zur Ausführungzeit (auch: Laufzeit) durch das Laufzeitsystem --- die JVM --- interpretiert und für den Anwender transparent in maschinenspezifische Instruktionsfolgen umgesetzt. Eine JVM kann auch im Web Browser implementiert sein (z.B. Netscape Navigator, Microsoft Internet-Explorer).
(siehe Abbildung 1) -
Java ist stabil im Sinne von zuverlässig. Dies bedeutet in der Praxis die Verringerung der Absturzwahrscheinlichkeit (gleichbedeutend mit undefiniertem, unvorherseh- und -sagbarem Verhalten) eines mit der Sprache geschriebenen Programms.
-
Die Neutralität hinsichtlich der zugrundeliegenden Zielarchitektur (Hardware, Betriebssystem) wurde bereits bei der JVM angesprochen. Hier soll nochmals der Aspekt des architekturunabhängigken Bytecodes betont werden.
-
Folgt (eigentlich) direkt aus der Architekturneutralität; die Java-Laufzeitumgebung --- die virtuelle Maschine --- kann für beliebige Zielarchitekturen umgesetzt werden. Sofort danach sind alle Java-Applikationen, ohne Änderung, auf der neuen Plattform ablauffähig.
Das selbe gilt für mit Java erstelle Oberflächen, die ebenfalls nicht auf eine Plattform (Betriebssystem oder Window Manager) festgelet sind.
Der --- in plattformabhängig compilierenden Sprachen wie C/C++ notwendige --- Aufwand eine Applikation an eine neue Zielumgebung anzupassen (d.h. Portierung auf neue Hardware oder Betriebsystem) entfällt durch die Zwischenstufe der JVM, bzw. wird in die Umsetzung dieser auf die neuen Gegebenheiten verlagert. (siehe Abbildung 2)-
Die Architektur von Java ermöglicht es, die Sprache jederzeit an weiterentwickelnde Umgebungen anzupassen.
-
Es versteht sich von selbst, dass plattformunabhängig ausgelgter Bytecode der zur Laufzeit jedesmal interpretiert und in plattformspezifischen Maschinencode umgesetzt werden muss, Geschwindigkeitsnachteile gegenüber auf genau eine Plattform zugeschnittenen Applikationen aufweißt. Jedoch haben Untersuchungen von Sun gezeigt, dass Java-Bytecode --- der in plattformspezifischen Maschinencode übersetzt wurde --- plattformspezifischem Code anderer Sprachen ebenbürtig ist. (Hierdurch geht jedoch der Aspekt der Plattformunabhängigkeit verloren!)
- Multithreating soll (zunächst) vereinfacht als die Fähigkeit eines Programms definiert werden mehrere Tätigkeiten zur gleichen Zeit ausführen zu können.
|
| |
- 1990: Auf Anraten des Programmierers Patrick Naughton wird bei Sun Microsystems eine Entwicklertruppe unter dem Namen Green ins Leben gerufen. Zentrale Mitarbeiter sind, neben Naughton, James Gosling und Mike Sheridan. Ziel des (anfänglich hochgeheimen) Projekts ist die Analyse des EDV-Marktes hinsichtlich verwertbarer Zukunftstrends.
Die Männer ermitteln als zuküftig erfolgversprechende Einnahmequelle für SUN den Bereich der Consumerelektronik (d.h. Telephone, Videorecorder, Wasch- und Kaffeemaschinen --- kurz allerlei elektronische Alltagsgeräte).
Ferner definieren sie Anforderungen an ein zukünftiges plattformunabhängiges (d.h. universell einsetzbares) Betriebssystem dieser Maschinen. Vor allem Fehlertoleranz sowie leichte Bedienbarkeit und besondere Stabilität sollten dieses gegenüber existierenden Betriebsystemen auszeichnen. - Frühjahr 1991: erster Prototyp eines solchen Systems
- August 1991: Unter Federführung von James Gosling wird nach einer Sprache zur Programmierung des neu zu entwickelnden Betriebsystems gesucht; leider erfolglos.
Nicht das es im Sommer 1991 an möglichen Programmiersprachenaspiranten mangelte, sondern keiner der Kandidaten deckte das im Jahr zuvor formulierte Anforderungsspektrum zur Zufriedenheit ab.
Folglich wurde eine neue Sprache --- unter dem Namen Oak (engl. Eiche) --- entwickelt. - 1992: Green-Team präsentiert ersten Prototyp (Trickfigur Duke)
Die unabhängige Firma FirstPerson wird gegründet.
- bis 1994 ist es FirstPerson nicht gelungen Oak zu vermarkten --- die Firma wird eingestellt, und das Produkt verschwindet in der Versenkung. Das Green-Team kehrt zu Sun zurück.
- 1994: Auf Initiative von William Joy wird Oak für das Internet modifiziert (der mittlerweile legendäre Mosaic-Browser war ein Nebenprodukt der Arbeit des Green-Team).
- 1995: Oak wird im Internet zur Verfügung gestellt; allerdings nun unter dem neuen Namen Java.
Vorstellung der β-Version1 auf Sun-World-Konferenz. - 1996: Java Development Kit (Abk. JDK) v1.0
- 1997: JDK v1.1
- 1998: JDK v1.2
|
| |
Prinzipiell kann, wie erwähnt, eine Java-Applikation auf jeder beliebigen Plattform zur Ausführung gebracht werden --- unabhängig davon welches Gerät die notwendige virtuelle Maschine implementiert.
So existieren Visionen und erste Umsetzungen von JVMs für Elektrogeräte wie Kaffeemaschinen, Kühlschränke, Radios etc. (Stichwort: Jini).
Zur Erinnerung: die Intention der ursprünglichen Java-Entwicklung zielte nicht auf Desktop Rechner oder gar das Internet.
Die Abbildung 4 schematisiert den Aufbau der Java-Plattform. Von der konkreten Plattform der physischen Hardware (Prozessor, etc. und des darauf ausgeführten Betriebsystems) wird durch die plattformspezifische virtuelle Maschine abstrahiert.
In diese eingebettet ist das Java-Application Programmers Interface (Abk. API) --- die sog. Klassenbibliothek. Sie ist vollständig in Java realisiert. Sie ist bereits als plattformunabhängiges Java-Programm ausgelegt. Das API liefert die wesentlichen Grundprimitven zur Erstellung leistungsfähiger Programme.
Auf dieser virtuellen Plattform läuft das (Benutzer) Java-Programm --- in Form des Bytecodes --- ab.
Hinweis: Beachten Sie die Unterscheidung zwischen Java-Plattform und Ausführungsplattform (=Betriebsystem und Hardware) einer Java-Applikation
Das Java Development Kit
Unseren Betrachtungen liegt die Sprache Java in der Implementierung von SunSoft zugrunde. Dies bedeutet: Proprietäre Spracherweiterungen (besser: Verwässerungen) einzelner Hersteller bleiben außen vor!
Das Java Development Kit ist die Sun-Engineeringsumgebung zum Erstellen von Java-Applikationen, -Applets und -Komponenten. Es ist Kern sämtlicher Java-Engineeringswerkzeuge. Die Vorlesung bezieht sich auf das JDK in Version 1.2 --- dem Kern der Java 2 Plattform.
Das Entwicklungspaket steht für folgende Plattformen kostenfrei zur Verfügung:
- Windows32-Welt (Windows95, Windows98, WindowsNT v4) auf Intel-basierter Hardware.
Minalhardwareausstattung: 80486-Prozesor und 48MB RAM - Solaris/SPARC-Welt (Solaris v2.5.1, 2.6 und 7)
Minimalhardwareausstattung: 48MB und diverse Solarispatches. - Solaris/Intel-Welt (Solaris v2.5.1, 2.6 und 7)
Minimalhardwareausstattung: 80486-Prozesor und 48MB RAM
- javac: Der Java-Compiler
Er setzt den Quellcode in Bytecode um - java: Ein Java-Interpreter
Zur Ausführung des Bytecodes - Applet Viewer: Ausführen von Appletts ohne zugehörige Web-Seite
- javap: Ein Java-Disassembler
Umkehrung des Compilers; ermöglicht (beschränkte) Wiedergewinnung des Quellcodes aus Bytecode - javadoc: Ein Dokumentationswerkzeug
Generiert automatisch HTML-Dokumentation aus Kommentaren im Quellcode - jdb: Ein Debugger
Ein Werkzeug zur Fehlersuche - jar: Das Java Archive Tool
- extcheck: Ein Werkzeug zur Identifikation von Versionskonflikten
Ein Java-Compilat (das ausführbare Programm) wird von der JVM interpretiert.
Def. Compiler: Ein C. ist ein Programm, welches Code einer konkreten Programmiersprache als Eingabe verwendet und daraus Maschinencode erzeugt, der von der jeweiligen Zielmaschine (dem Prozessor) "verstanden" wird. Die Ausgabe kann gebunden werden und als ausführbare Applikation abgelegt werden.
Def. Interpreter: Ein I. ist ein Programm, welches Code einer konkreten Programmiersprache als Eingabe verwendet, diese zur Ausführungszeit interpretiert und so das Quellprogramm ausführt.
Des Hauptunterschied (für unsere Zwecke) ist die maschinenspezifische Auslegung --- und daraus resultierende Festlegung (aber auch Optimierung!) auf diesen Prozessor --- eines durch einen Compiler erzeugten Programms gegenüber der Allgemeinheit des Interpreter-Ansatzes, der "nur" die Verfügbarkeit des Interpreters auf der gewünschten Zielplattform erfordert.
Hingegen ist die (alte) Diskussion der Vor- und Nachteile complierter vs. interpretierter Ausführung nicht grundsätzlich zugunsten eines Ansatzes entscheidbar (Stichworte hier: Ausführungszeit, Entwicklungszeit der Applikation, Portierungsaufwand).
Service provided by Mario Jeckle
Generated: 2004-06-07T12:31:57+01:00
Feedback SiteMap
This page's original location: http://www.jeckle.de/vorlesung/sei/kI.html
RDF description for this page