Dies ist eine alte Version des Dokuments!


Gründe, um Java zu lernen

Plattformunabhängigkeit

Als großer Vorteil von Java wird oft die Plattformunabhängigkeit genannt. Der als Text vorliegende Java-Quellcode wird über einen sogenannten Compiler in ein anderes Format konvertiert, welches Bytecode genannt wird. Der Java-Bytecode kann dann in einer virtuellen Maschine, der JVM (Java Virtual Machine) ausgeführt werden. Dadurch bleibt das Programm unabhängig von der darunterliegenden Plattform, jedoch wird stets eine JVM vorausgesetzt. Da diese aber für alle gängigen Plattformen (Windows, Linux, MacOSX, Android, *BSD, …) zur Verfügung steht, stellt dies selten ein Problem dar.
Diese Tatsache hat aber nicht nur Vorteile. Da der Java-Code nicht direkt auf dem Prozessor sondern in der JVM ausgeführt werden muss, geht dies auf Kosten der Performance. Abhilfe schaffen Just-In-Time (JIT) Compiler, die den Bytecode in Maschinencode umwandeln, der direkt auf der CPU ausgeführt werden kann.
Aufgrund der JVM-Abstraktion kann man auch nicht so nahe an der Hardware programmieren (Kernel-Funktionen aufrufen, Treiber entwickeln, …) wie man es zum Beispiel in C oder C++ kann.

Automatische Speicherverwaltung

In Java muss der Entwickler sich nicht direkt um die Speicherverwaltung - also das Anfordern und Freigeben der einzelnen Speicherbereiche - kümmern. Legt man ein Objekt an, so wird während das Programm läuft automatisch der benötigte Speicher bereitgestellt. Freigegeben wird der Speicher vom so genannten Garbage Collector. Der Garbage Collector ist ein Programm, das regelmäßig prüft, ob ein zuvor angeforderter Speicherbereich überhaupt noch benötigt wird. Findet er im aktuellen Programmzustand keinen Verweis mehr auf den Speicherbereich, kann dieser auch nicht mehr verwendet werden und wird freigegeben.
Natürlich verlangsamt dieses Verfahren die Ausführung, da immer die aktuelle Anzahl an Verweisen auf eine Speicherstelle mitgeführt werden muss. Für Echtzeitanwendungen (Steuerung eines Atomkraftwerks etc.) kann Java nicht verwendet werden, da durch die Ausführung in der JVM und die automatische Speicherbereinigung nicht gewährleistet werden kann, dass eine bestimmte Funktion zu einer bestimmten Zeit abgeschlossen ist. Man stelle sich einmal vor ein zeitkritischer Prozess beim herunterkühlen des Kernreaktors wird um ein oder zwei Sekunden hinausgezögert, weil der Garbage Collector meint jetzt einmal kurz den Speicher aufräumen zu müssen. Die Folgen eines solchen Zwischenfalls wären logischerweise fatal.

Standardbibliothek

Java bietet im Standard bereits eine sehr umfangreiche Bibliothek, ohne dass irgendwelche externen Dinge heruntergeladen, installiert, eingerichtet oder geladen werden müssen. Mit diesen im Standard enthaltenen Funktionen ist man bereits für sehr viele Herausforderungen bzw. Projekte gerüstet. Unter anderen bietet Java bereits Bibliotheken für grafische Oberflächen, Threads oder Netzwerkkommunikation.

Einfachheit

Eben aufgrund der obigen beiden Punkte wird Java oft als einfacher als zum Beispiel C++ angesehen. Als Anfänger benötigt man deutlich weniger Hintergrundwissen, um etwas Funktionierendes auf die Beine zu erstellen.
Diese Einfachheit geht aber auf Kosten der Freiheit. Viele Features wurden in Java nicht implementiert, um die Sprache nicht unnötig kompliziert zu machen. C++-Entwickler werden im speziellen Operatorenüberladung, Mehrfachvererbung, Const-Correctness und Templates vermissen.

Objektorientierung

Dieser viel gehörte und populär gewordene Begriff bezeichnet eine Art der Programmierung, in der man das Programm ähnlich wie die Welt betrachtet und zwar als eine Ansammlung von Objekten, die miteinander agieren. Demgegenüber steht die prozedurale Programmierung, die als Folge ablaufender Handlungen zu verstehen ist. Wie auch C++ bietet Java einige Sprachkonstrukte, die dabei helfen, Objekte im Programmablauf zu verwalten.

Popularität

Vor allem in den Bereichen Web-, Business- und Mobile-Anwendungen ist Java sehr weit verbreitet. Gerade im aufkommenden Markt für Smartphone-Apps spielt Java eine große Rolle, da es die Basis des weit verbreiteten Android-Systems ist. Die Liste der in Java entwickelten Projekte ist lang und beinhaltet namhafte Programme, wie zum Beispiel Eclipse, Netbeans, OpenOffice, LibreOffice und Minecraft.
Rund um die Java Programmierung hat sich auch eine recht große Community entwickelt. Der Vorteil daran ist, dass man bei Problemen eine große Menge an Informationen und schnell Hilfe findet. Auch auf proggen.org findet sich ein Java-Forum, in dem Fragen gestellt werden können.

Dokumentation

Es gibt eine ausführliche Dokumentation, die alle Bestandteile der Standardbibliothek und des Sprachkerns abdeckt.
Hier kann man bei Unklarheiten nachforschen oder eine bestimmte Funktion suchen. Außerdem lohnt es sich hin und wieder ein wenig in der Dokumentation zu stöbern, auch wenn man die Grundlagen von Java bereits beherrscht.
Außerdem beinhaltet das Java-Entwicklungspaket - auch JDK (Java Development Kit) genannt - das Dokumentationswerkzeug Javadoc, das aus Java-Quelltexten automatisch eine HTML-Dokumentation im Stile der Java Dokumentation erstellt.