Zum Inhalt springen

Java-Technologie

aus Wikipedia, der freien Enzyklopädie
(Weitergeleitet von Java (Technik))
Datei:Java-Logo.svg
Java-Logo
Java Technologies

Die Java-Technik (Skriptfehler: Ein solches Modul „Vorlage:lang“ ist nicht vorhanden.) ist eine ursprünglich von Sun (heute Oracle-Gruppe) entwickelte Sammlung von Spezifikationen, die zum einen die Programmiersprache Java und zum anderen verschiedene Laufzeitumgebungen für Computerprogramme definieren. Diese Computerprogramme werden meistens in Java geschrieben.

Zur Java-Technik gehören die folgenden Bestandteile:

Ziel[Bearbeiten]

Mit der Java-Technik soll ein und dasselbe Programm auf unterschiedlichen Computersystemen laufen können. Diese Plattformunabhängigkeit wird dadurch erreicht, dass der Quellcode zunächst in Bytecode kompiliert wird, der erst auf dem Zielsystem von der Java-Laufzeitumgebung (Java Runtime Environment, kurz JRE) beim Starten des Programms in die jeweilige Maschinensprache übersetzt wird. Der Bytecode funktioniert also als Zwischencode zwischen Programmiersprache und Maschinensprache.

Die Java-Laufzeitumgebung muss auf dem Zielsystem installiert sein. Sie existiert für weit verbreitete Betriebssysteme wie Microsoft Windows, Linux, Solaris, Mac OS X, AIX und viele andere. Daneben gibt es JREs nicht nur für Server- und Desktop-Betriebssysteme, sondern auch für viele eingebettete Systeme wie Mobiltelefone, PDAs und Smartcards sowie für andere technische Plattformen, wie Auto und TV. Die Plattformunabhängigkeit endet bei Systemen, für die keine Java Virtual Machine existiert, zumeist also ältere oder sehr exotische Systeme.

Bestandteile[Bearbeiten]

Die Java-Technik besteht aus den folgenden Teilen:

Aufbau der Java-Technik
Programmier-
sprache
Java Quelltext (.java)
JDK Entwicklungswerkzeuge
Java-Compiler, …
Java Bytecode (.class, .jar)
JRE Java Programmierschnittstelle (API)
Java Virtual Machine (JVM)
mit Just-in-time-Kompilierung
Betriebs-
system
Windows, Linux, Solaris, Mac OS X, …

Programmiersprache Java[Bearbeiten]

Java ist eine objektorientierte Programmiersprache und eingetragenes Warenzeichen der Firma Oracle. Der Entwurf der Programmiersprache Java strebte im Wesentlichen fünf Ziele an:<ref>The Java Language Environment – 1.2 Design Goals of the JavaTM Programming Language, James Gosling und Henry McGilton, Mai 1996</ref><ref>Java Language Overview, 1995 Sun Whitepaper</ref>

Entwicklungswerkzeuge für Java-Programme[Bearbeiten]

Sie enthalten Compiler, die den Quellcode in Java-Bytecode übersetzen, Dokumentationswerkzeuge und Werkzeuge um Programme zu testen. Programme für die Java-Plattform werden in der Regel mit Hilfe der Programmiersprache Java erstellt. Die Verwendung anderer Programmiersprachen ist möglich, z. B. Nice oder Groovy.

Java-Laufzeitumgebung (Plattform)[Bearbeiten]

Die Java-Laufzeitumgebung (JRE) ist eine Softwareplattform, mit der Programme weitgehend unabhängig vom darunter liegenden Betriebssystem ausgeführt werden. Sie definiert die Anwendungsprogrammierschnittstellen (APIs) eindeutig und maschinenunabhängig und enthält die Java Virtual Machine (JVM), die für die Ausführung des Java-Bytecodes verantwortlich ist. Für die meisten Betriebssysteme ist sie kostenlos verfügbar.

Zwischen folgenden Java-Plattformen wird unterschieden:

Java Platform Java Card
Reduzierter Java-Standard, um sogenannte Java-Card-Applets auf Chipkarten ausführen zu können.
Java Platform, Micro Edition (Java ME)
Plattform für so genannte embedded consumer products wie etwa Mobiltelefone oder PDAs.
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 Jakarta-EE- und Java-ME-Techniken.
Jakarta EE
Java SE, angereichert um Programmierschnittstellen für die transaktionsbasierte Ausführung von mehrschichtigen Unternehmens- und Web-Anwendungen.

Geschichte[Bearbeiten]

[[Hilfe:Cache|Fehler beim Thumbnail-Erstellen]]:
Duke, Javas Maskottchen

Die Urversion von Java – auch Oak (Object Application Kernel) genannt – wurde in einem Zeitraum von 18 Monaten vom Frühjahr 1991 bis Sommer 1992 unter dem Namen The Green Project von Patrick Naughton, Mike Sheridan, James Gosling und Bill Joy sowie neun weiteren Entwicklern im Auftrag des US-amerikanischen Computerherstellers Sun Microsystems entwickelt. James Gosling war der Hauptentwickler. Ein Überbleibsel aus dem Green-Projekt ist der Duke von Joe Palrang, der zum bekannten Symbol bzw. Maskottchen geworden ist.

Der Name Oak hatte, nach Gerüchten, seinen Ursprung in einer Eiche (Skriptfehler: Ein solches Modul „Vorlage:lang“ ist nicht vorhanden.), die vor dem Fenster von James Gosling stand. Aufgrund rechtlicher Probleme musste der Name (es gab bereits eine Software dieses Namens) jedoch verworfen werden. Man entschied sich für den Namen Java nach einer starken Kaffee-Sorte, die speziell für Espresso Verwendung findet (Java-Bohne) und von den Entwicklern bevorzugt getrunken wurde.<ref>Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. 22. Juli 2022; ehemals im Vorlage:Referrer (nicht mehr online verfügbar); (Skriptfehler: Ein solches Modul „Multilingual“ ist nicht vorhanden.).@1@2Vorlage:Toter Link/www.infoworld.com (Seite nicht mehr abrufbar. Suche im Internet Archive)</ref><ref>Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. 21. Januar 2022; ehemals im Vorlage:Referrer (nicht mehr online verfügbar); (Skriptfehler: Ein solches Modul „Multilingual“ ist nicht vorhanden.).@1@2Vorlage:Toter Link/www.nytimes.com (Seite nicht mehr abrufbar. Suche im Internet Archive)</ref>

Das Ziel war nicht nur die Entwicklung einer weiteren Programmiersprache, sondern einer vollständigen Betriebssystemumgebung, inklusive virtueller CPU, für unterschiedlichste Einsatzzwecke. Das System sollte – der Legende nach – beispielsweise eine Kaffeemaschine steuern können.

Die Entwicklung fand in einem unauffälligen Bürogebäude in der Sand Hill Road in Menlo Park statt. Während der abgeschiedenen Entwicklungsphase kam es zu keinem Austausch mit Sun Microsystems. Im Sommer 1992 schließlich war die erste Oak-basierte Anwendung fertiggestellt – „an interactive, handheld home-entertainment device controller with an animated touchscreen user interface“. Diese Technikdemonstration einer Touchscreen-basierten Gerätesteuerung mit animierter grafischer Benutzeroberfläche hatte den Namen *7 (Star Seven).

Nach der Vorführung von Star Seven, mit dem zahlreiche Geräte interaktiv gesteuert werden konnten, wurden Unternehmen aus der Kabelfernseh-Branche aufmerksam, und aus dem Hinterzimmer-Projekt The Green Project entstand das Unternehmen FirstPerson. Aus dem Büro wurde ein Bürohaus in der 100 Hamilton Avenue in Palo Alto.

Da die Belegschaft inzwischen von 13 auf 70 Mitarbeiter gewachsen und die Zeit für interaktive digitale Mehrwertdienste im Bereich des Kabelfernsehens noch nicht reif war, suchte sich das junge Unternehmen neue Betätigungsfelder. Nach einem dreitägigen Treffen von John Gage, James Gosling, Bill Joy, Patrick Naughton, Wayne Rosing und Eric Schmidt in „The Inn at Squaw Creek“ bei Lake Tahoe war schnell klar: das Internet sollte es sein.

Auf Basis des Urvaters aller grafischen Webbrowser, Mosaic, wurde ein um Java erweiterter Webbrowser geschaffen – der WebRunner (nach dem Film Blade Runner). Später wurde WebRunner in HotJava umbenannt.

Im März 1995 wurde die erste Alphaversion (1.0a2) des Java-Quellcodes für die Öffentlichkeit freigegeben. Wenig später, am 23. Mai 1995, wurde Java auf der SunWorld-Konferenz in San Francisco erstmals der Öffentlichkeit vorgestellt.<ref>Alexander Neumann: Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. In: Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. 23. Mai 2015; ehemals im Vorlage:Referrer (nicht mehr online verfügbar);.@1@2Vorlage:Toter Link/www.heise.de (Seite nicht mehr abrufbar. Suche im Internet Archive)</ref>

Der Durchbruch kam mit der Integration von Java in den Browser Netscape Navigator – besiegelt durch einen Handschlag zwischen Eric Schmidt und George Paolini von Sun Microsystems sowie Marc Andreessen von Netscape – um 4 Uhr morgens in einem Zimmer des Sheraton-Palace-Hotels in der Nähe des Tagungszentrums.

Die Firma Oracle – die im Januar 2010 Sun Microsystems kaufte – will die Java-Technik zusammen mit dem Java Community Process in Richtung freie und quelloffene Software (OpenJDK) weiterentwickeln.<ref>Wolfgang Weigend: Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. (Flash) Folien zum VortragSkriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Oracle, 24. August 2011, S. 5; ehemals im Vorlage:Referrer (nicht mehr online verfügbar);.@1@2Vorlage:Toter Link/www.slideshare.net (Seite nicht mehr abrufbar. Suche im Internet Archive)</ref>

Versionen[Bearbeiten]

Legende: Ältere Version; nicht mehr unterstützt Ältere Version; noch unterstützt Aktuelle Version Aktuelle Vorabversion Zukünftige Version

„LTS“ steht für Long Term Support, eine Version, die besonders lange unterstützt wird, während die anderen Versionen dafür neue Sprachelemente enthalten, deren Erfolg noch geprüft wird.

Versionen und Codenamen<ref name="codenames" />
Version Codename Veröffentlichung Ende des kostenlosen Supports durch Oracle längerer kostenloser Support durch Eclipse Adoptium
Ältere Version; nicht mehr unterstützt: JDK 1.0 Oak 23. Januar 1996<ref>[Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden.] In: Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Sun Microsystems, Inc., 23. Januar 1996, archiviert vom Vorlage:Referrer (nicht mehr online verfügbar) am 10. März 2007; (Skriptfehler: Ein solches Modul „Multilingual“ ist nicht vorhanden.).</ref>
Ältere Version; nicht mehr unterstützt: JDK 1.1.4 Sparkler 12. September 1997
Ältere Version; nicht mehr unterstützt: JDK 1.1.5 Pumpkin 3. Dezember 1997
Ältere Version; nicht mehr unterstützt: JDK 1.1.6 Abigail 24. April 1998
Ältere Version; nicht mehr unterstützt: JDK 1.1.7 Brutus 28. September 1998
Ältere Version; nicht mehr unterstützt: JDK 1.1.8 Chelsea 8. April 1999
Ältere Version; nicht mehr unterstützt: J2SE 1.2 Playground 4. Dezember 1998
Ältere Version; nicht mehr unterstützt: J2SE 1.2.1 (keiner) 30. März 1999
Ältere Version; nicht mehr unterstützt: J2SE 1.2.2 Cricket 8. Juli 1999
Ältere Version; nicht mehr unterstützt: J2SE 1.3 Kestrel 8. Mai 2000 Dezember 2006<ref>Skriptfehler: Ein solches Modul „Vorlage:Literatur“ ist nicht vorhanden.</ref>
Ältere Version; nicht mehr unterstützt: J2SE 1.3.1 Ladybird 17. Mai 2001
Ältere Version; nicht mehr unterstützt: J2SE 1.4.0 Merlin 13. Februar 2002 Oktober 2008<ref>[Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden.] 26. Oktober 2011, archiviert vom Vorlage:Referrer (nicht mehr online verfügbar) am 14. November 2011; (Skriptfehler: Ein solches Modul „Multilingual“ ist nicht vorhanden.).</ref>
Ältere Version; nicht mehr unterstützt: J2SE 1.4.1 Hopper 16. September 2002
Ältere Version; nicht mehr unterstützt: J2SE 1.4.2 Mantis 26. Juni 2003
Ältere Version; nicht mehr unterstützt: J2SE 5.0 (1.5.0) Tiger 29. September 2004 Oktober 2009<ref name="oracle-135779" />
Ältere Version; nicht mehr unterstützt: JSE 6.0 (Mustang)<ref name="Ende der Codenamen"><templatestyles src="Webarchiv/styles.css" />Skriptfehler: Ein solches Modul „WLink“ ist nicht vorhanden. (Memento vom 16. November 2006 im Internet Archive) – Verzicht auf Codenamen ab JSE 6.0, Ray Gans’s Blog, 15. August 2006; abgerufen am 12. Oktober 2009.</ref> 11. Dezember 2006 Februar 2013<ref name="oracle-135779" />
Ältere Version; nicht mehr unterstützt: JSE 7.0 (Dolphin)<ref name="Ende der Codenamen" /> 28. Juli 2011<ref>Java 7 Releases nach Datum – Seite bei Java.com. Abgerufen am 20. November 2013.</ref> April 2015<ref name="oracle-135779" />
Ältere Version; noch unterstützt: JSE 8.0 – 18. März 2014<ref name="JDK 8 Schedule">Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Open JDK, 20. August 2012; ehemals im Vorlage:Referrer (nicht mehr online verfügbar); (Skriptfehler: Ein solches Modul „Multilingual“ ist nicht vorhanden.).@1@2Vorlage:Toter Link/openjdk.java.net (Seite nicht mehr abrufbar. Suche im Internet Archive)</ref> März 2022<ref name="SE_Support_Roadmap" /> November 2026<ref name="Adoptium Support">Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Ehemals im Vorlage:Referrer (nicht mehr online verfügbar); (Skriptfehler: Ein solches Modul „Multilingual“ ist nicht vorhanden.).@1@2Vorlage:Toter Link/adoptium.net (Seite nicht mehr abrufbar. Suche im Internet Archive)</ref>
Ältere Version; nicht mehr unterstützt: JSE 9.0 – 27. Juli 2017<ref name="JDK 9">Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Open JDK, 5. Januar 2017; ehemals im Vorlage:Referrer (nicht mehr online verfügbar); (Skriptfehler: Ein solches Modul „Multilingual“ ist nicht vorhanden.).@1@2Vorlage:Toter Link/openjdk.java.net (Seite nicht mehr abrufbar. Suche im Internet Archive)</ref> März 2018
Ältere Version; nicht mehr unterstützt: JSE 10.0 (18.3) – 20. März 2018 September 2018
Ältere Version; noch unterstützt: JSE 11.0 (18.9) LTS – 25. September 2018<ref name="heise-4173024">Alexander Neumann: Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. heise online, 25. September 2018; ehemals im Vorlage:Referrer (nicht mehr online verfügbar);.@1@2Vorlage:Toter Link/www.heise.de (Seite nicht mehr abrufbar. Suche im Internet Archive)</ref> September 2023<ref name="SE_Support_Roadmap" /> Oktober 2027<ref name="Adoptium Support" />
Ältere Version; nicht mehr unterstützt: JSE 12.0 – 19. März 2019<ref>Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Ehemals im Vorlage:Referrer (nicht mehr online verfügbar);</ref> September 2019
Ältere Version; nicht mehr unterstützt: JSE 13.0 – 17. September 2019<ref>Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Ehemals im Vorlage:Referrer (nicht mehr online verfügbar);</ref> März 2020
Ältere Version; nicht mehr unterstützt: JSE 14.0 – 17. März 2020<ref>Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Ehemals im Vorlage:Referrer (nicht mehr online verfügbar);</ref> September 2020
Ältere Version; nicht mehr unterstützt: JSE 15.0 – 15. September 2020<ref>Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Ehemals im Vorlage:Referrer (nicht mehr online verfügbar);</ref> März 2021
Ältere Version; nicht mehr unterstützt: JSE 16.0 – 16. März 2021<ref>Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Ehemals im Vorlage:Referrer (nicht mehr online verfügbar);</ref> September 2021
Ältere Version; noch unterstützt: JSE 17.0 LTS – Vorlage:DatumZelle<ref>Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Ehemals im Vorlage:Referrer (nicht mehr online verfügbar);</ref> September 2026<ref name="SE_Support_Roadmap" /> Oktober 2027<ref name="Adoptium Support" />
Ältere Version; nicht mehr unterstützt: JSE 18.0 – Vorlage:DatumZelle<ref>Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Ehemals im Vorlage:Referrer (nicht mehr online verfügbar);</ref> September 2022
Ältere Version; nicht mehr unterstützt: JSE 19.0 – Vorlage:DatumZelle<ref>Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Ehemals im Vorlage:Referrer (nicht mehr online verfügbar);</ref> März 2023
Ältere Version; nicht mehr unterstützt: JSE 20.0 – Vorlage:DatumZelle<ref>Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Ehemals im Vorlage:Referrer (nicht mehr online verfügbar);</ref> September 2023<ref name="SE_Support_Roadmap" />
Ältere Version; noch unterstützt: JSE 21.0 LTS – Vorlage:DatumZelle<ref name="java.com-releases">Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Ehemals im Vorlage:Referrer (nicht mehr online verfügbar);</ref> September 2028<ref name="SE_Support_Roadmap" /> Dezember 2029<ref name="Adoptium Support" />
Ältere Version; nicht mehr unterstützt: JSE 22.0 – Vorlage:DatumZelle<ref name="java.com-releases" /> September 2024
Ältere Version; nicht mehr unterstützt: JSE 23.0 – Vorlage:DatumZelle<ref name="java.com-releases" /> März 2025<ref name="SE_Support_Roadmap" />
Ältere Version; noch unterstützt: JSE 24.0 – Vorlage:DatumZelle<ref name="java.com-releases" /> September 2025<ref name="SE_Support_Roadmap" />
Aktuelle Version: JSE 25.0 LTS – Vorlage:DatumZelle<ref name="java.com-releases" /> September 2030<ref name="SE_Support_Roadmap" />
Zukünftige Version: JSE 26.0 – Vorlage:DatumZelle<ref name="java.com-releases" />
Versionen und Größen<ref>Skriptfehler: Ein solches Modul „Vorlage:Literatur“ ist nicht vorhanden.</ref>
Version Pakete Klassen, Enums und Interfaces Module
Ältere Version; nicht mehr unterstützt: JDK 1.0 008 0212
Ältere Version; nicht mehr unterstützt: JDK 1.1 023 0504
Ältere Version; nicht mehr unterstützt: JDK 1.2 059 1520
Ältere Version; nicht mehr unterstützt: JDK 1.3 076 1842
Ältere Version; nicht mehr unterstützt: JDK 1.4 135 2991
Ältere Version; nicht mehr unterstützt: J2SE 5.0 166 3279
Ältere Version; nicht mehr unterstützt: JSE 6.0 203 3793
Ältere Version; nicht mehr unterstützt: JSE 7.0 209 4024
Ältere Version; noch unterstützt: JSE 8.0 217 4240
Ältere Version; nicht mehr unterstützt: JSE 9.0 315<ref name="oracle/9/api">Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Ehemals im Vorlage:Referrer (nicht mehr online verfügbar); (Skriptfehler: Ein solches Modul „Multilingual“ ist nicht vorhanden.).@1@2Vorlage:Toter Link/docs.oracle.com (Seite nicht mehr abrufbar. Suche im Internet Archive)</ref> 6005<ref name="oracle/9/api" /> 78<ref name="oracle/9/api" />
Ältere Version; nicht mehr unterstützt: JSE 10.0 314<ref name="oracle/10/api">Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Ehemals im Vorlage:Referrer (nicht mehr online verfügbar); (Skriptfehler: Ein solches Modul „Multilingual“ ist nicht vorhanden.).@1@2Vorlage:Toter Link/docs.oracle.com (Seite nicht mehr abrufbar. Suche im Internet Archive)</ref> 6002<ref name="oracle/10/api" /> 77<ref name="oracle/10/api" />
Ältere Version; noch unterstützt: JSE 11.0 wc --lines</ref> 4410<ref name="oracle/11/api">Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Ehemals im Vorlage:Referrer (nicht mehr online verfügbar); (Skriptfehler: Ein solches Modul „Multilingual“ ist nicht vorhanden.).@1@2Vorlage:Toter Link/docs.oracle.com (Seite nicht mehr abrufbar. Suche im Internet Archive)</ref> wc --lines</ref>

Version 1[Bearbeiten]

Die 1996 erschienene Java-Version 1.0 enthielt noch eine überschaubare Menge von Standardpaketen, die in späteren Versionen schnell anwuchs:

  • java.lang: elementare Klassen, z. B. Object und System
  • java.io: Ein- und Ausgabe
  • java.util: z. B. Datenstrukturen und eine Datumsklasse
  • java.net: einfache Internetprotokoll-Klassen
  • java.awt: grundlegende Klassen für grafische Benutzeroberflächen
  • java.applet: eine Klasse für die bekannten Applets

Obwohl diese neue Sprache primär zum Entwickeln von Applets gedacht war, bot sie schon in der ersten Version Möglichkeiten, die weit darüber hinaus reichten.

Version 1.1[Bearbeiten]

Eine Spracherweiterung wurde 1997 mit Java 1.1 vorgenommen, die Syntax wurde um das Konzept der inneren Klassen erweitert. Das ging einher mit einem Umbau der Ereignisbehandlung hin zu einem Callback-System mit sogenannten Listenern.

Außerdem wurde die Standardbibliothek erweitert:

In den Versionen ab 1.1.5 war bereits Swing verfügbar, jedoch zählte dieses Framework noch nicht zum offiziellen Java. Besonders problematisch war, dass Swing mit Erscheinen von 1.2 eine andere Paketstruktur aufwies und eine Portierung notwendig machte.

Version 1.2[Bearbeiten]

Java 2 (JDK 1.2) erschien im Jahr 1998.<ref name="codenames">Skriptfehler: Ein solches Modul „Vorlage:Literatur“ ist nicht vorhanden.</ref> Mit Erscheinen dieser Version sprach Sun von Java 2, dementsprechend heißen die Pakete Java 2 Platform, Standard Edition (J2SE) und statt Java Development Kit (JDK) heißt es Java 2 Software Development Kit (J2SDK).

In dieser Version wurde neben dem bestehenden Interpreter ein Just-in-time-Compiler eingeführt; dieser beschleunigt die Ausführung von Java-Programmen deutlich. Die HotSpot Just-in-time-Kompilierung inklusive adaptiver Optimierung wurde als Erweiterung für Java 1.2 angeboten,<ref name="Shank">news.cnet.com</ref> ab Java 1.3 wurde HotSpot als alleinige JVM von Sun angeboten.<ref>sun.com</ref>

Erneut wurde die Standardbibliothek erweitert:

  • Neue Schnittstellen und Implementierungen für Collections, also Datenstrukturen wie Listen, Mengen und Maps (Assoziativlisten)
  • Die Oberflächenbibliothek Swing
  • Neue Grafik-Funktionen (Java 2D)
  • Drag and Drop-Funktionalität
  • Verbesserte Audio-Funktionen
  • Eine CORBA-Schnittstelle
  • Schwache Referenzen – das sind Referenzen, die den Garbage-Collector nicht daran hindern, das referenzierte Objekt zu entfernen

Im Jahr 1998 wurde auch der Java Community Process (JCP) eingeführt. Diese Organisation steuert seitdem Änderungen an der Spezifikation von Java. Für vorgeschlagene Änderungen wird ein Java Specification Request (JSR) erstellt, der verschiedene Phasen durchläuft, bevor die Änderungen in Java Einzug halten.

Version 1.3[Bearbeiten]

2000 erschien J2SE 1.3 als nächster Evolutionsschritt, die API wurde erneut erweitert. Außerdem wurde eine Engine mit Hotspot-Optimierung eingeführt. Das bedeutet, dass häufig benutzte Codefragmente (Hotspots) vom Bytecode zur Laufzeit in nativen Maschinencode übersetzt werden. Resultat war eine deutlich gesteigerte Ausführungsgeschwindigkeit.

API-Erweiterungen:

Version 1.4[Bearbeiten]

Erst 2002 wurde mit Erscheinen von J2SE 1.4 wieder die Sprache selbst erweitert, was zuletzt bei Version 1.1 geschehen war. Eine Unterstützung für Assertions wurde hinzugefügt. Auch die API wurde erweitert, was insbesondere die Serverprogrammierung erleichtern soll.

Die letzte Version von Java 1.4 war Java SE 1.4.2_42. „End of Public Updates“ – das Ende öffentlicher Aktualisierungen – erreichte J2SE 1.4 im Oktober 2008.<ref name="javasupportroadmap" />

Siehe auch: Servlet, Java Web Start, JSP, Jakarta EE, J2ME, Javadoc, Blackdown Java

Version 5.0[Bearbeiten]

Java 5.0 erschien am 30. September 2004 als Nachfolger der Version 1.4. Bei dem augenscheinlichen Versionssprung von 1.x auf 5 handelt es sich um die Einführung einer sog. Produktnummer. Diese Produktnummern sollen in Zukunft die Java-Versionen nach außen hin repräsentieren. Intern sollte dieselbe Produktversion nach der bekannten, traditionellen Versionsnummer bezeichnet werden. Java 5.0 entspricht also der internen Versionsnummer 1.5, Java 6.0 entsprechend 1.6 etc.<ref>Version 1.5.0 or 5.0?, Java 5 Release Notes, abgerufen am 5. Februar 2009.</ref> Die „2“ z. B. aus Jakarta EE verschwand somit ebenfalls ab Version 5.0 der Java Enterprise Edition. Sie wird nun mit Java EE 5 bezeichnet.<ref>Vorlage:Cite book/Name: [Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden.] Oracle, Skriptfehler: Ein solches Modul „TemplUtl“ ist nicht vorhanden. , archiviert vom Vorlage:Referrer (nicht mehr online verfügbar) am Vorlage:Cite book/URL; (Skriptfehler: Ein solches Modul „Multilingual“ ist nicht vorhanden.).Vorlage:Cite book/URLVorlage:Cite book/MeldungVorlage:Cite book/Meldung2Vorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/Meldung</ref>

In Version 5 gab es umfangreiche Änderungen an der Sprache sowie weitere API-Erweiterungen:

Die zunächst für Java 5 („Tiger“-Release) geplanten Erweiterungen der Ein-/Ausgabefunktionen (JSR-203)<ref>Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. In: Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. 2011; ehemals im Vorlage:Referrer (nicht mehr online verfügbar);.@1@2Vorlage:Toter Link/www.jcp.org (Seite nicht mehr abrufbar. Suche im Internet Archive)</ref> wurden erst auf Java 6 („Mustang“-Release) und Anfang 2006 dann auf Java 7 („Dolphin“-Release) verschoben.

Die letzte Version von Java SE 5 war JavaSE 5.0u45. „End of Public Updates“ – das Ende öffentlicher Aktualisierungen – erreichte JavaSE 5 im Oktober 2009.<ref name="javasupportroadmap" />

Version 6[Bearbeiten]

Die Java-Version 6 wurde am 11. Dezember 2006 veröffentlicht. Besonderes Augenmerk wurde auf Diagnose, Überwachung und Management gelegt. So wurde ein Framework zur Zusammenarbeit mit diversen Skriptsprachen, wie z. B. PHP, Python, Ruby und JavaScript, eingeführt.

Weitere Neuerungen waren eine verbesserte Darstellung von Desktop-Anwendungen sowie die Integration von Java DB, einer in Java implementierten relationalen Datenbank, die auf Apache Derby basiert.

Die im Oktober 2008 veröffentlichte Version 6u10 brachte nicht, wie sonst üblich, ausschließlich Fehlerbeseitigungen, sondern diverse Änderungen der JVM, mit denen nicht bis zum Erscheinen von Java 7 gewartet wurde. Zu den wichtigsten Neuerungen, die im Vorfeld bereits gefordert wurden, gehörten unter anderem:

Eine vollständige Liste sowie detaillierte Beschreibungen sind der Ankündigung zum „Update 10“ zu entnehmen.<ref>Java SE 6 Update 10 FAQ: JavaTM SE 6 Update Release Notes.</ref> Weitere Verbesserungen an der virtuellen Maschine, die ursprünglich für Java 7 geplant waren, wurden in Java 6 integriert und in mehreren Schritten ab „Java 6 Update 14“ ausgeliefert.

Die letzte geplante Version von Java SE 6 war „Java SE 6 Update 45“, sie wurde trotz angekündigtem „End of Public Updates“ – dem Ende öffentlicher Aktualisierungen – für Java SE 6 für Februar 2013 im April 2013 nachgereicht. Die aktuelle Version von Java EE 6 ist „Java EE 6 Update 4“. Im Dezember 2012 begann Oracle versuchsweise, einige Installationen automatisch von JavaSE 6 auf JavaSE 7 zu aktualisieren. Für Februar 2013 war geplant, alle installierten 32-Bit-Versionen über den automatischen Mechanismus auf Java 7 zu aktualisieren.<ref>oracle: Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. oracle.com; ehemals im Vorlage:Referrer (nicht mehr online verfügbar);</ref>

„End of Public Updates“ – das Ende öffentlicher Aktualisierungen – erreichte JavaSE 6 im Februar 2013.<ref name="javasupportroadmap" />

Version 7[Bearbeiten]

Die Java-Version 7 wurde am 28. Juli 2011 fertiggestellt.

Vor allem wurden bestehende Funktionalitäten verbessert und erweitert. Das sind unter anderem:

  • Eine neue Dateisystem-API (NIO.2), die die Geschwindigkeit von Dateisystemoperationen verbessert, bessere Möglichkeiten zum Kopieren und Verschieben von Dateien bietet, Methoden zum Traversieren von Verzeichnisstrukturen enthält und die zuverlässige Erkennung und Behandlung von symbolischen Links erlaubt.
  • Bibliotheken für die Netzwerkprotokolle Stream Control Transmission Protocol (SCTP), Sockets Direct Protocol (SDP) und TLS 1.2. Speziell unter Windows wird nach Möglichkeit nun ein neuerer IPv6-Netzwerk-Stack verwendet.
  • Aktualisierung der Unicode-Unterstützung auf Unicode 6.0 (von Unicode 4.0 in Java 6), der Datenbankschnittstelle JDBC und der Gebietsschemaparameter (Locale), die nun die Standards IETF BCP 47 und UTR 35 implementiert.
  • Das mit Java 6 Update 10 eingeführte Look-and-Feel Nimbus wird fester Bestandteil der Spezifikation.
  • Eine XRender-Pipeline für Java 2D, die die Darstellung von grafischen Elementen auf Linux beschleunigt.
  • Verbesserte Unterstützung des Java-Bytecode für dynamische Programmiersprachen.
  • Kleinere Sprachverbesserungen im Rahmen des Project Coin, wie die Nutzbarkeit von Zeichenketten in switch-Anweisungen.<ref>Java Programming Language Enhancements – Liste der Core Java Neuheiten in Versionen 5, 6, 7</ref>

Eine Liste sowie detaillierte Beschreibungen der mit Java 7 umgesetzten Funktionalitäten sind der Dokumentation des OpenJDK-Projektes Java 7 zu entnehmen.<ref>JDK 7 Features</ref>

Java 7 erreichte „End of Public Updates“ – das Ende öffentlicher Aktualisierungen – im April 2015.<ref name="javasupportroadmap" /> Die letzte öffentlich verfügbare Version von Java 7 war „Update 80“ vom 14. April 2015, die auch „nicht-kritische“ Fehlerbehebungen enthielt.<ref name="java7downloads" /><ref name="javafreigaben" /> Die „Premium-Unterstützung“ für Version 7 war bis Juli 2019 vorgesehen, die „Erweiterte Unterstützung“ bis Juli 2022.<ref name="javasupportroadmap" />

Version 8[Bearbeiten]

Java 8 erschien am 18. März 2014. Es ist die erste LTS-Version nach dem neuen Support-Schema von Oracle.<ref name="oracle-135779">Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Ehemals im Vorlage:Referrer (nicht mehr online verfügbar);</ref>

Für sie gab es öffentliche und kostenlose Updates bis inkl. Januar 2019.<ref name="jaxenter">Gabriela Motroc: Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. JAXenter, 23. April 2018; ehemals im Vorlage:Referrer (nicht mehr online verfügbar); (Skriptfehler: Ein solches Modul „Multilingual“ ist nicht vorhanden.).@1@2Vorlage:Toter Link/jaxenter.com (Seite nicht mehr abrufbar. Suche im Internet Archive)</ref> Seitdem ist für den Abruf über die Oracle-Webseite eine Registrierung erforderlich, damit kommerzielle Nutzer bis März 2022 auf kostenlose Updates und danach bis Ende 2030 auf kostenpflichtige Updates zugreifen können.<ref name="SE_Support_Roadmap">Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Oracle, 15. Oktober 2024; ehemals im Vorlage:Referrer (nicht mehr online verfügbar); (Skriptfehler: Ein solches Modul „Multilingual“ ist nicht vorhanden.).@1@2Vorlage:Toter Link/www.oracle.com (Seite nicht mehr abrufbar. Suche im Internet Archive)</ref> Parallel dazu lässt sich über Oracles separate Java-Webseite die jeweils aktuelle Version 8 auch ohne Registrierung herunterladen (Stand 28. April 2024).<ref>Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Oracle; ehemals im Vorlage:Referrer (nicht mehr online verfügbar); (Skriptfehler: Ein solches Modul „Multilingual“ ist nicht vorhanden.).@1@2Vorlage:Toter Link/www.java.com (Seite nicht mehr abrufbar. Suche im Internet Archive)</ref>

Mit Java 8 wurden ursprünglich für Java 7 geplante Neuerungen nachgereicht und Synergien eingearbeitet, die sich aus dem Kauf von Java durch Oracle ergaben. Unter anderem wurden folgende Neuerungen umgesetzt:<ref>Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Oracle; ehemals im Vorlage:Referrer (nicht mehr online verfügbar); (Skriptfehler: Ein solches Modul „Multilingual“ ist nicht vorhanden.).@1@2Vorlage:Toter Link/www.oracle.com (Seite nicht mehr abrufbar. Suche im Internet Archive)</ref>

  • Integration von Oracle JRockit-Funktionalitäten wie Verbessertes Contended Locking ins OpenJDK
  • Virtuelle Erweiterungsmethoden und Closures (Projekt Lambda)
  • Durch Projekt Lambda ermöglichte Erweiterungen der Collections-API
  • Neue Date and Time API ähnlich Joda Time
  • Verbesserungen bei der Garbage Collection, Reflection, Collections, Generics und Annotations
  • Weitere kleinere Sprachverbesserungen wie beispielsweise Annotationen für Java-Typen
  • Diverse Verbesserungen hinsichtlich Sicherheit
  • Diverse Leistungsverbesserungen vor allem hinsichtlich Parallelisierung
  • Methodenimplementierung in Interfaces („Default Interface“)<ref name="stackoverflow" />

Version 9[Bearbeiten]

Java 9 ist am 21. September 2017 erschienen.<ref>Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. In: Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Oracle Corporation and/or its affiliates, 7. Juni 2017; ehemals im Vorlage:Referrer (nicht mehr online verfügbar); (Skriptfehler: Ein solches Modul „Multilingual“ ist nicht vorhanden., Projektplanung für JDK 9).@1@2Vorlage:Toter Link/openjdk.java.net (Seite nicht mehr abrufbar. Suche im Internet Archive)</ref> Sie ist eine „Non-LTS“-Version<ref name="oracle-135779" /> und es gibt daher nur Updates bis zum Release der Nachfolgeversion. Java 9 brachte mit „Project Jigsaw“ ein neues Modulsystem, das Java um Module als neues Sprachfeature erweitert. Jigsaw brachte ebenfalls eine grundlegende Strukturänderungen der Java-Plattform mit sich.<ref name="Java 9 Jigsaw">Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Heise-Verlag, 12. März 2016; ehemals im Vorlage:Referrer (nicht mehr online verfügbar);.@1@2Vorlage:Toter Link/www.heise.de (Seite nicht mehr abrufbar. Suche im Internet Archive)</ref><ref name="Java 9 Jigsaw Tutorial">Kristine Schaal, Rüdiger Grammes, Martin Lehmann: Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Informatik Aktuell, 15. Februar 2018; ehemals im Vorlage:Referrer (nicht mehr online verfügbar);.@1@2Vorlage:Toter Link/www.informatik-aktuell.de (Seite nicht mehr abrufbar. Suche im Internet Archive)</ref> Das „Project Kulla“ brachte eine Integration der jshell<ref name="jshell JEP">Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Open JDK, 5. November 2015; ehemals im Vorlage:Referrer (nicht mehr online verfügbar); (Skriptfehler: Ein solches Modul „Multilingual“ ist nicht vorhanden.).@1@2Vorlage:Toter Link/openjdk.java.net (Seite nicht mehr abrufbar. Suche im Internet Archive)</ref> in Java.

Version 10[Bearbeiten]

Java 10 erschien am 20. März 2018 und somit wie im Herbst 2017 angekündigt nur 6 Monate nach Version 9. Sie ist ebenfalls eine „Non-LTS“-Version.<ref name="oracle-135779" />

Version 11[Bearbeiten]

Java 11 wurde am 25. September 2018 als LTS-Version veröffentlicht.<ref name="heise-4173024" /> Für den produktiven Einsatz von Oracle JRE ist seit dieser Version eine kostenpflichtige „Vorlage:Str trim“ erforderlich. Lediglich in Entwicklungs- und Testumgebungen bleibt es kostenfrei nutzbar. Andere Laufzeitumgebungen wie OpenJDK oder Adoptium bieten andere Unterstützungszeiträume.<ref>Hendrik Ebbers, Timo Brandstätter: Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. heise online, 28. August 2018; ehemals im Vorlage:Referrer (nicht mehr online verfügbar);.@1@2Vorlage:Toter Link/www.heise.de (Seite nicht mehr abrufbar. Suche im Internet Archive)</ref>

Version 12[Bearbeiten]

Java 12 wurde am 19. März 2019 veröffentlicht.<ref>Vorlage:Cite book/Name: [Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden.] In: Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Skriptfehler: Ein solches Modul „TemplUtl“ ist nicht vorhanden. , archiviert vom Vorlage:Referrer (nicht mehr online verfügbar) am Vorlage:Cite book/URL; (Skriptfehler: Ein solches Modul „Multilingual“ ist nicht vorhanden.).Vorlage:Cite book/URLVorlage:Cite book/MeldungVorlage:Cite book/Meldung2Vorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/Meldung</ref>

Version 13[Bearbeiten]

Java 13 wurde am 17. September 2019 veröffentlicht.<ref>Vorlage:Cite book/Name: [Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden.] In: Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Skriptfehler: Ein solches Modul „TemplUtl“ ist nicht vorhanden. , archiviert vom Vorlage:Referrer (nicht mehr online verfügbar) am Vorlage:Cite book/URL; (Skriptfehler: Ein solches Modul „Multilingual“ ist nicht vorhanden.).Vorlage:Cite book/URLVorlage:Cite book/MeldungVorlage:Cite book/Meldung2Vorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/Meldung</ref>

Version 14[Bearbeiten]

Java 14 wurde am 17. März 2020 veröffentlicht.<ref>Vorlage:Cite book/Name: [Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden.] In: Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Skriptfehler: Ein solches Modul „TemplUtl“ ist nicht vorhanden. , archiviert vom Vorlage:Referrer (nicht mehr online verfügbar) am Vorlage:Cite book/URL; (Skriptfehler: Ein solches Modul „Multilingual“ ist nicht vorhanden.).Vorlage:Cite book/URLVorlage:Cite book/MeldungVorlage:Cite book/Meldung2Vorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/Meldung</ref>

Version 15[Bearbeiten]

Java 15 wurde am 15. September 2020 veröffentlicht.<ref>Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Ehemals im Vorlage:Referrer (nicht mehr online verfügbar);</ref>

Version 16[Bearbeiten]

Java 16 wurde am 16. März 2021 veröffentlicht.<ref>Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Ehemals im Vorlage:Referrer (nicht mehr online verfügbar);</ref>

Version 17[Bearbeiten]

Java 17 ist eine LTS-Version und wurde am 14. September 2021 veröffentlicht.<ref>openjdk.java.net</ref>

Version 18[Bearbeiten]

Java 18 wurde am 22. März 2022 veröffentlicht.<ref>openjdk.java.net</ref>

Version 19[Bearbeiten]

Java 19 wurde am 20. September 2022 veröffentlicht.<ref>Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Ehemals im Vorlage:Referrer (nicht mehr online verfügbar);</ref>

Version 20[Bearbeiten]

Java 20 wurde am 21. März 2023 veröffentlicht.<ref>Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Ehemals im Vorlage:Referrer (nicht mehr online verfügbar); (Skriptfehler: Ein solches Modul „Multilingual“ ist nicht vorhanden.).@1@2Vorlage:Toter Link/openjdk.org (Seite nicht mehr abrufbar. Suche im Internet Archive)</ref>

Version 21[Bearbeiten]

Java 21 ist eine LTS-Version und wurde am 19. September 2023 veröffentlicht.<ref>Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Ehemals im Vorlage:Referrer (nicht mehr online verfügbar); (Skriptfehler: Ein solches Modul „Multilingual“ ist nicht vorhanden.).@1@2Vorlage:Toter Link/openjdk.org (Seite nicht mehr abrufbar. Suche im Internet Archive)</ref>

Version 22[Bearbeiten]

Java 22 wurde am 19. März 2024 veröffentlicht.<ref>Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. In: Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Oracle, 19. März 2024; ehemals im Vorlage:Referrer (nicht mehr online verfügbar); (Skriptfehler: Ein solches Modul „Multilingual“ ist nicht vorhanden.).@1@2Vorlage:Toter Link/www.oracle.com (Seite nicht mehr abrufbar. Suche im Internet Archive)</ref>

Version 25[Bearbeiten]

Java 25 ist eine LTS-Edition und wurde am 16. September 2025 veröffentlicht. Dass die Versionsnummer zur Jahreszahl passt ist eher ein Zufall und kommt daher, dass alle sechs Monate eine neue Java Version veröffentlicht wird.<ref>Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Heise Online, 16. September 2025; ehemals im Vorlage:Referrer (nicht mehr online verfügbar);.@1@2Vorlage:Toter Link/www.heise.de (Seite nicht mehr abrufbar. Suche im Internet Archive)</ref>

Lizenz[Bearbeiten]

Am 13. November 2006 gab Sun bekannt, dass bis Ende des zweiten Quartals 2007 die komplette Java-Technik unter den Lizenzbestimmungen der GPL Version 2 veröffentlicht werden soll.<ref><templatestyles src="Webarchiv/styles.css" />Skriptfehler: Ein solches Modul „WLink“ ist nicht vorhanden. (Memento vom 26. August 2007 im Internet Archive)</ref><ref>Mike Loukides: [Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden.] November 2006, archiviert vom Vorlage:Referrer (nicht mehr online verfügbar) am 6. Oktober 2014;.</ref> Am 8. Mai 2007 teilte man mit, dass dies für den Großteil der Technik geschehen sei.<ref name="java-gpl-bulk"><templatestyles src="Webarchiv/styles.css" />Skriptfehler: Ein solches Modul „WLink“ ist nicht vorhanden. (Memento vom 14. April 2008 im Internet Archive)</ref>

Ein Problem für Entwickler freier Software bestand bis dahin darin, dass Java zwar kostenlos war, jedoch nicht die Richtlinien für freie Software erfüllte. Probleme entstanden in diesem Rahmen vor allem dann, wenn beim Erstellen von Programmen „unfreie“ Klassen von Sun verwendet wurden, die freie Java-Compiler oder Java-Laufzeitumgebungen nicht verwenden können. Anwender von freien JVMs waren in diesen Fällen gezwungen, auf die JVM von Sun zurückzugreifen. In diesem Zusammenhang wurde auch von der „Java-Falle“ (Java Trap<ref>Richard Stallman: Frei, aber gefesselt – die Java-Falle. 12. April 2004</ref>) gesprochen.

Engagierte Entwickler haben darauf reagiert und eine beachtliche Menge an freier Software zur Interpretation, Kompilierung und Ausführung von Java-Programmen entwickelt, wie z. B. GNU Classpath, GNU Compiler for Java, Kaffe, Apache Harmony oder IcedTea.

Jedoch wurden die Lizenzbedingungen für Oracles Java Compatibility Kit (JCK) von der Apache Software Foundation<ref>Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. In: Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Apache Software Foundation, 9. Dezember 2010; ehemals im Vorlage:Referrer (nicht mehr online verfügbar);.@1@2Vorlage:Toter Link/blogs.apache.org (Seite nicht mehr abrufbar. Suche im Internet Archive)</ref> und der Linux Standard Base Arbeitsgruppe als bewusste Verhinderung von alternativen Implementierungen wahrgenommen, was u. a. zum Ausschluss von Java aus dem aktuellen LSB-Standard 4.1 führte.<ref>Vorlage:Cite book/Name: [Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden.] heise.de, Skriptfehler: Ein solches Modul „TemplUtl“ ist nicht vorhanden. , archiviert vom Vorlage:Referrer (nicht mehr online verfügbar) am Vorlage:Cite book/URL;: Lua-Fehler in Modul:Text, Zeile 51: attempt to index field 'wikibase' (a nil value)Vorlage:Cite book/URLVorlage:Cite book/MeldungVorlage:Cite book/Meldung2Vorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/Meldung</ref>

Anwendungen[Bearbeiten]

Java findet seinen Einsatz zum Beispiel in folgenden Bereichen:

Kritik[Bearbeiten]

Java bietet vor allem auf Grund seiner Ausführung in einer virtuellen Maschine einige Sicherheitsvorteile gegenüber direkt ausgeführten Programmiersprachen. Ein Applet einer Webseite unterliegt beispielsweise sicherheitsbedingten Einschränkungen durch die virtuelle Maschine, dasselbe gilt analog für Java-Applikationen. All diese laufen in einer virtuellen Maschine und dürfen nicht frei auf beliebige Ressourcen zugreifen. Direkt ausgeführte Programmiersprachen (ohne virtuelle Maschine) bieten diese Sicherheitsvorkehrungen gar nicht und sind somit im Vergleich zu Java maximal unsicher.

Existieren jedoch auf Grund von Fehlern in der virtuellen Maschine oder in der Klassenbibliothek Schwachstellen in diesen Sicherheitstechniken, so kann ein bösartiges Applet oder eine bösartige Applikation diese Schwachstellen ausnutzen und unter Umständen auf Ressourcen zugreifen, auf die sie im Normalfall keine Zugriffsrechte hätte.

Java war 2012 bis 2013 mehrfach wegen derartiger Fehler in den Schlagzeilen.<ref>Vorlage:Cite book/Name: [Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden.] Heise Security, Skriptfehler: Ein solches Modul „TemplUtl“ ist nicht vorhanden. , archiviert vom Vorlage:Referrer (nicht mehr online verfügbar) am Vorlage:Cite book/URL;.Vorlage:Cite book/URLVorlage:Cite book/MeldungVorlage:Cite book/Meldung2Vorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/Meldung</ref><ref>Vorlage:Cite book/Name: [Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden.] Heise Security, Skriptfehler: Ein solches Modul „TemplUtl“ ist nicht vorhanden. , archiviert vom Vorlage:Referrer (nicht mehr online verfügbar) am Vorlage:Cite book/URL;.Vorlage:Cite book/URLVorlage:Cite book/MeldungVorlage:Cite book/Meldung2Vorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/Meldung</ref> Im August 2012 tauchte beispielsweise ein öffentlich verfügbarer Exploit im Internet<ref>Vorlage:Cite book/Name: [Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden.] Skriptfehler: Ein solches Modul „TemplUtl“ ist nicht vorhanden. , archiviert vom Vorlage:Referrer (nicht mehr online verfügbar) am Vorlage:Cite book/URL; (Skriptfehler: Ein solches Modul „Multilingual“ ist nicht vorhanden.).Vorlage:Cite book/URLVorlage:Cite book/MeldungVorlage:Cite book/Meldung2Vorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/Meldung</ref> auf, der sämtliche Sandboxing- und sonstige Sicherheitsverfahren von Java umgeht, indem er sie einfach abschaltet.<ref>Vorlage:Cite book/Name: [Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden.] Heise Security, Skriptfehler: Ein solches Modul „TemplUtl“ ist nicht vorhanden. , archiviert vom Vorlage:Referrer (nicht mehr online verfügbar) am Vorlage:Cite book/URL;.Vorlage:Cite book/URLVorlage:Cite book/MeldungVorlage:Cite book/Meldung2Vorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/Meldung</ref> Ein paar Tage später war dieser Exploit (CVE: 2012-4681)<ref>Vorlage:CommonVulnerabExpos</ref> in zahlreichen Exploit-Frameworks integriert, darunter auch in Metasploit und Blackhole. Oracle veröffentlichte daraufhin ein Notfall-Update, Experten fanden aber auch in den gepatchten Java-Versionen Sicherheitslücken.

Am 10. Januar 2013 gab das renommierte Computermagazin c’t aus Sicherheitsgründen eine Empfehlung zur Deinstallation des Java Plug-ins heraus, beim Einsatz des Internet Explorers sogar zur vollständigen Deinstallation von Java.<ref>Vorlage:Cite book/Name: [Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden.] In: Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Skriptfehler: Ein solches Modul „TemplUtl“ ist nicht vorhanden. , archiviert vom Vorlage:Referrer (nicht mehr online verfügbar) am Vorlage:Cite book/URL;.Vorlage:Cite book/URLVorlage:Cite book/MeldungVorlage:Cite book/Meldung2Vorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/Meldung</ref> Am 11. Januar 2013 schloss sich das BSI dieser Empfehlung an.<ref>Vorlage:Cite book/Name: [Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden.] Bundesamt für Sicherheit in der Informationstechnik (BSI), Skriptfehler: Ein solches Modul „TemplUtl“ ist nicht vorhanden. , archiviert vom Vorlage:Referrer (nicht mehr online verfügbar) am Vorlage:Cite book/URL;.Vorlage:Cite book/URLVorlage:Cite book/MeldungVorlage:Cite book/Meldung2Vorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/Meldung</ref>

Mit den außerplanmäßigen bzw. vorgezogenen Java-Updates 7u11 bis 7u13 wurden gemäß Oracle die Sicherheitsprobleme gelöst.<ref>Vorlage:Cite book/Name: [Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden.] Skriptfehler: Ein solches Modul „TemplUtl“ ist nicht vorhanden. , archiviert vom Vorlage:Referrer (nicht mehr online verfügbar) am Vorlage:Cite book/URL; (Skriptfehler: Ein solches Modul „Multilingual“ ist nicht vorhanden.).Vorlage:Cite book/URLVorlage:Cite book/MeldungVorlage:Cite book/Meldung2Vorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/MeldungVorlage:Cite book/Meldung</ref> Das BSI gab daraufhin Entwarnung für die Verwendung von Java.<ref>[Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden.] Update des Herstellers liegt vor, BSI empfiehlt Internetnutzern Einspielung des UpdatesSkriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. Bundesamt für Sicherheit in der Informationstechnik (BSI), 14. Januar 2013, archiviert vom Vorlage:Referrer (nicht mehr online verfügbar) am 7. Juli 2013;: Lua-Fehler in Modul:Text, Zeile 51: attempt to index field 'wikibase' (a nil value)Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden.</ref>

Weblinks[Bearbeiten]

Einzelnachweise[Bearbeiten]

<references responsive> <ref name="java7downloads"> Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. oracle.com, April 2015; ehemals im Vorlage:Referrer (nicht mehr online verfügbar); (Skriptfehler: Ein solches Modul „Multilingual“ ist nicht vorhanden.).@1@2Vorlage:Toter Link/www.oracle.com (Seite nicht mehr abrufbar. Suche im Internet Archive) </ref> <ref name="javafreigaben"> Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. (Versionen 7 und 8)Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. java.com, 18. Juli 2017; ehemals im Vorlage:Referrer (nicht mehr online verfügbar);.@1@2Vorlage:Toter Link/java.com (Seite nicht mehr abrufbar. Suche im Internet Archive) </ref> <ref name="javasupportroadmap"> Skriptfehler: Ein solches Modul „Vorlage:Internetquelle“ ist nicht vorhanden. oracle.com, 22. April 2015; ehemals im Vorlage:Referrer (nicht mehr online verfügbar); (Skriptfehler: Ein solches Modul „Multilingual“ ist nicht vorhanden.).@1@2Vorlage:Toter Link/www.oracle.com (Seite nicht mehr abrufbar. Suche im Internet Archive) </ref> <ref name="stackoverflow"> How does Java 8' new default interface model works bei stackoverflow.com </ref> </references>