„Java-Plattform“ – Versionsunterschied
Erscheinungsbild
[gesichtete Version] | [gesichtete Version] |
Inhalt gelöscht Inhalt hinzugefügt
K Änderungen von 217.255.215.237 (Diskussion) rückgängig gemacht und letzte Version von Spuk968 wiederhergestellt |
K Bot: Korrigiere doppelte Weiterleitung auf Java-Technologie |
||
(20 dazwischenliegende Versionen von 15 Benutzern werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
#WEITERLEITUNG [[Java-Technologie]] |
|||
{{Redundanztext|[[Benutzer:Sebastian.Dietrich|Sebastian.Dietrich]] 19:05, 11. Apr. 2010 (CEST)|April 2010|Java-Laufzeitumgebung|Java-Plattform}} |
|||
[[Datei:Java-Logo.svg|100px|right|Java-Logo]] |
|||
Die '''Java-Plattform''' (englisch ''Java Platform'') definiert die [[Laufzeitumgebung|Ablaufumgebung]] ([[Java Virtual Machine]]) und [[Programmierschnittstelle]]n (Java Application Programming Interface) innerhalb der [[Java (Technologie)|Java-Technologie]]. Der Kern der Java-Plattform ist die '''Java-Laufzeitumgebung''' (englisch ''[[Java Runtime Environment]]''). |
|||
Durch die Java-Plattform werden Programme weitgehend unabhängig vom darunter liegenden Betriebssystem ausgeführt. Sie definiert die Anwendungsprogrammierschnittstellen (APIs) eindeutig und maschinenunabhängig. |
|||
Programme für die Java-Plattform werden in der Regel mit Hilfe der [[Java (Programmiersprache)|Programmiersprache Java]] erstellt. Die Verwendung anderer Programmiersprachen ist möglich, z. B. [[Nice (Programmiersprache)|Nice]] oder [[Groovy]]. |
|||
== Einleitung == |
|||
Seit dem Erscheinen von Java 2 wird die Java-Plattform, in der Form wie sie von Sun zur Verfügung gestellt wird, in drei ''Editionen'' unterteilt, um dem Faktum Rechnung zu tragen, dass Java-Anwendungen auf unterschiedlichen Endgeräten mit unterschiedlichen Charakteristiken eingesetzt werden können, von Handys und PDAs ü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 ME]]): Plattform für so genannte ''embedded consumer products'' wie etwa Mobiltelefone oder PDAs. |
|||
; 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 [[Application Server]]) ergänzt. |
|||
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. |
|||
Neben den Implementierungen von [[Sun Microsystems]], die üblicherweise als Referenz herangezogen werden, gibt es allgemeine JVMs von [[IBM]]. Für [[Echtzeit]]-Java oder für spezielle [[Eingebettetes System|eingebettete Systeme]] sind sowohl freie Implementierungen der Java-Plattform ([[Kaffe]]) als auch verschiedene Projekte von Firmen und Universitäten bekannt. Die Java-Komponenten der [[Android (Plattform)|Android-Plattform]] für mobile Endgeräte bilden eine weitere, nur teilweise aus SUN-Komponenten bestehende Java-Plattform. |
|||
=== Write Once, Run Anywhere === |
|||
Java funktioniert nach dem Konzept ''Write Once, Run Anywhere'' (deutsch: „Einmal schreiben, überall ausführen“). Das bedeutet, dass man ein Programm, das in Java programmiert wurde, theoretisch nur einmal zu [[Compiler|kompilieren]] braucht und es auf allen anderen Systemen läuft, die eine [[Java Runtime Environment|Java-Laufzeitumgebung]] (''Java Runtime Environment'' bzw. ''JRE'') besitzen. Dies wird dadurch erreicht, dass Java zunächst in [[Bytecode]] kompiliert wird, dieser wird von der JRE beim Starten des Programms erst in die [[Maschinensprache]] kompiliert (Man spricht hier von einem [[JIT-Compiler]]). In der Praxis ist diese Plattformunabhängigkeit allerdings nicht immer gegeben. |
|||
Der Bytecode funktioniert also als Zwischencode, zwischen Programmiersprache und Maschinensprache. So ist das Javaprogramm nicht an eine bestimmte Maschine gebunden. Das Java Runtime Environment existiert für weit verbreitete [[Betriebssystem]]e wie [[Microsoft Windows]], [[Linux (Betriebssystem)|Linux]], [[Solaris (Betriebssystem)|Solaris]], [[Mac OS X]], [[AIX]] und viele andere. Daneben gibt es eine JRE nicht nur für Server- und Desktop-Betriebssysteme, sondern auch für viele [[Eingebettetes System|eingebettete Systeme]] wie Mobiltelefone, [[Personal Digital Assistant|PDAs]], sowie Smartcards und andere technische Plattformen, wie Auto und TV. Die Plattformunabhängigkeit endet jedoch für solche Systeme, für die keine Java Virtual Machine existiert, zumeist ältere oder sehr exotische Systeme. |
|||
Es gibt aber auch Compiler, die Java-Quellcode direkt in Maschinencode übersetzen (Java Native Compiler). |
|||
Wer von „Plattformunabhängigkeit“ und „Java“ spricht, muss zwischen der Java-VM selbst und den Programmen, die in Java geschrieben sind, unterscheiden. Die Java-VM, die die eigentliche Plattformunabhängigkeit ermöglicht, ist selbst plattformabhängig, da sie auf ein bestimmtes Betriebssystem und eine Rechnerarchitektur angepasst ist. Zum Beispiel ist Suns Java-VM für Windows in C++ geschrieben und durch C++ kompiliert. Andere Komponenten des JDKs wie zum Beispiel der Java-Compiler, sind in purem Java geschrieben und damit wieder plattformunabhängig, das heißt, der Bytecode des Compilers ist auf unterschiedlichen Plattformen identisch. Das Gleiche gilt für den Bytecode von Programmen, die in Java geschrieben und durch einen Java-Compiler kompiliert wurden. |
|||
== 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 ([http://java.sun.com/j2se/corejava/ Core Java Technology], deutsch "Java-Kerntechnologie") und solchen, die nur für [[Desktop-Anwendung]]en relevant sind ([http://java.sun.com/j2se/desktopjava/ 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 verhindert, dass sie auf dem lokalen Rechner Schaden anrichten. 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 [[JAAS|Java Authentication and Authorization Service (JAAS)]] definiert Programmierschnittstellen für die sichere Feststellung der Identität eines Anwenders. |
|||
* Die [[JSSE|Java Secure Socket Extension (JSSE)]] ermöglicht sichere Kommunikation über [[Secure Sockets Layer|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|Java Platform Debugger Architecture (JPDA)]] (deutsch "Debugger-Architektur der Java-Plattform") definiert. |
|||
==== Dokumentation ==== |
|||
Das Werkzeug [[Javadoc]] erzeugt aus Java-[[Quelltext]] [[HTML]]-Dateien, die einen guten Überblick über ganze [[Klassenbibliothek]]en geben. Durch die Möglichkeit, frei definierte [[Plugin]]s hinzuzufügen, lassen sich damit mit geringem Aufwand auch andere Arten von Dateien aus Java-Quelltext erzeugen. |
|||
==== Sonstige Kernbestandteile ==== |
|||
Neben Verfahren zur [[Internationalisierung (Informatik)|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, [[Bibliothek (Programmierung)|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) ==== |
|||
[[Deployment]] ist die automatisierte Verteilung von Software auf viele Rechner und die Installation darauf. Die Java-Laufzeitumgebung [[Java Runtime Environment|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 [[Java Beans]] 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 (Informatik)|Internationalisierung]] der grafischen Benutzeroberflächen. |
|||
==== Sound ==== |
|||
Für die Ausgabe von Tondateien, zum Beispiel im [[MIDI]]- oder [[WAV (Format)|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 [[J2EE|Enterprise Edition]]. Zusammen mit den [[Java Beans]] 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 [[J2EE|Enterprise Edition]] die [[Enterprise Java Beans]] (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 [[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 [[Java Beans]] in [[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. |
|||
* 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 (JAI)]] 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:Programmiersprache Java]] |
|||
[[Kategorie:Laufzeitumgebung]] |
|||
[[ar:جافا (منصة برمجية)]] |
|||
[[cs:Platforma Java]] |
|||
[[en:Java (software platform)]] |
|||
[[es:Plataforma Java]] |
|||
[[fa:سکوی جاوا]] |
|||
[[fr:Java (technique)]] |
|||
[[it:Piattaforma Java]] |
|||
[[ja:Javaプラットフォーム]] |
|||
[[ko:자바 플랫폼]] |
|||
[[pt:Plataforma Java]] |
|||
[[vi:Java (công nghệ)]] |
|||
[[zh:Java 平臺]] |
Aktuelle Version vom 12. Februar 2013, 00:52 Uhr
Weiterleitung nach: