|
|
Zeile 34: |
Zeile 34: |
| Betriebssystem = [[Microsoft Windows|Windows]], [[Solaris (Betriebssystem)|Solaris]], [[Linux]], [[macOS]] | | Betriebssystem = [[Microsoft Windows|Windows]], [[Solaris (Betriebssystem)|Solaris]], [[Linux]], [[macOS]] |
| Website = [https://www.oracle.com/de/downloads/ www.oracle.com/de/] | | Website = [https://www.oracle.com/de/downloads/ www.oracle.com/de/] |
|
| |
| Die '''Java-Laufzeitumgebung''' ({{enS|Java Runtime Environment}}, kurz '''JRE''') ist die [[Laufzeitumgebung]] der [[Java-Technologie|Java-Technik]]. Mit ihr werden Programme ([[Java-Anwendung]]en) weitgehend unabhängig vom darunter liegenden Betriebssystem ausgeführt. Sie stellt eine [[Softwareplattform]] dar, auch ''Java-Plattform'' genannt. Sie definiert die Anwendungsprogrammierschnittstellen (APIs) eindeutig und maschinenunabhängig und enthält die [[Java Virtual Machine|virtuelle Maschine (JVM)]].
| |
|
| |
| Bis zur Version 8 wurde die Java-Laufzeitumgebung separat ausgeliefert und musste auf dem Zielsystem eigens installiert werden. Ab der Version 9 wird die Laufzeitumgebung gemeinsam mit dem [[Java Development Kit]] ausgeliefert und auch gemeinsam installiert. Um eine Java-Anwendung auf einem System laufen zu lassen, auf dem keine Java-Laufzeitumgebung installiert ist, muss die Java-Anwendung mit der Java-Laufzeitumgebung gelinkt werden.<ref>https://docs.oracle.com/javase/9/tools/jlink.htm</ref>
| |
|
| |
| == Eigenschaften ==
| |
| Allgemein besteht die Laufzeitumgebung aus der ''[[Java Virtual Machine]]'' (''Java VM''), die für die Ausführung der Java-Anwendungen verantwortlich ist, einer [[Programmierschnittstelle]] (''API'', für ''Application and Programming Interface'') und weiteren [[Programmbibliothek]]en. Die ''API'' stellt die Standard-Klassen der Programmiersprache ''[[Java (Programmiersprache)|Java]]'' bereit, wie etwa „<code>java.lang.String</code>“. Die [[virtuelle Maschine]] und die API müssen aufeinander abgestimmt sein und werden deshalb zur JRE zusammengefasst. Diese kann als virtueller Computer betrachtet werden, welcher in einer virtuellen Maschine einige [[Prozessor (Software)|Prozessoren]] und als oberste Bibliotheksschicht eine API zur Verfügung stellt.
| |
|
| |
| Die Java-Laufzeitumgebung enthält keine Entwicklungswerkzeuge, wie beispielsweise [[Compiler]]. Für die Programmierung mit ''Java'' wird das ''[[Java Development Kit]]'' (''JDK'') oder eine andere Programmierumgebung, welche ebenfalls ''Java''-[[Bytecode]] erzeugt, benötigt.
| |
|
| |
| == Besonderheiten für Microsoft Windows ==
| |
|
| |
| Das ''Java-Bedienfeld'' (Java Control Panel) ist eine Erweiterung für die Systemsteuerung von Microsoft Windows. Dort können Einstellungen der Java-Laufzeitumgebung (JRE) vorgenommen werden. Bei der Installation wird dazu die Datei ''jpicpl32.cpl'' bzw. ''javacpl.cpl'' zum Systemverzeichnis von Windows hinzugefügt.
| |
|
| |
| == Editionen ==
| |
|
| |
| Seit dem Erscheinen von Java 2 wird die Java-Laufzeitumgebung in der Form, wie sie von Sun zur Verfügung gestellt wird, in ''Editionen'' unterteilt, da Java-Anwendungen auf unterschiedlichen Endgeräten mit unterschiedlichen Charakteristiken eingesetzt werden können, von Mobilgeräten über Desktop-Computer bis zu Servern:
| |
| ; Java Platform [[Java Card]]: Erlaubt es Java-Card-Applets, einem reduzierten Java-Standard folgende Java-Applets auf Chipkarten auszuführen.
| |
| ; Java Platform, Micro Edition ([[Java Platform, Micro Edition|Java ME]]): Plattform für sogenannte ''embedded consumer products'', wie etwa Smartphones oder Tablets.
| |
| ; Java Platform, Standard Edition ([[Java Platform, Standard Edition|Java SE]]): Sammlung von Java-Programmierschnittstellen für den generellen Einsatz auf PCs, Servern oder ähnlichen Geräten. Die Java SE dient als Grundlage für die Java-EE- und Java-ME-Technologien.
| |
| ; Java Platform, Enterprise Edition ([[Java Platform, Enterprise Edition|Java EE]]): Java SE, angereichert um Programmierschnittstellen für die transaktionsbasierte Ausführung von mehrschichtigen Unternehmens- und Web-Anwendungen.
| |
|
| |
| Die Standard- und die Enterprise-Edition benutzen die gleiche virtuelle Maschine (''[[Java Virtual Machine]]'', JVM), die [[Programmierschnittstelle]] ist in der Enterprise-Edition jedoch um zahlreiche Zusatzbibliotheken und Zusatzprogramme (insbesondere für den [[Anwendungsserver]]) ergänzt. [[Jakarta EE]] (früher Java EE) ist in erster Linie als Spezifikation zu verstehen, für deren Nutzung meist auf kommerzielle Produkte anderer Hersteller oder [[Open Source|Open-Source]]-Software zurückgegriffen wird.
| |
|
| |
| Versionsinformationen sind im Artikel/Abschnitt [[Java-Technologie #Versionen]] beschrieben.
| |
|
| |
| === Weitere Varianten ===
| |
|
| |
| Neben den Implementierungen von [[Sun Microsystems]] (seit 2010 [[Oracle]]), die üblicherweise als Referenz herangezogen werden, gibt es allgemeine JVMs von [[IBM]]. Für [[Echtzeitbetriebssystem|Echtzeit]]-Java oder für spezielle [[Eingebettetes System|eingebettete Systeme]] sind sowohl freie Implementierungen der Java-Plattform ([[Kaffe]], [[JamaicaVM]]) als auch verschiedene Projekte von Firmen und Universitäten bekannt. Die Java-Komponenten der [[Android (Betriebssystem)|Android-Plattform]] für mobile Endgeräte bilden eine weitere, nur teilweise aus SUN-Komponenten bestehende Java-Plattform.
| |
|
| |
| == APIs ==
| |
|
| |
| [[Sun Microsystems]] stellt eine Reihe von Programmierschnittstellen ([[Programmierschnittstelle|APIs]]) zur Realisierung von Softwareprojekten bereit und unterscheidet dabei zwischen solchen, die für alle Arten von Java-Anwendungen relevant sind (Core Java Technology, deutsch „Java-Kerntechnologie“), und solchen, die nur für [[Desktop-Anwendung]]en relevant sind (Desktop Java Technology).
| |
|
| |
| === Kerntechnologie ===
| |
|
| |
| Sun fasst Programmierschnittstellen, die sowohl für Server- als auch für Desktop-Anwendungen nützlich sind, unter dem Begriff ''Core Java Technology'' zusammen. Diese Programmierschnittstellen bilden also den Kern der Java-Technologie.
| |
|
| |
| ==== Sicherheit ====
| |
|
| |
| Dem Thema Sicherheit wurde schon in der Frühzeit von Java viel Aufmerksamkeit gewidmet, so leben beispielsweise [[Java-Applet]]s in einer sogenannten [[Sandbox]], die verhindern soll, dass sie auf dem lokalen Rechner Schaden anrichten können. Neuere Erweiterungen betreffen die Themen [[Verschlüsselung]] und Prüfung der Identität von Kommunikationsteilnehmern ([[Authentifizierung]]).
| |
| * Die [[Java Cryptography Extension|Java Cryptography Extension (JCE)]] definiert Programmierschnittstellen für diverse Verschlüsselungsverfahren.
| |
| * Der [[Java Authentication and Authorization Service]] (JAAS) definiert Programmierschnittstellen für die sichere Feststellung der Identität eines Anwenders.
| |
| * Die [[Java Secure Socket Extension]] (JSSE) ermöglicht sichere Kommunikation über [[Transport Layer Security|SSL]].
| |
|
| |
| ==== Datenbank-Zugriff ====
| |
|
| |
| Der Zugriff von Java auf [[SQL]]-[[Datenbank]]en erfolgt über eine Programmierschnittstelle namens [[Java Database Connectivity]] (JDBC, deutsch Java-Datenbank-Verbindungsfähigkeit).
| |
|
| |
| ==== Debugging ====
| |
|
| |
| Für die Anbindung von [[Debugger]]n an [[Java Virtual Machine|virtuelle Maschinen]] wurde eine ganze Architektur namens [[Java Platform Debugger Architecture]] definiert.
| |
|
| |
| ==== Dokumentation ====
| |
|
| |
| Das Werkzeug [[Javadoc]] erzeugt aus Java-[[Quelltext]] [[Hypertext Markup Language|HTML]]-Dateien, die einen guten Überblick über ganze [[Klassenbibliothek]]en geben. Durch die Möglichkeit, frei definierte [[Plug-in]]s hinzuzufügen, lassen sich damit mit geringem Aufwand auch andere Arten von Dateien aus Java-Quelltext erzeugen.
| |
|
| |
| ==== Sonstige Kernbestandteile ====
| |
|
| |
| Neben Verfahren zur [[Internationalisierung (Softwareentwicklung)|Internationalisierung]], hauptsächlich durch die Verwendung von [[Unicode]] und die Klasse ''ResourceBundle'' (siehe [[Java Platform, Standard Edition]]) gehören weitere grundlegende Programmierschnittstellen zur Java-Plattform.
| |
| * [[Remote Method Invocation]] (RMI) ist ein Verfahren zum Aufruf von Objekten, die auf anderen Rechnern laufen.
| |
| * Das [[Java Native Interface]] (JNI) bietet die Möglichkeit, [[Programmbibliothek|Bibliotheken]] aufzurufen, die in [[C (Programmiersprache)|C]], [[C++]] oder anderen Sprachen programmiert wurden.
| |
| * Das [[Java Naming and Directory Interface]] (JNDI) ist eine einheitliche Java-Schnittstelle für viele unterschiedliche [[Verzeichnisdienst]]e.
| |
|
| |
| ==== Optionale Java-Packages und verwandte Technologie ====
| |
|
| |
| Neben den Kernbestandteilen der Java-Plattform gibt es optionale Komponenten, die diese um zusätzliche Funktionalitäten ergänzen.
| |
| * Die [[Java Management Extensions]] (JMX) definieren eine Schnittstelle für die [[Systemadministrator|Systemverwaltung]], mittels der ein Java-Programm während der Ausführung beobachtet oder umkonfiguriert werden kann, sofern es dies unterstützt. Seit Java-Version 5 ist JMX eine Kernkomponente.
| |
| * [[JMX Remote]] ist eine Erweiterung von JMX über Maschinengrenzen hinweg.
| |
| * [[Java Communications API]] ermöglicht den Zugriff auf Hardware-Schnittstellen, beispielsweise [[Parallelport]]s oder [[Universal Serial Bus|USB]]-Ports.
| |
| * [[Java Telephony API]] die Anbindung von [[Telefon]]en an Java-Programme, zum Beispiel um Anwendungen für [[Callcenter]] zu entwickeln.
| |
|
| |
| === Desktop-Technologie ===
| |
|
| |
| Programmierschnittstellen, die in erster Linie für Anwendungen mit [[Grafische Benutzungsoberfläche|grafischer Benutzungsoberfläche]] benötigt werden, fasst Sun unter dem Begriff ''Desktop Java Technology'' zusammen.
| |
|
| |
| ==== Deployment (automatisierte Software-Verteilung und Installation) ====
| |
|
| |
| [[Softwareverteilung|Deployment]] ist die automatisierte Verteilung von Software auf viele Rechner und die Installation darauf. Die Java-Laufzeitumgebung JRE bietet hierzu zwei Verfahren an:
| |
| * Das [[Java Plug-in]] ermöglicht die Ausführung von [[Java-Applet]]s in [[Webbrowser|Internet-Browsern]].
| |
| * [[Java Web Start]] startet Java-Anwendungen direkt aus dem [[Internet]]. Dabei legt es sie lokal ab, damit sie nur dann erneut geladen werden, wenn es eine neue Version gibt.
| |
|
| |
| ==== Komponenten ====
| |
|
| |
| Mit den [[JavaBeans]] verfügt Java über ein eigenes [[Framework]] für [[Softwarekomponente]]n.
| |
|
| |
| ==== GUI ====
| |
|
| |
| Die Standardklassenbibliotheken für die Erstellung [[Grafische Benutzeroberfläche|grafischer Benutzeroberflächen]] (''Graphical User Interface'', GUI) mit Java heißen [[Java Foundation Classes]] (JFC). Sie enthalten neben dem grundlegenden [[Abstract Window Toolkit]] (AWT) weitere Klassenbibliotheken:
| |
| * [[Swing (Java)|Swing]] ist eine umfangreiche Bibliothek von GUI-Komponenten. In Swing integriert sind Verfahren für die Benutzung durch behinderte Menschen, die unter dem Begriff [[Accessibility]] zusammengefasst werden.
| |
| * [[Java 2D]] ist eine Klassenbibliothek zum Erstellen zweidimensionaler Grafiken.
| |
| * Verfahren zur [[Internationalisierung (Softwareentwicklung)|Internationalisierung]] der grafischen Benutzeroberflächen.
| |
|
| |
| ==== Ton-Ausgabe ====
| |
|
| |
| Für die Ausgabe von Tondateien, zum Beispiel im [[Musical Instrument Digital Interface|MIDI]]- oder [[RIFF WAVE|WAV]]-Format, gibt es eine Klassenbibliothek namens [[Java Sound]].
| |
|
| |
| === Webanwendungen ===
| |
|
| |
| [[Webanwendung]]en (serverbasierte Anwendungen, deren Benutzerinteraktion über einen Browser stattfindet) bestehen gewöhnlich aus JSPs ([[JavaServer Pages]]) und [[Servlet]]s. Die notwendigen Interfaces und Klassen befinden sich in der [[Jakarta EE]]. Zusammen mit den [[JavaBeans]] lassen sich recht komfortabel Anwendungen schreiben, die dem [[Model View Controller|MVC-Pattern]] genügen. Eine Vielzahl von [[Framework]]s setzt auf dieses API auf. Seit 2004 beinhaltet die Java-Plattform mit [[JavaServer Faces]] ein eigenes API für Webanwendungen, welche auf dem MVC-Pattern beruhen.
| |
|
| |
| === Persistenz ===
| |
|
| |
| Um Daten dauerhaft zu speichern (zu „persistieren“), stellt die [[Java Platform, Enterprise Edition|Enterprise Edition]] die [[Enterprise JavaBeans]] (EJBs) zur Verfügung. Dort kommen ''Entity Beans'' (zur Abbildung von fachlichen Objekten bzw. Entities), ''Session Beans'' (zur Abbildung des [[Workflow]]s) und ''Message Driven Beans'' (für [[asynchrone Kommunikation]]) zum Einsatz. Der recht umständliche und nicht objektorientierte Ansatz wird mit der neuesten Spezifikation EJB 3.0 generalüberholt. Es existieren zahlreiche Frameworks, die Alternativen zur Persistierung anbieten (beispielsweise [[Java Data Objects|JDO]] oder [[Hibernate (Framework)|Hibernate]]).
| |
|
| |
| Als elementare Persistenzmechanismen bieten die Java-Kernbibliotheken zwei weitere Verfahren an:
| |
| * Die Serialisierung von Objektbäumen in Binärdateien über Klassen des Pakets „<code>java.io</code>“ und
| |
| * die Serialisierung von [[JavaBeans]] in [[Extensible Markup Language|XML]]-Dateien über Klassen des Pakets „<code>java.beans</code>“.
| |
|
| |
| === Optionale Java-Packages und verwandte Technologien ===
| |
|
| |
| Zusätzlich zu den oben genannten Bestandteilen der Java-Plattform, die immer vorhanden sein müssen, gibt es noch eine Reihe optionaler Komponenten, die bei Bedarf installiert werden können. Beispiele:
| |
| * Das [[Java Media Framework]] (JMF) ermöglicht die Ausgabe multimedialer Daten wie beispielsweise Videos.
| |
| * Die Klassenbibliothek [[Java 3D]] stellt Klassen zu Darstellung dreidimensionaler, bewegter und interaktiver Grafiken bereit.
| |
| * [[Java Advanced Imaging]] enthält Klassen für die Bearbeitung von Bilddateien.
| |
| * [[Java Speech]] erzeugt aus Text gesprochene Sprache.
| |
| * Das [[JavaHelp System]] kann für die Erstellung von Hilfsdokumentation zu Java-Anwendungen verwendet werden.
| |
|
| |
|
| [[Kategorie:Laufzeitumgebung]] | | [[Kategorie:Laufzeitumgebung]] |