Java

Java ist eine objektorientierte Programmiersprache welche in den 90iger-Jahren von der Firma Sun Microsystems entworfern wurde. Sie ist Bestandteil der Java-Technologie und wird an der NTB als primäre Programmiersprache in der Lehre verwendet.

Java-Programme werden üblicherweise nicht in Maschinen- sondern Bytecode übersetzt, welcher anschliessend in einer speziellen Umgebung - der Java Runtime Environment oder Java Platform - ausgeführt wird. Dabei wird der Bytecode von der Java Virtual Machine interpretiert und bei bedarf kompiliert (Just-in-time-Kompilierung). Dadurch sind Java-Anwendungen plattformunabhängig und laufen somit ohne Anpassungen auf verschiedenen Computerarchitekturen und Betriebssystemen, sofern dafür eine Java-Laufzeitumgebung existiert. Sun bietet Laufzeitumgebungen für Windows (x86-32), Linux (x86-32 und x86-64) sowie Solaris (x86-32, x86-34, SPARC und SPARC64) an. Für weitere Plattformen gibt es Java-Umgebungen von anderen Herstellern, wie z.B. von Apple für Mac OS X oder IBM für AIX, Linux und Windows.

Auf sämtlichen Computern am NTB ist das Sun Java Development Kit (kurz JDK) installiert, welches neben der JRE auch die notwendigen Entwicklungswerkzeuge enthält. Für die Java-Entwicklung wird am Besten Eclipse verwendet, welches ebenfalls auf allen Rechnern verfügbar ist.

Eigenschaften und Merkmale

Java-Logo Java wurde mit dem Ziel entworfen, im Vergleich zu anderen objektorientierten Programmiersprachen einfach zu sein. Dazu wurde der Sprachumfang im Vergleich zu C++ reduzierten. So besitzt Java beispielsweise kein Operator Overloading, keine Pointer und auch Mehrfachvererbung wird nicht unterstützt. Dennoch wurde die Syntax in vielen Bereichen an C++ angelehnt, so dass das ein Umstieg einfacher wird. Im Gegensatz zu C++ oder Smalltalk wird in Java explizit zwischen Schnittstellen und Klassen unterschieden. Da eine Klasse zwar nicht von mehreren Basisklassen erben kann, aber beliebig viele Interfaces implementieren kann, können die meisten der entsprechenden Probleme trotzdem elegant gelöst werden. Dabei ist jedoch zu beachten, dass Schnittstellen nur die Methodensignaturen an die implementierende Klasse weitergeben können, nicht jedoch Attribute oder bereits implementierte Methoden.

Weitere wichtige Eigenschaften von Java sind die starke Typisierung, die automatische Garbage Collection, die Verwendung von Referenzen statt Zeigern sowie das Exception Handling.

Weiter wurde beim Entwurf von Java auf ein fundiertes Sicherheitskonzept geachtet. Dafür stehen Konzepte wie der Code-Verifier, der sicherstellt, dass die Java Virtual Machine keinen ungültigen Bytecode ausführen kann, der Class-Loader, der die sichere Zuführung von Klasseninformationen zur Java Virtual Machine steuert und Security-Manager, die sicherstellen, dass nur Zugriff auf Programmobjekte erlaubt wird, für die entsprechende Rechte vorhanden sind.

Durch die Architekturneutralität sind in Java geschriebene Anwendungen hoch portabel. Das heisst z.B., dass die primitiven Datentypen (Integer, Float, etc.) sowohl in ihrer Grösse wie auch in ihrer internen Darstellung aber auch in ihrem arithmetischen Verhalten standardisiert sind.

Obwohl Java eine interpretierbare Sprache ist, ist die Ausführungsgeschwindigkeit durch Just-In-Time Kompilierung und dynamischer Optimierung annähernd so hoch wie bei C++.

Hello World Beispiel

public class HalloWelt {
  public static void main(String[] args) {
    System.out.println("Hallo, World!");
  }
}

Literatur