mini|hochkant|Java-LogoJava Technologies
Die Java-Technik () 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: die Programmiersprache Java, um Programme zu formulieren das Java Development Kit – ein Entwicklungswerkzeug, das grundlegende Teile wie einen Übersetzer und Bibliotheken enthält die Java-Laufzeitumgebung – eine standardisierte Software-Plattform, um die entwickelten Programme ausführen zu können.
Ziel 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 Die Java-Technik besteht aus den folgenden Teilen:
+ Aufbau der Java-Technik Programmier-sprache Java Quelltext (.java) JDK EntwicklungswerkzeugeJava-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
Java ist eine objektorientierte Programmiersprache und eingetragenes Warenzeichen der Firma Oracle. Der Entwurf der Programmiersprache Java strebte im Wesentlichen fünf Ziele an:The Java Language Environment – 1.2 Design Goals of the JavaTM Programming Language, James Gosling und Henry McGilton, Mai 1996Java Language Overview, 1995 Sun Whitepaper
Sie soll eine einfache objektorientierte, verteilte und vertraute Programmiersprache sein. Sie soll robust und sicher sein. Sie soll architekturneutral und portabel sein. Sie soll sehr leistungsfähig sein. Sie soll interpretierbar, parallelisierbar und dynamisch gebunden sein.
Entwicklungswerkzeuge für Java-Programme
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)
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 mini|100px|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 (), 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.
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.
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.
Versionen
„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 Version Codename Veröffentlichung Ende des kostenlosen Supports durch Oracle längerer kostenloser Support durch Eclipse Adoptium Oak 23. Januar 1996 Sparkler 12. September 1997 Pumpkin 3. Dezember 1997 Abigail 24. April 1998 Brutus 28. September 1998 Chelsea 8. April 1999 Playground 4. Dezember 1998 (keiner) 30. März 1999 Cricket 8. Juli 1999 Kestrel 8. Mai 2000 Dezember 2006 Ladybird 17. Mai 2001 Merlin 13. Februar 2002 Oktober 2008 Hopper 16. September 2002 Mantis 26. Juni 2003 Tiger 29. September 2004Oktober 2009 (Mustang) – Verzicht auf Codenamen ab JSE 6.0, Ray Gans’s Blog, 15. August 2006; abgerufen am 12. Oktober 2009. 11. Dezember 2006Februar 2013 (Dolphin) 28. Juli 2011Java 7 Releases nach Datum – Seite bei Java.com. Abgerufen am 20. November 2013.April 2015 – 18. März 2014März 2022November 2026 – 27. Juli 2017März 2018 – 20. März 2018September 2018 – 25. September 2018September 2023Oktober 2027 – 19. März 2019September 2019 – 17. September 2019März 2020 – 17. März 2020September 2020 – 15. September 2020März 2021 – 16. März 2021September 2021 – September 2026Oktober 2027 – September 2022 – März 2023 – September 2023 – September 2028Dezember 2029 – September 2024 – März 2025 – September 2025 – September 2030 –
+Versionen und GrößenVersionPaketeKlassen, Enums und InterfacesModule 8 212 23 504 59 1520 76 1842 135 2991 166 3279 203 3793 209 4024 217 4240 315 600578 314 600277 235cd jdk11/src; find -name package-info.java | wc --lines 441059/72cd jdk11/src; find -name module-info.java | wc --lines
Version 1 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 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: Klassen für die Internationalisierung (so genannte „Ressourcenbündel“) Java-Komponenten, die Java Beans Das Dateiformat JAR für die Paketierung ganzer Bibliotheken oder Anwendungen als Java-Archive Klassen für numerisches Rechnen (BigInteger und BigDecimal) Ein Protokoll für verteilte Programme, die Remote Method Invocation (RMI) Objektserialisierung für die persistente Speicherung von Objekten, z. B. in Dateien JDBC für den Zugriff auf relationale Datenbanken Sicherheitsfunktionen, z. B. zum Signieren von JAR-Dateien und Applets
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 Java 2 (JDK 1.2) erschien im Jahr 1998. 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,news.cnet.com ab Java 1.3 wurde HotSpot als alleinige JVM von Sun angeboten.sun.com
Erneut wurde die Standardbibliothek erweitert: