Java (Programmiersprache)

  1. Startseite
  2. Programmierung
  3. Java (Programmiersprache)

Java ist eine objektorientierte Programmiersprache und eine eingetragene Marke des Unternehmens Sun Microsystems (2010 von aufgekauft). Die Programmiersprache ist ein Bestandteil der Java-Technologie – diese besteht grundsätzlich aus dem Java-Entwicklungswerkzeug (JDK) zum Erstellen von Java-Programmen und der Java- (JRE) zu deren Ausführung. Die Laufzeitumgebung selbst umfasst die virtuelle Maschine (JVM) und die mitgelieferten Bibliotheken.

Die Programmiersprache Java dient innerhalb der Java-Technologie vor allem dem Formulieren von Programmen. Diese liegen zunächst als reiner, menschenverständlicher Text vor, als sogenannter Quellcode. Dieser Quellcode ist nicht direkt ausführbar; erst der Java-Compiler, der Teil des Entwicklungswerkzeugs ist, übersetzt ihn in einen maschinenverständlichen Code, den sogenannten Java-Bytecode. Die Maschine, die diesen Bytecode ausführt, ist jedoch typischerweise virtuell – das heißt, der Code wird meist nicht direkt durch Hardware (etwa einen Mikroprozessor) ausgeführt, sondern durch entsprechende Software auf der Zielplattform.

Zweck dieser Virtualisierung ist Plattformunabhängigkeit: Das Programm soll ohne weitere Änderung auf jeder Rechnerarchitektur laufen können, wenn dort eine passende Laufzeitumgebung installiert ist. Oracle selbst bietet Laufzeitumgebungen für die Betriebssysteme Linux, OS X, Solaris und Windows an. Andere Hersteller lassen eigene Java-Laufzeitumgebungen für ihre Plattform zertifizieren. Auch in Autos, HiFi-Anlagen und anderen elektronischen Geräten wird Java verwendet.

Um die Ausführungsgeschwindigkeit zu erhöhen, werden Konzepte wie die Just-in-time-Kompilierung und die Hotspot-Optimierung verwendet. In Bezug auf den eigentlichen Ausführungsvorgang kann die JVM den Bytecode also interpretieren, ihn bei Bedarf jedoch auch kompilieren und optimieren.

Nach dem TIOBE-Index ist Java nach C die zweitpopulärste Programmiersprache. Nach dem RedMonk-Programmiersprachenindex liegt Java gleichauf mit auf Platz eins.

Grundkonzepte

Der Entwurf der Programmiersprache Java strebte hauptsächlich fünf Ziele an:

  • 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 sein.

Merkmale

Der Objektzugriff in Java ist über Referenzen implementiert, die den aus C oder C++ bekannten Zeigern ähneln. Die Sprachdefinition (Java Language Specification) bezeichnet sie als „Reference Values“ um deutlich zu machen, dass sie als Call by value übergeben werden. Aus Sicherheitsgründen erlauben diese weder den Verweis auf Methoden oder andere Referenzen, noch die tatsächliche Speicheradresse zu erkennen oder zu modifizieren. So genannte Zeigerarithmetik ist in Java somit ausgeschlossen. Per Design kann so ein häufiger Typ von Fehlern, die in anderen Programmiersprachen auftreten, von vornherein ausgeschlossen werden.

Zusammengehörige Klassen werden in Paketen (englisch packages) zusammengefasst. Diese Pakete ermöglichen die Einschränkung der Sichtbarkeit von Klassen, eine Strukturierung von größeren Projekten sowie eine Trennung des Namensraums für verschiedene Entwickler. Die Paketnamen sind hierarchisch aufgebaut und beginnen meist mit dem (umgekehrten) Internet-Domainnamen des Entwicklers. (Pakete, die von Sun erstellt werden, beginnen z. B. mit „com.sun.“) Klassennamen müssen nur innerhalb eines Paketes eindeutig sein.

Hierdurch ist es möglich, Klassen von verschiedenen Entwicklern zu kombinieren, ohne dass es zu Namenskonflikten kommt. Die Hierarchie der Paketnamen hat allerdings keine semantische Bedeutung. Bei der Sichtbarkeit zwischen den Klassen zweier Pakete spielt es keine Rolle, wo sich die Pakete in der Namenshierarchie befinden. Klassen sind entweder nur für Klassen des eigenen Paketes sichtbar oder für alle Pakete.

Weiter unterstützt die Sprache Threads (nebenläufig ablaufende Programmteile) und Ausnahmen (englisch exception). Java beinhaltet auch eine automatische Speicherbereinigung (englisch garbage collector), die nicht (mehr) referenzierte Objekte aus dem Speicher entfernt.

Java unterscheidet explizit zwischen Schnittstellen und Klassen. Eine Klasse kann beliebig viele Schnittstellen implementieren, hat aber stets genau eine Basisklasse. Java unterstützt kein direktes Erben von mehreren Klassen („Mehrfachvererbung“), jedoch die Vererbung über mehrere Hierarchie-Ebenen (Klasse Kind erbt von Klasse Vater, die ihrerseits von Klasse Großvater erbt usw.).

Je nach Sichtbarkeit (public, protected, default/package-private, private) erbt die Klasse Methoden und Attribute (auch Felder genannt) von ihren Klassenvorfahren. Alle Klassen sind – direkt oder indirekt – von der Wurzelklasse Object abgeleitet. Zu Java gehört eine umfangreiche Klassenbibliothek. Dem Programmierer wird damit eine einheitliche, vom zugrundeliegenden Betriebssystem unabhängige (Application programming interface, API) angeboten.

Mit Java 1.2 wurden die Java Classes (JFC) eingeführt, die unter anderem Swing bereitstellen, das zur Erzeugung plattformunabhängiger grafischer Benutzerschnittstellen (GUI) dient und auf dem Abstract Window Toolkit basiert.

Syntax

Syntax/Grammatik und Semantik von Java sind in der Java Language Specification (Java-Sprachspezifikation) von Sun Microsystems dokumentiert. Das folgende Beispielprogramm gibt die unter Programmierern klassische Meldung „Hallo Welt!“ auf dem Ausgabemedium aus.

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

Anwendungsarten

Mit Java können zahlreiche verschiedene Arten von Anwendungen erstellt werden.

Java-Webanwendungen

Java Webanwendungen sind Java-Programme, die auf einem Webserver geladen und gestartet werden und beim Benutzer in einem Webbrowser ablaufen bzw. dargestellt werden. Üblicherweise läuft ein Teil der auf dem Server (die Geschäftslogik und Persistenz) und ein anderer Teil am Webbrowser (die Logik der Grafischen Benutzeroberfläche).

Der Serverteil wird üblicherweise vollständig in Java geschrieben, der Browserteil üblicherweise in und JavaScript. Es ist jedoch auch möglich, Java-Webanwendungen inklusive GUI-Logik vollständig in Java zu schreiben (siehe z. B. Google Toolkit oder die Remote Application Platform). Bekannte Beispiele für Java-Webanwendungen sind [21], Jira, Jenkins oder Gmail (das nicht vollständig, aber zu großen Teilen in Java geschrieben ist).

Java-Desktop-Anwendungen
Unter Desktop-Anwendungen oder Applikationen werden normale Desktop-Programme zusammengefasst. Sowohl Internet-Kommunikationsprogramme als auch Spiele oder Office-Anwendungen, die auf einem normalen PC laufen, werden so genannt. Bekannte Beispiele für Java-Desktop-Anwendungen sind die integrierte Entwicklungsumgebung Eclipse, das Filesharing-Programm Vuze oder das Computerspiel Minecraft.

Java-Applets
Java-Applets sind Java-Anwendungen, die normalerweise in einem Webbrowser ausgeführt werden. Sie sind üblicherweise auf einen durch ein spezielles HTML-Tag definierten Bereich einer Webseite beschränkt. Voraussetzung für die Ausführung von Java-Applets ist ein Java-fähiger Browser.

Apps
Apps sind kleinere Applikationen für mobile Geräte wie Handys, Smartphones, PDAs oder Tablets. Sie laufen üblicherweise auf speziellen, für die Ausführung von Java-Anwendungen auf mobilen Geräten optimierten Java-Plattformen wie Java ME oder .

Entwicklungsumgebungen

Es gibt eine große Vielfalt von Entwicklungsumgebungen für Java, sowohl proprietäre als auch freie (Open Source). Die meisten Entwicklungsumgebungen für Java sind selbst ebenfalls in Java geschrieben. Die bekanntesten Open-Source-Umgebungen sind das von der Eclipse Foundation bereitgestellte Eclipse und das von Sun entwickelte NetBeans.

Unter den kommerziellen Entwicklungsumgebungen sind das auf NetBeans basierende Sun ONE Studio von Sun, IntelliJ IDEA von JetBrains, JBuilder von Borland sowie JCreator am verbreitetsten. Außerdem gibt es noch eine, um einige hundert Plugins erweiterte Version von Eclipse, die von IBM unter dem Namen WebSphere Studio Application Developer („WSAD“) vertrieben wurde und seit Version 6.0 Rational Application Developer („RAD“) heißt.

Apple liefert mit Mac OS X ab Version 10.3 die Entwicklungsumgebung Xcode aus, die verschiedene Programmiersprachen unterstützt und einen Schwerpunkt auf Java setzt. Wer lieber einen Texteditor verwendet, findet in Emacs zusammen mit der JDEE (Java Development Environment for Emacs) ein mächtiges Werkzeug.

Ein vielseitiger und erweiterbarer in Java geschriebener Editor ist jEdit. Für andere Editoren wie Vim, Jed oder TextPad gibt es ebenfalls entsprechende Modi. Für Einsteiger und Ausbildungszwecke konzipiert ist BlueJ, wo unter anderem die Beziehungen zwischen den verschiedenen Klassen graphisch in Form von Klassendiagrammen dargestellt werden.

Quelle: Wikipedia (http://de.wikipedia.org/wiki/Java_Programmiersprache)

Archive

error: Content is protected !!