[[Inhaltsverzeichnis()]] [[Bild(./java_logo.png, 64, align=left)]] [wikipedia:Java_(Programmiersprache):Java] ist eine plattformunabhängige Programmiersprache. Anwendungen, die in Java geschrieben wurden, können auf allen Plattformen genutzt werden, auf denen es Java gibt. Java wird in verschiedenen Varianten (von verschiedenen Unternehmen und Gruppen) und für viele Betriebssysteme angeboten. Der größte Vorteil ist daher die Unabhängigkeit vom Betriebssystem, den nicht nur Entwickler schätzen. Anwendungen, die auf Java basieren, sind in dieser [http://wiki.ubuntuusers.de/Wiki/Tags?tag=Java Liste] zu finden. = Installation = Die Installation von Java wird in einem eigenen Artikel behandelt: [:Java/Installation:]. Bevor man diesen Artikel aufruft, sollte man sich aber mit den unten aufgeführten [#Begriffe Begriffen] und [#Versionen-und-Versionsnummern Versionen] vertraut machen. = Tipps = Weitere Hinweise zu Java wie z.B. zum Einstellen der zu verwendenden Java-Version und andere Problemlösungen sind ebenfalls in einem separaten Artikel [:Java/Tipps:] zu finden. = Geschichte = Java wurde von dem Unternehmen [wikipedia:Sun_Microsystems:Sun Microsystems] entwickelt und vertrieben. Es stand ursprünglich unter einer proprietären Lizenz: der Quellcode war zwar immer einsehbar, es durften jedoch keinerlei Änderungen daran vorgenommen werden. Außerdem gab es in den ersten Monaten keine Java-Version, die unter Linux lauffähig war. Das Unternehmen [wikipedia:Blackdown:] entwickelte daher eine Version von Java, die von Linux-Anwendern auf verschiedenen [wikipedia:Plattform_(Computer):Plattformen] genutzt werden konnte. Später benutzte Sun unter anderem die Blackdown-Änderungen, um seinerseits eine Linux-Variante von Java zu erstellen. Diese ist allerdings bis heute nur auf der PC-Plattform lauffähig. Neben diesen beiden Varianten wurde vom [wikipedia:GNU-Projekt:] "GNU Classpath" als freie Implementierung der Standardklassenbibliotheken von Java geschaffen. Außerdem wurde der GNU Compiler für Java entwickelt. Diese Entwicklungen werden seither von vielen Open-Source-Anwendern gegenüber den SUN-Varianten bevorzugt, da sie unter der GPL stehen. Im November 2006 gab Sun jedoch bekannt, sein "Original-Java" zukünftig ebenfalls unter der GPL [wikipedia:Java_(Technik):zu veröffentlichen]. 2010 wurde die Firma Sun durch [wikipedia:Oracle:] aufgekauft. = Begriffe = == JRE == Für die Ausführung von Java-Programmen ist ein JRE notwendig. Mit JRE bezeichnet man das [wikipedia:Java_Runtime_Environment:Java Runtime Environment], die Laufzeitumgebung. Ein JRE gibt es von Sun, Blackdown und dem GNU-Projekt. Für Entwickler, die selbst Java-Programme kompilieren wollen, ist diese Version nicht ausreichend – für Endanwender schon. == JDK/SDK == JDK ist die Abkürzung von [wikipedia:Java_Development_Kit:Java Development Kit]. Dieses Entwicklungswerkzeug für Java wird benötigt, um selbst Java-Programme schreiben und kompilieren zu können. Manchmal wird das JDK auch als [wikipedia:Software_Development_Kit:Software Development Kit] bezeichnet; ein Begriff, der auch für die Entwicklungswerkzeuge anderer Sprachen benutzt wird. Ein JDK bzw. SDK für Java gibt es ebenfalls von Sun, Blackdown und als freie Version. [[Anker(JVM)]] == JVM == JVM ist die Abkürzung für [wikipedia:Java_Virtual_Machine:Java Virtual Machine]. Die JVM ist der Teil der JRE, der für die Ausführung des Bytecodes eines kompilierten Programms verantwortlich ist. JVMs für Linux werden von Sun/Oracle und Blackdown angeboten. == J2ME == [http://java.sun.com/javame/downloads/sdk30.jsp Java ME] {en}, früher auch als J2ME (Java 2 Platform, Micro Edition (J2ME) Wireless Toolkit) bekannt, wird speziell für die Entwicklung von Software für Mobiltelefone verwendet. Es muss manuell unter [http://java.sun.com/products/sjwtoolkit J2ME] {en} heruntergeladen und installiert werden. == Java Browser-Plugin == Ein Java-Plugin für Webbrowser (z.B. [:Firefox:]) ermöglicht die Nutzung von Java-Applets im Internet, die inzwischen aber nur noch selten zu finden sind. Darüber hinaus ist dieses Plugin eine ständige Quelle von Sicherheitslücken. Wer darauf verzichten kann, sollte das Plugin im Browser deaktivieren (oder komplett deinstallieren). Die lokale Nutzung (und Sicherheit) von Java-Programmen wird dadurch nicht beeinträchtigt. {{{#!vorlage Hinweis Dieses Plugin wird von Einsteigern oft mit "Java" verwechselt, obwohl es nur einen kleinen Teil der Funktionalität von Java ausmacht. }}} == Java Web Start == [wikipedia:Java_Web_Start:Java Web Start] ist eine Technik, die es ermöglicht, Java-Anwendungen (keine Java-Applets!) mit dem Webbrowser über das Internet und nur einem Mausklick zu starten. Im Unterschied zu Java-Applets benötigen Java-Web-Start-Anwendungen keinen Browser, um ablaufen zu können. Erkennen kann man Java-Web-Start-Anwendungen an der Datei-Endung '''.jnlp'''. Man kann sich auch einen lokalen [:Menü:Programmstarter] für solche Anwendungen anlegen. Beispiel: {{{#!vorlage Befehl javaws http://www.domain.topleveldomain/PROGRAMM.jnlp }}} = Versionen und Versionsnummern = == Sun Java == Bis zur Version 1.4 wurden neue Versionen von Java sowohl von Sun als auch von Blackdown kontinuierlich hochgezählt. Dabei übernahm Blackdown immer die aktuelle Version von Sun und fügte eigene Änderungen hinzu. Mit der Version Java 1.5 änderte sich die Bezeichnung der Versionsnummer. Von manchen wird die neue Version als 1.5 bezeichnet, von Sun selbst wurde die Versionsnummer 5 eingeführt. Daher kann es hier zu Verwirrungen kommen. Von der Version 5 bzw. 1.5 gab es mind. 13 Aktualisierungen, die Verbesserungen mitbrachten und Sicherheitslücken korrigierten. Heute wird allgemein Version 6 (1.6) verwendet. In Java 6 geschriebene Desktop-Anwendungen sehen nicht mehr typisch nach Java aus, sondern passen sich dem jeweiligem [:GTK:]-Theme an. Die Version 6 gibt es nur von Sun bzw. – nach einen Verkauf von Sun – von Oracle (siehe auch [:Java/Installation/Manuell:] und [http://java.com/de/ Downloadseite] {de}). Noch in den offiziellen Paketquellen mancher Ubuntu-Versionen vorhandene Pakete sind seit Dezember 2011 praktisch nicht mehr benutzbar (das Browser-Plugin hatte Sicherheitslücken und ist durch ein "Update" stillgelegt worden). == Oracle Java == Version 7 als Nachfolger von Sun Java 6 ist seit Ende 2011 verfügbar und die erste "eigene" Version von Oracle nach dem Aufkauf von Sun. Offiziell wird als Bezeichnung nur noch Java verwendet, der Name "Oracle Java" dient hier nur als Abgrenzung und zum besseren historischen Verständnis. Sowohl Java 6 als auch Java 7 dürfen ab August 2011 nicht mehr über die offizielle Paketquellen von Ubuntu verteilt werden. Die bisherige ''"DLJ"'' (Operating System Distributor License for Java), die es Linux-Distributionen erlaubte, eigene Installationspakete von Java zu erstellen, wurde von Oracle einseitig aufgekündigt. Daher ist die [:Java/Installation/Oracle_Java:manuelle Installation] die einzige Möglichkeit, Java von Oracle zu installieren. Da damit auch eine automatische Aktualisierung entfällt, sollte das OpenJDK die erste Wahl für Ubuntu-Benutzer sein. == OpenJDK == Sun Java 7 (nicht Oracle Java 7) wurde unter dem Namen [wikipedia:OpenJDK:] unter der [wikipedia:GNU_General_Public_License:GPL] veröffentlicht. Dadurch ist Java komplett Open Source und darf völlig frei verteilt werden. OpenJDK bietet trotz des irreführenden Namens sowohl eine Laufzeitumgebung (JRE) als auch ein Entwicklungswerkzeug (JDK) an und ist ebenfalls in den Versionen 6 und 7 verfügbar (siehe unten). Um die Begriffsverwirrung auf die Spitze zu treiben: der Paketname für das OpenJDK 6 Browser-Plugin lautet '''icedtea6-plugin''' bzw. ab [:Natty:Ubuntu 11.04] nur noch '''icedtea-plugin''' statt "openjdk-plugin". [wikipedia:IcedTea:] wurde aus OpenJDK mit komplett freien Compilern hergestellt. IcedTea besteht zum größten Teil aus dem originalen Code. Einige Teile sind allerdings durch Code aus dem GNU-Classpath-Projekt ersetzt, da sie nicht unter einer Open-Source-Lizenz verfügbar sind. IcedTea, welches vornehmlich von RedHat entwickelt wurde, war von Anfang an nur als eine Zwischenlösung geplant, bis es möglich war, OpenJDK mit komplett freien Tools zu kompilieren. Die IcedTea-Pakete wurden bis auf das Browser-Plugin komplett durch OpenJDK-Pakete ersetzt. Man darf sich dabei nicht von den Versionsnummern täuschen lassen: OpenJDK besitzt bis einschließlich Ubuntu 11.04 die Versionsnummer 6. Mit [:Oneiric:Ubuntu 11.10] ist der Nachfolger OpenJDK 7 neben dem bisherigen OpenJDK 6 nutzbar. Dies betrifft sowohl das JRE als auch das JDK. = Links = * offizielle Java-Testseiten - zum Überprüfen, ob Java korrekt installiert wurde (funktioniert nur eingeschränkt mit OpenJDK, daher eher ein grundsätzlicher Test des Browser-Plugins): * [http://www.java.com/de/download/help/testvm.xml Variante 1] {de} * [http://java.com/de/download/testjava.jsp Variante 2] {de} * [http://javatester.org/version.html JavaTester.org] {en} - weiterer Java-Test und Versionsübersicht (funktioniert nur eingeschränkt mit OpenJDK, daher eher ein grundsätzlicher Test des Browser-Plugins) * [ubuntu_doc:RestrictedFormats:Restricted Formats] {en} - Weitere Informationen zum Thema Java * [http://www.gnu.org/software/java/java.html Homepage von GNU Java] {en} * [http://openbook.galileocomputing.de/javainsel/ Java ist auch eine Insel - Das umfassende Handbuch] {de} - Galileo * [http://openbook.galileocomputing.de/java7/ Java7 - mehr als eine Insel - Das Handbuch zu den Java SE-Bibliotheken] {de} - Galileo * [http://www.javabuch.de/ Handbuch der Javaprogrammierung] {de} - Addison Wesley (freier Download) * [:Java3D:] - Erweiterung von Java mit 3D-Funktionen * [http://wiki.ubuntuusers.de/Wiki/Tags?tag=Java Java-Programme] im hiesigen Wiki # tag: Programmierung, Internet, Java, Übersicht