Zum Inhalt springen
L

Wikipedia · einfach zusammengefasst · Stand

Java-Technologie

Programme für die Java-Plattform werden in der Regel mit Hilfe der Programmiersprache Java erstellt. Die Verwendung anderer Programmiersprachen ist möglich, z.

Inhalt6 Abschnitte
  1. 1. Grundidee und Funktionsweise
  2. 2. Sprache, Entwicklungswerkzeuge und Laufzeitumgebung
  3. 3. Entwicklung und wichtige Versionsschritte
  4. 4. Veröffentlichungs- und Supportmodell
  5. 5. Einsatzgebiete und Lizenzierung
  6. 6. Sicherheit und Kritik

Grundidee und Funktionsweise

Die Java-Technik ist eine ursprünglich von Sun Microsystems, heute Teil der Oracle-Gruppe, entwickelte Sammlung von Spezifikationen. Sie umfasst die objektorientierte Programmiersprache Java, Entwicklungswerkzeuge und standardisierte Laufzeitumgebungen. Ihr wichtigstes Ziel ist Plattformunabhängigkeit: Dasselbe Programm soll auf unterschiedlichen Computersystemen laufen können.

Dazu wird der Java-Quellcode aus Dateien mit der Endung .java zunächst durch einen Compiler in Java-Bytecode übersetzt. Dieser Zwischencode liegt typischerweise in .class- oder .jar-Dateien vor. Auf dem Zielsystem führt die Java-Laufzeitumgebung den Bytecode aus und übersetzt ihn in die passende Maschinensprache. Zuständig dafür ist die Java Virtual Machine (JVM), häufig unterstützt durch Just-in-time-Kompilierung, also die Übersetzung benötigter Programmteile während der Ausführung.

Auf dem Zielsystem muss eine geeignete Java-Laufzeitumgebung vorhanden sein. Solche Umgebungen existieren unter anderem für Microsoft Windows, Linux, Solaris, Mac OS X und AIX sowie für eingebettete Systeme, Mobiltelefone, PDAs, Smartcards, Autos und Fernsehgeräte. Die Plattformunabhängigkeit endet dort, wo keine passende JVM verfügbar ist.

Sprache, Entwicklungswerkzeuge und Laufzeitumgebung

Die Programmiersprache Java wurde mit fünf wesentlichen Zielen entworfen: Sie sollte einfach, objektorientiert, verteilt und vertraut, außerdem robust und sicher, architekturneutral und portabel sowie leistungsfähig sein. Darüber hinaus sollte sie interpretierbar, parallelisierbar und dynamisch gebunden sein. Java ist ein eingetragenes Warenzeichen von Oracle.

Das Java Development Kit (JDK) enthält die grundlegenden Entwicklungswerkzeuge. Dazu gehören Compiler zur Übersetzung des Quellcodes in Bytecode, Programmbibliotheken, Dokumentationswerkzeuge und Werkzeuge zum Testen von Programmen. Anwendungen für die Java-Plattform werden meistens in Java entwickelt; auch andere Sprachen wie Nice oder Groovy können verwendet werden.

Die Java Runtime Environment (JRE) ist die Softwareplattform zur Ausführung der Programme. Sie definiert maschinenunabhängige Anwendungsprogrammierschnittstellen, kurz APIs, und enthält die JVM. Die APIs stellen einheitliche Funktionen bereit, auf die Programme zugreifen können.

Es gibt verschiedene Java-Plattformen:

  • Java Card ist ein reduzierter Standard für Java-Card-Applets auf Chipkarten.
  • Java Platform, Micro Edition (Java ME) richtet sich an eingebettete Endgeräte wie Mobiltelefone und PDAs.
  • Java Platform, Standard Edition (Java SE) bietet APIs für den allgemeinen Einsatz auf PCs, Servern und ähnlichen Geräten. Sie bildet die Grundlage für weitere Java-Techniken.
  • Jakarta EE ergänzt Java SE um APIs für transaktionsbasierte, mehrschichtige Unternehmens- und Webanwendungen.

Entwicklung und wichtige Versionsschritte

Java entstand von Frühjahr 1991 bis Sommer 1992 im „Green Project“ bei Sun Microsystems. Die Urversion hieß Oak und wurde innerhalb von 18 Monaten von Patrick Naughton, Mike Sheridan, James Gosling, Bill Joy und neun weiteren Entwicklern geschaffen; Hauptentwickler war James Gosling. Das Projekt sollte nicht nur eine Sprache, sondern eine vollständige Umgebung einschließlich einer virtuellen CPU für unterschiedliche Geräte hervorbringen. Eine frühe Demonstration war 1992 die Touchscreen-Gerätesteuerung *7 („Star Seven“). Später entstand der um Java erweiterte Browser WebRunner, der anschließend HotJava hieß.

Im März 1995 wurde die Alphaversion 1.0a2 des Quellcodes veröffentlicht; am 23. Mai 1995 wurde Java auf der SunWorld-Konferenz vorgestellt. Die Integration in Netscape Navigator verhalf der Technik zum Durchbruch. Oracle übernahm Sun Microsystems im Januar 2010 und kündigte eine Weiterentwicklung zusammen mit dem Java Community Process in Richtung freier, quelloffener Software an.

JDK 1.0 erschien am 23. Januar 1996. Es enthielt unter anderem Pakete für grundlegende Klassen, Ein- und Ausgabe, Datenstrukturen, Netzwerke, grafische Oberflächen und Applets. Java 1.1 ergänzte 1997 innere Klassen, Listener zur Ereignisbehandlung, Java Beans, JAR-Archive, RMI für verteilte Programme, Objektserialisierung, JDBC für Datenbanken und weitere Sicherheitsfunktionen.

Java 2 beziehungsweise JDK 1.2 erschien 1998. Ein Just-in-time-Compiler erhöhte die Ausführungsgeschwindigkeit; hinzu kamen unter anderem Collections, Swing, Java 2D, Drag and Drop und schwache Referenzen. Ebenfalls 1998 wurde der Java Community Process (JCP) eingeführt. Vorgeschlagene Spezifikationsänderungen werden seitdem als Java Specification Request (JSR) geprüft. Java 1.3 führte 2000 HotSpot als JVM ein: Häufig verwendeter Bytecode wird zur Laufzeit in nativen Maschinencode übersetzt. Java 1.4 ergänzte 2002 Assertions und weitere APIs.

Java 5.0, intern Version 1.5, erschien am 30. September 2004. Wichtige Neuerungen waren Generics, eine vereinfachte Iteration über Collections, Maps und Arrays, Autoboxing und Unboxing, Annotationen, Aufzählungstypen, variable Argumentlisten, statische Importe und Hilfsklassen für nebenläufige Programmierung. Java 6 folgte am 11. Dezember 2006 und verbesserte Diagnose, Überwachung, Desktopdarstellung und die Zusammenarbeit mit Skriptsprachen; außerdem wurde die auf Apache Derby beruhende Datenbank Java DB integriert. Java 7 erschien am 28. Juli 2011 mit der Dateisystem-API NIO.2, erweiterten Netzwerkprotokollen, Unicode 6.0, besserer Unterstützung dynamischer Sprachen und kleineren Sprachverbesserungen wie Zeichenketten in switch-Anweisungen.

Java 8 erschien am 18. März 2014. Zu seinen Neuerungen gehören Lambda-Ausdrücke und damit verbundene Erweiterungen der Collections-API, eine neue Date-and-Time-API, Default-Methoden in Interfaces sowie Verbesserungen bei Sicherheit, Parallelisierung, Garbage Collection, Generics und Annotationen. Java 9 erschien am 21. September 2017 und führte mit „Project Jigsaw“ ein Modulsystem sowie mit „Project Kulla“ die jshell ein.

Veröffentlichungs- und Supportmodell

Seit Java 9 erscheinen neue Versionen in kurzen Abständen. Java 10 wurde am 20. März 2018 veröffentlicht, nur sechs Monate nach Java 9. „LTS“ bedeutet Long Term Support und bezeichnet eine besonders lange unterstützte Version; andere Versionen können neue Sprachelemente enthalten, deren Erfolg noch geprüft wird.

Java 11 erschien als LTS-Version am 25. September 2018. Seit dieser Version ist die Oracle JRE für den produktiven Einsatz nur mit einer kostenpflichtigen „Java SE Subscription“ nutzbar; Entwicklungs- und Testumgebungen bleiben kostenfrei. Laufzeitumgebungen wie OpenJDK oder Adoptium haben andere Unterstützungszeiträume.

Es folgten Java 12 am 19. März 2019, Java 13 am 17. September 2019, Java 14 am 17. März 2020, Java 15 am 15. September 2020 und Java 16 am 16. März 2021. Java 17 ist eine LTS-Version und erschien am 14. September 2021. Danach kamen Java 18 am 22. März 2022, Java 19 am 20. September 2022 und Java 20 am 21. März 2023. Java 21 erschien als LTS-Version am 19. September 2023, Java 22 am 19. März 2024. Die im Artikel als aktuell bezeichnete Version Java 25 ist eine LTS-Edition und wurde am 16. September 2025 veröffentlicht. Die Übereinstimmung von Versionsnummer und Jahreszahl gilt als Zufall und ergibt sich aus dem halbjährlichen Veröffentlichungsrhythmus.

Einsatzgebiete und Lizenzierung

Java wird in unterschiedlichen Bereichen eingesetzt:

  • als serverseitiger Dienst in Inter- und Intranets, beispielsweise mit Application Servern wie Apache Tomcat, JBoss oder GlassFish;
  • als clientseitige Anwendung, früher etwa als Java-Applet oder Rich Internet Application mit JavaFX;
  • für plattformunabhängige Desktopanwendungen, darunter die Entwicklungsplattformen NetBeans und Eclipse;
  • auf Chipkarten als Java Cards;
  • auf Mobiltelefonen mit angepassten Systemen wie Java ME oder Dalvik;
  • als Embedded Java in Steuergeräten für Maschinen, Aufzüge, Haushaltsgeräte und Unterhaltungselektronik;
  • mit Java Real Time in Echtzeitsystemen, etwa für Verkehrssteuerungsanlagen.

Sun kündigte am 13. November 2006 an, die vollständige Java-Technik bis Ende des zweiten Quartals 2007 unter der GPL Version 2 zu veröffentlichen. Am 8. Mai 2007 wurde mitgeteilt, dass dies für den Großteil der Technik geschehen sei. Zuvor war Java zwar kostenlos, erfüllte aber nicht vollständig die Anforderungen an freie Software. Programme konnten von nicht freien Sun-Klassen abhängig sein, sodass Nutzer freier JVMs auf Suns JVM zurückgreifen mussten. Dieses Problem wurde als „Java-Falle“ bezeichnet. Freie Projekte wie GNU Classpath, GNU Compiler for Java, Kaffe, Apache Harmony und IcedTea entwickelten Alternativen zur Interpretation, Kompilierung und Ausführung von Java-Programmen. Die Apache Software Foundation und die Linux Standard Base Arbeitsgruppe sahen in den Lizenzbedingungen für Oracles Java Compatibility Kit jedoch eine Behinderung alternativer Implementierungen; Java wurde deshalb aus dem LSB-Standard 4.1 ausgeschlossen.

Sicherheit und Kritik

Die Ausführung in einer virtuellen Maschine bietet Sicherheitsmechanismen: Java-Applets und Java-Anwendungen können durch die JVM beim Zugriff auf Ressourcen eingeschränkt werden. Diese abgeschirmte Umgebung wird als Sandbox bezeichnet. Sicherheitslücken in der JVM oder Klassenbibliothek können diese Schutzwirkung jedoch aufheben. Bösartige Programme könnten dann auf Ressourcen zugreifen, für die sie normalerweise keine Berechtigung besitzen.

2012 und 2013 geriet Java wegen solcher Schwachstellen mehrfach in die Kritik. Im August 2012 erschien ein öffentlich verfügbarer Exploit, der die Sandbox- und Sicherheitsverfahren abschalten konnte. Die als CVE-2012-4681 geführte Lücke wurde in Exploit-Frameworks wie Metasploit und Blackhole aufgenommen. Oracle veröffentlichte ein Notfall-Update, doch Experten fanden auch in den aktualisierten Versionen weitere Sicherheitslücken.

Am 10. Januar 2013 empfahl das Computermagazin c’t, das Java-Plug-in zu deinstallieren; beim Internet Explorer wurde sogar zur vollständigen Entfernung von Java geraten. Das Bundesamt für Sicherheit in der Informationstechnik schloss sich dieser Empfehlung am 11. Januar 2013 an. Nach den außerplanmäßigen beziehungsweise vorgezogenen Updates 7u11 bis 7u13 erklärte Oracle die Sicherheitsprobleme für gelöst; anschließend gab das BSI Entwarnung für die Nutzung von Java.

Weiterlesen

Java (Programmiersprache) Java ist eine objektorientierte Programmiersprache und eine eingetragene Marke des Unternehmens Sun Microsystems, welches 2010 von Oracle übernommen wurde. Compiler Ein Übersetzer zur Übertragung von Assembler-Quellprogrammen in Maschinensprache wird als Assembler oder Assemblierer bezeichnet. Geschichte. Bearbeiten. Bytecode Bytecode ist in der Informatik die Bezeichnung für eine Sammlung von Befehlen, also die Maschinensprache für eine virtuelle Maschine. Maschinensprache Mit einem Assembler: Assemblersprachen formulieren die Prozessorbefehle des Maschinencodes als Mnemonics in einer einfachen Syntax. Dieser Quelltext wird … Betriebssystem Betriebssysteme bestehen in der Regel aus einem Kernel (deutsch: Kern), der die Hardware des Computers verwaltet, sowie speziellen Programmen, die beim Start … Microsoft Windows Microsoft Windows (englische Aussprache [ˈmaɪ.kɹoʊ.sɒft ˈwɪn.doʊz]) bzw. Windows ist eine Reihe proprietärer grafischer Betriebssystemfamilien von Microsoft … Quelltext Quelltext, auch Quellcode (englisch source code) oder unscharf Programmcode genannt, ist in der Informatik der für Menschen lesbare, in einer … Objektorientierte Programmierung Die objektorientierte Programmierung (kurz OOP) ist ein auf dem Konzept der Objektorientierung basierendes Programmierparadigma. Die Grundidee besteht darin … Rechnernetz Ein Rechnernetz, Computernetz oder Computernetzwerk ist ein Zusammenschluss verschiedener technischer, primär selbstständiger elektronischer Systeme … Programmiersprache Bei deklarativen Programmiersprachen ist der Ausführungsalgorithmus schon vorab festgelegt und wird nicht im Quelltext ausformuliert/beschrieben, sondern es … Sicherheit Die kollektive Sicherheit bedeutet in Konfliktsituationen, dass man gemeinsam Maßnahmen entwickelt, um die Sicherheit für sämtliche Vertragspartner zu … Rechnerarchitektur Zu den bekanntesten Architekturen für Computer bzw. deren zentralen Recheneinheiten, oder Prozessoren, zählen die Harvard-Architektur und die Von-Neumann- …