Java-Laufzeitumgebung: Unterschied zwischen den Versionen

Aus Foxwiki
Markierung: Ersetzt
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]]

Version vom 1. September 2023, 19:14 Uhr

topic - Kurzbeschreibung

Beschreibung

Installation

Syntax

Optionen

Parameter

Umgebungsvariablen

Exit-Status

Anwendung

Fehlerbehebung

Konfiguration

Dateien

Anhang

Siehe auch

Sicherheit

Dokumentation

RFC
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

TMP

Logo
Logo
Name                 = Java
Betriebssystem       = Windows, Solaris, Linux, macOS
Website              = www.oracle.com/de/