Java-Laufzeitumgebung: Unterschied zwischen den Versionen

Aus Foxwiki
K Dirkwagner verschob die Seite JRE nach Java-Laufzeitumgebung
K Textersetzung - „= Umgebungsvariablen =“ durch „= Umgebung =“
 
(13 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
'''topic''' - Kurzbeschreibung
'''Java-Laufzeitumgebung''' (JRE) ist die [[Laufzeitumgebung]] der [[Java-Technologie|Java-Technik]], mit der Programme ([[Java-Anwendung]]en) weitgehend unabhängig vom darunter liegenden Betriebssystem ausgeführt werden
 
== Beschreibung ==
== Beschreibung ==
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)]].
[[File:Java-Logo.png|mini|140px]]
Die '''Java-Laufzeitumgebung''' (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.


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>
; Betriebssysteme
* [[Microsoft Windows|Windows]]
* [[Solaris (Betriebssystem)|Solaris]]
* [[Linux]]
* [[macOS]]


== Eigenschaften ==
== 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.
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.
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 ==
== Besonderheiten für Microsoft Windows ==
 
Das ''Java-Bedienfeld'' (Java Control Panel) ist eine Erweiterung für die Systemsteuerung von 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.
* 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 ==
== 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:


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:
{| class="wikitable sortable options"
; 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.
! Edition !! Beschreibung
; 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.
| [[Java Card]] || Erlaubt es Java-Card-Applets, einem reduzierten Java-Standard folgende Java-Applets auf Chipkarten auszuführen.
|-
| Micro Edition ([[Java Platform, Micro Edition|Java ME]]) || Plattform für sogenannte ''embedded consumer products'', wie etwa Smartphones oder Tablets.
|-
| 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  
|-
| 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.
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.
Zeile 27: Zeile 53:


=== Weitere Varianten ===
=== Weitere Varianten ===
 
Neben den Implementierungen von [[Sun Microsystems]] (seit 2010 [[Oracle]]), die üblicherweise als Referenz herangezogen werden, gibt es allgemeine JVMs von [[IBM]].  
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.
* 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 ==
== 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).
[[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 ===
=== 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.  
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.
* Diese Programmierschnittstellen bilden also den Kern der Java-Technologie.


==== Sicherheit ====
==== 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.  
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]]).
* 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.
* 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.
* Der [[Java Authentication and Authorization Service]] (JAAS) definiert Programmierschnittstellen für die sichere Feststellung der Identität eines Anwenders.
Zeile 46: Zeile 72:


==== Datenbank-Zugriff ====
==== Datenbank-Zugriff ====
Der Zugriff von Java auf [[SQL]]-[[Datenbank]]en erfolgt über eine Programmierschnittstelle namens [[Java Database Connectivity]] (JDBC, deutsch Java-Datenbank-Verbindungsfähigkeit).
Der Zugriff von Java auf [[SQL]]-[[Datenbank]]en erfolgt über eine Programmierschnittstelle namens [[Java Database Connectivity]] (JDBC, deutsch Java-Datenbank-Verbindungsfähigkeit).


==== Debugging ====
==== Debugging ====
Für die Anbindung von [[Debugger]]n an [[Java Virtual Machine|virtuelle Maschinen]] wurde eine ganze Architektur namens [[Java Platform Debugger Architecture]] definiert.
Für die Anbindung von [[Debugger]]n an [[Java Virtual Machine|virtuelle Maschinen]] wurde eine ganze Architektur namens [[Java Platform Debugger Architecture]] definiert.


==== Dokumentation ====
==== Dokumentation ====
 
Das Werkzeug [[Javadoc]] erzeugt aus Java-[[Quelltext]] [[Hypertext Markup Language|HTML]]-Dateien, die einen guten Überblick über ganze [[Klassenbibliothek]]en geben.  
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.
* 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 ====
==== 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.
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.
* [[Remote Method Invocation]] (RMI) ist ein Verfahren zum Aufruf von Objekten, die auf anderen Rechnern laufen.
Zeile 65: Zeile 88:


==== Optionale Java-Packages und verwandte Technologie ====
==== 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.
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.
* 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.
* [[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 Communications API]] ermöglicht den Zugriff auf Hardware-Schnittstellen, beispielsweise [[Parallelport]]s oder [[Universal Serial Bus|USB]]-Ports.
Zeile 73: Zeile 96:


=== Desktop-Technologie ===
=== 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.
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) ====
==== Deployment (automatisierte Software-Verteilung und Installation) ====
 
[[Softwareverteilung|Deployment]] ist die automatisierte Verteilung von Software auf viele Rechner und die Installation darauf.  
[[Softwareverteilung|Deployment]] ist die automatisierte Verteilung von Software auf viele Rechner und die Installation darauf. Die Java-Laufzeitumgebung JRE bietet hierzu zwei Verfahren an:
* 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]].
* 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.
* [[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 ====
==== Komponenten ====
Mit den [[JavaBeans]] verfügt Java über ein eigenes [[Framework]] für [[Softwarekomponente]]n.
Mit den [[JavaBeans]] verfügt Java über ein eigenes [[Framework]] für [[Softwarekomponente]]n.


==== GUI ====
==== 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).  
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:
* 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.
* [[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.
* [[Java 2D]] ist eine Klassenbibliothek zum Erstellen zweidimensionaler Grafiken.
* Verfahren zur [[Internationalisierung (Softwareentwicklung)|Internationalisierung]] der grafischen Benutzeroberflächen.
* Verfahren zur [[Internationalisierung (Softwareentwicklung)|Internationalisierung]] der grafischen Benutzeroberflächen.


==== Ton-Ausgabe ====
==== 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]].
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 ===
=== Webanwendungen ===
 
[[Webanwendung]]en (serverbasierte Anwendungen, deren Benutzerinteraktion über einen Browser stattfindet) bestehen gewöhnlich aus JSPs ([[JavaServer Pages]]) und [[Servlet]]s.  
[[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.
* 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 ===
=== Persistenz ===
 
Um Daten dauerhaft zu speichern (zu „persistieren“), stellt die [[Java Platform, Enterprise Edition|Enterprise Edition]] die [[Enterprise JavaBeans]] (EJBs) zur Verfügung.  
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]]).
* 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:
Als elementare Persistenzmechanismen bieten die Java-Kernbibliotheken zwei weitere Verfahren an:
Zeile 110: Zeile 138:


=== Optionale Java-Packages und verwandte Technologien ===
=== 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.  
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:
* Beispiele:
* Das [[Java Media Framework]] (JMF) ermöglicht die Ausgabe multimedialer Daten wie beispielsweise Videos.
* 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.
* Die Klassenbibliothek [[Java 3D]] stellt Klassen zu Darstellung dreidimensionaler, bewegter und interaktiver Grafiken bereit.
Zeile 122: Zeile 150:
=== Optionen ===
=== Optionen ===
=== Parameter ===
=== Parameter ===
=== Umgebungsvariablen ===
=== Umgebung ===
=== Exit-Status ===
=== Rückgabewert ===
== Anwendung ==
== Anwendung ==
=== Fehlerbehebung ===
=== Fehlerbehebung ===
Zeile 134: Zeile 162:
==== Sicherheit ====
==== Sicherheit ====
==== Dokumentation ====
==== Dokumentation ====
===== RFC =====
===== Man-Pages =====
===== Man-Pages =====
===== Info-Pages =====
===== Info-Pages =====
==== Links ====
==== Links ====
===== Projekt =====
===== Projekt =====
===== Weblinks =====
===== Weblinks =====
# https://de.wikipedia.org/wiki/Java-Laufzeitumgebung
# https://de.wikipedia.org/wiki/Java-Laufzeitumgebung
# https://jdk.java.net/
# https://jdk.java.net/
# [https://www.java.com/de/download/manual.jsp Download der Java 8 Laufzeitumgebung] – Übersicht der mit Java 8 unterstützten Betriebssysteme
# [https://www.java.com/de/download/manual.jsp Download der Java 8 Laufzeitumgebung] – Übersicht der mit Java 8 unterstützten Betriebssysteme
 
# https://www.oracle.com/de/downloads/
= TMP =
[[Datei:Java-Logo.svg|70px|zentriert|Logo]]
 
Name                = Java
Betriebssystem      = [[Microsoft Windows|Windows]], [[Solaris (Betriebssystem)|Solaris]], [[Linux]], [[macOS]]
Website              = [https://www.oracle.com/de/downloads/ www.oracle.com/de/]


[[Kategorie:Laufzeitumgebung]]
[[Kategorie:Laufzeitumgebung]]
[[Kategorie:Java-Technologie]]
[[Kategorie:Java]]


</noinclude>
</noinclude>

Aktuelle Version vom 8. September 2024, 11:28 Uhr

Java-Laufzeitumgebung (JRE) ist die Laufzeitumgebung der Java-Technik, mit der Programme (Java-Anwendungen) weitgehend unabhängig vom darunter liegenden Betriebssystem ausgeführt werden

Beschreibung

Die Java-Laufzeitumgebung (Java Runtime Environment, kurz JRE) ist die Laufzeitumgebung der Java-Technik.

  • Mit ihr werden Programme (Java-Anwendungen) 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 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.
Betriebssysteme

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 Programmbibliotheken.

  • Die API stellt die Standard-Klassen der Programmiersprache Java bereit, wie etwa „java.lang.String“.
  • 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 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:

Edition Beschreibung
Java Card Erlaubt es Java-Card-Applets, einem reduzierten Java-Standard folgende Java-Applets auf Chipkarten auszuführen.
Micro Edition (Java ME) Plattform für sogenannte embedded consumer products, wie etwa Smartphones oder Tablets.
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
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-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 Echtzeit-Java oder für spezielle 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-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 (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-Anwendungen 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-Applets in einer sogenannten Sandbox, die verhindern soll, dass sie auf dem lokalen Rechner Schaden anrichten können.

Datenbank-Zugriff

Der Zugriff von Java auf SQL-Datenbanken erfolgt über eine Programmierschnittstelle namens Java Database Connectivity (JDBC, deutsch Java-Datenbank-Verbindungsfähigkeit).

Debugging

Für die Anbindung von Debuggern an virtuelle Maschinen wurde eine ganze Architektur namens Java Platform Debugger Architecture definiert.

Dokumentation

Das Werkzeug Javadoc erzeugt aus Java-Quelltext HTML-Dateien, die einen guten Überblick über ganze Klassenbibliotheken geben.

  • Durch die Möglichkeit, frei definierte Plug-ins hinzuzufügen, lassen sich damit mit geringem Aufwand auch andere Arten von Dateien aus Java-Quelltext erzeugen.

Sonstige Kernbestandteile

Neben Verfahren zur 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.

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.

Desktop-Technologie

Programmierschnittstellen, die in erster Linie für Anwendungen mit grafischer Benutzungsoberfläche benötigt werden, fasst Sun unter dem Begriff Desktop Java Technology zusammen.

Deployment (automatisierte Software-Verteilung und Installation)

Deployment ist die automatisierte Verteilung von Software auf viele Rechner und die Installation darauf.

Komponenten

Mit den JavaBeans verfügt Java über ein eigenes Framework für Softwarekomponenten.

GUI

Die Standardklassenbibliotheken für die Erstellung 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 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 der grafischen Benutzeroberflächen.

Ton-Ausgabe

Für die Ausgabe von Tondateien, zum Beispiel im MIDI- oder WAV-Format, gibt es eine Klassenbibliothek namens Java Sound.

Webanwendungen

Webanwendungen (serverbasierte Anwendungen, deren Benutzerinteraktion über einen Browser stattfindet) bestehen gewöhnlich aus JSPs (JavaServer Pages) und Servlets.

  • Die notwendigen Interfaces und Klassen befinden sich in der Jakarta EE.
  • Zusammen mit den JavaBeans lassen sich recht komfortabel Anwendungen schreiben, die dem MVC-Pattern genügen.
  • Eine Vielzahl von Frameworks 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 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 Workflows) 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 JDO oder Hibernate).

Als elementare Persistenzmechanismen bieten die Java-Kernbibliotheken zwei weitere Verfahren an:

  • Die Serialisierung von Objektbäumen in Binärdateien über Klassen des Pakets „java.io“ und
  • die Serialisierung von JavaBeans in XML-Dateien über Klassen des Pakets „java.beans“.

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.

Installation

Syntax

Optionen

Parameter

Umgebung

Rückgabewert

Anwendung

Fehlerbehebung

Konfiguration

Dateien

Anhang

Siehe auch

Sicherheit

Dokumentation

Man-Pages
Info-Pages

Links

Projekt
Weblinks
  1. https://de.wikipedia.org/wiki/Java-Laufzeitumgebung
  2. https://jdk.java.net/
  3. Download der Java 8 Laufzeitumgebung – Übersicht der mit Java 8 unterstützten Betriebssysteme
  4. https://www.oracle.com/de/downloads/