Definition

Java

Java ist eine weit verbreitete Programmiersprache, die ausdrücklich für den Einsatz im Internets entwickelt wurde. Sie ist die beliebteste Programmiersprache für Android-Smartphone-Anwendungen und gehört auch zu den bevorzugten Sprachen für Edge-Geräte und das Internet der Dinge.

Java wurde nach dem Vorbild der Programmiersprache C++ entwickelt, ist aber einfacher zu bedienen und erzwingt ein objektorientiertes Programmiermodell (Objektorientierte Programmierung, OOP). Mit Java lassen sich komplette Anwendungen erstellen, die auf einem einzelnen Computer laufen oder auf Server und Clients in einem Netzwerk verteilt. Es eignet sich auch für das Erstellen kleiner Anwendungsmodule oder Applets als Teil einer Webseite.

Darum ist Java so beliebt

Für die Popularität von Java gibt es mehrere Gründe. Zu den wichtigsten gehören:

  • Portabilität im Netzwerk. Der Quellcode wird in sogenannten Bytecode kompiliert, der auf einem Server oder auf einem Client im Netzwerk ausgeführt werden kann, wenn er über eine Java Virtual Machine (JVM) verfügt. Die JVM interpretiert den Bytecode in Code, der auf der Computerhardware ausgeführt werden kann. Im Gegensatz dazu kompilieren die meisten Programmiersprachen, wie COBOL oder C++, den Code in eine Binärdatei. Binärdateien sind plattformspezifisch, so dass ein Programm, das für einen Intel-basierten Windows-Rechner geschrieben wurde, nicht auf einem Mac, einem Linux-basierten Gerät oder einem IBM-Mainframe ausgeführt werden kann. Zusätzlich enthält die JVM einen optionalen Just-in-Time-Compiler (JIT), der Bytecode dynamisch in ausführbaren Code kompiliert. In vielen Fällen ist die dynamische JIT-Kompilierung schneller als die Interpretation durch die virtuelle Maschine (VM).
  • Objektorientierte Programmierung. Ein Objekt besteht aus Daten (wie Felder oder Attribute) und aus Code (wie Prozeduren oder Methoden). Objekte können Klassen zugeordnet sein, aus denen sie Code erben. Objekte kann man sich als Substantive vorstellen, die ein Benutzer mit Verben in Beziehung setzen kann. Java verwendet auch einen automatischen Garbage Collector, um die Lebenszyklen von Objekten zu verwalten. Programmierer erstellen Objekte und der automatische Garbage Collector erstellt ein Backup, sobald das Objekt nicht mehr verwendet wird.
  • Robuster Code. Im Gegensatz zu Programmen, die in C++ geschrieben sind, enthalten Java-Objekte keine Verweise auf Daten außerhalb ihrer selbst oder anderer bekannter Objekte. Dadurch wird sichergestellt, dass eine Anweisung nicht die Adresse von Daten enthalten kann, die in einer anderen Anwendung oder im Betriebssystem selbst gespeichert sind, was beides dazu führen würde, dass das Programm und vielleicht auch das Betriebssystem beendet wird oder abstürzt. Die JVM führt bei jedem Objekt eine Reihe von Prüfungen durch, um die Integrität sicherzustellen.
  • Im Gegensatz zu C++ verwendet Java keine ungesicherten Pointer. Die von Java in Bytecode umgewandelten Daten sind auch für Menschen nicht lesbar. Außerdem führt Java Programme innerhalb einer Sandbox aus, um Änderungen aus unbekannten Quellen zu verhindern.
  • Flexibilität durch Applets. Abgesehen davon, dass Java-Applets auf dem Client und nicht auf dem Server ausgeführt werden, haben sie weitere Eigenschaften, durch die sie schneller laufen.
  • Mit einer Syntax, die der von C++ ähnelt, ist Java relativ leicht zu erlernen, besonders für Nutzer, die bereits Erfahrung mit C haben.

Ein häufiges Missverständnis ist, dass es eine Verwandtschaft zwischen Java und JavaScript gibt. Die beiden Sprachen haben Ähnlichkeiten in der Syntax, sind aber zwei sehr unterschiedliche Konstrukte.

Java-Plattformen

Die drei wichtigsten Plattformen, auf denen Programmierer Java-Anwendungen entwickeln können, sind:

  • Java SE. Einfache, eigenständige Anwendungen werden mit der Java Standard Edition (SE) entwickelt. Früher als J2SE bekannt, bietet Java SE alle APIs, die für die Entwicklung traditioneller Desktop-Anwendungen benötigt werden.
  • Java EE. Die Java Enterprise Edition (EE), früher bekannt als J2EE, bietet die Möglichkeit, serverseitige Komponenten zu erstellen, die auf einen webbasierten Anfrage-Antwort-Zyklus reagieren können. Das ermöglicht das Erstellen von Java-Programmen, die mit Internet-basierten Clients interagieren können, einschließlich Webbrowsern, CORBA-basierten Clients und sogar REST- und SOAP-basierten Webdiensten.
  • Java ME. Java bietet auch eine leichtgewichtige Plattform für die mobile Entwicklung, bekannt als Java Micro Edition, ehemals bekannt als J2ME. Java ME hat sich als eine weit verbreitete Plattform für die Entwicklung von Embedded Devices erwiesen, aber es hatte Schwierigkeiten, im Smartphone-Bereich Fuß zu fassen.

Anwendungsgebiete für Java

Mit den verschiedenen Komponenten von Java EE ist es für Entwickler einfacher, Programme zu schreiben, die gängige Software-Design-Patterns und Best Practices verwenden. Beispielsweise nutzen Frameworks wie Struts und JavaServer Faces alle ein Java-Servlet, um das Front-Controller-Design-Pattern zur Zentralisierung von Anfragen zu implementieren.

Ein großer Teil des Java-Ökosystems ist die Vielzahl von Open-Source- und Community-Projekten, Softwareplattformen und APIs. Die Apache Foundation hostet beispielsweise eine Vielzahl von Projekten, die mit Java geschrieben wurden, darunter einfache Protokollierungsframeworks für Java (SLF4J), Yarn- und Hadoop-Verarbeitungsframeworks, Microservices-Entwicklungsplattformen und Integrationsplattformen. Java EE-Umgebungen können auch in der Cloud zum Einsatz kommen. Entwickler können Java-Anwendungen in Google Cloud auf einer skalierbaren Ebene erstellen, bereitstellen, debuggen und überwachen. In Bezug auf die mobile Entwicklung wird Java häufig als Programmiersprache für Android-Anwendungen verwendet. Java wird von Android-Entwicklern aufgrund der Sicherheit von Java, der objektorientierten Paradigmen, der regelmäßig aktualisierten und gepflegten Funktionssätze, der Verwendung von JVM und Frameworks für Netzwerke, E/A (Input/Output, Eingang/Ausgang, E/A) und Threading bevorzugt.

Doch Java hat auch Nachteile. So kritisieren viele die Syntax als zu ausführlich. In der Folge sind mehrere periphere Sprachen entstanden, die versuchen, dieses Problem zu umgehen. Zu ihnen gehört unter anderem Groovy. Aufgrund der Art und Weise, wie Java intern auf Objekte verweist, verlangsamen komplexe und gleichzeitige listenbasierte Vorgänge die JVM.

Scala behebt viele der Mängel von Java, besonders, was die Skalierbarkeit betrifft.

Die Geschichte von Java

Java wurde ursprünglich nicht für das Internet entwickelt. Stattdessen stellten sich die Ingenieure von Sun Microsystems kleine, miteinander verbundene Geräte in Appliance-Größe vor, die untereinander kommunizieren könnten. Infolgedessen widmete die Programmiersprache Java der Aufgabe der Netzwerkprogrammierung mehr Aufmerksamkeit als andere konkurrierende Sprachen.

Fähigkeiten von Java
Abbildung 1: Java bietet viele nützliche Funktionen.

Durch java.net-APIs hat die Programmiersprache große Fortschritte bei der Vereinfachung der traditionell schwierigen Aufgabe der Programmierung für ein Netzwerk gemacht. Das erste vollständige Inkrement von Java erfolgte am 23. Januar 1996. Die bekannte JavaBeans-Schnittstelle wurde im Februar 1997 in Java 1.1 eingeführt. Spätere Versionen von Java-Versionen haben Spitznamen erhalten, zum Beispiel JDK 1.2, das als Java 2 bezeichnet wird. In Java 2 wurden die API-Sammlungen erheblich verbessert, während in Java 5 durch eine neue Funktion namens Generics wesentliche Änderungen an der Java-Syntax vorgenommen wurden. Im Oktober 2009 veröffentlichte Google das Android Software Developer Kit (SDK), ein Standard-Entwicklungskit, mit dem Entwickler mit Java-APIs Anwendungen für Android-basierte Geräte schreiben konnten. Oracle Corp. übernahm im Januar 2010 mit Sun Microsystems auch die Java-Plattform.

Die Übernahme verzögerte die Veröffentlichung von Java 7, und Oracle reduzierte einige der ehrgeizigeren Pläne. Java 8 wurde im März 2014 veröffentlicht. Es enthielt Lambda-Ausdrücke, die in vielen konkurrierenden Sprachen häufig vorkommen, in Java selbst jedoch bis zu diesem Zeitpunkt nicht. Mit Lambda-Ausdrücken können Entwickler Anwendungen mit einem funktionalen Ansatz schreiben, im Gegensatz zu einem objektorientierten.

Im März 2018 wurde Java 10 veröffentlicht, gefolgt von Java 11 im September 2018. Java 12 wurde im März 2019 veröffentlicht.

Rechtsstreit zwischen Google und Java

Am 10. August 2010 leitete Oracle die erste von zwei Klagen gegen Google ein, von denen die zweite 8,8 Milliarden US-Dollar Schaden aufgrund der unerlaubten Verwendung von Java im Android SDK forderte.

Oracle erklärte, dass dadurch eine Urheberrechtsverletzung vorliege und dass die Implementierung verschiedener Java-APIs Code verwendete, der direkt von Oracle-Implementierungen kopiert wurde. Der Rechtsstreit endete im Mai 2016, als beide Prozesse zugunsten von Google entschieden wurden. Die Juroren entschieden, dass die Verwendung der Java-APIs durch Android eine erlaubte Verwendung darstellt, und gewährten Oracle keinen Schadenersatz.

Diese Definition wurde zuletzt im Februar 2021 aktualisiert

Erfahren Sie mehr über Softwareentwicklung