Rheinwerk Computing < openbook >


 
Inhaltsverzeichnis
Materialien
Vorwort
1 Java ist auch eine Sprache
2 Imperative Sprachkonzepte
3 Klassen und Objekte
4 Arrays und ihre Anwendungen
5 Der Umgang mit Zeichenketten
6 Eigene Klassen schreiben
7 Objektorientierte Beziehungsfragen
8 Ausnahmen müssen sein
9 Geschachtelte Typen
10 Besondere Typen der Java SE
11 Generics<T>
12 Lambda-Ausdrücke und funktionale Programmierung
13 Architektur, Design und angewandte Objektorientierung
14 Java Platform Module System
15 Die Klassenbibliothek
16 Einführung in die nebenläufige Programmierung
17 Einführung in Datenstrukturen und Algorithmen
18 Einführung in grafische Oberflächen
19 Einführung in Dateien und Datenströme
20 Einführung ins Datenbankmanagement mit JDBC
21 Bits und Bytes, Mathematisches und Geld
22 Testen mit JUnit
23 Die Werkzeuge des JDK
A Java SE-Module und Paketübersicht
Stichwortverzeichnis


Download:

- Listings, ca. 2,7 MB


Buch bestellen
Ihre Meinung?



Spacer
<< zurück
Java ist auch eine Insel von Christian Ullenboom

Einführung, Ausbildung, Praxis
Buch: Java ist auch eine Insel


Java ist auch eine Insel

Pfeil 1 Java ist auch eine Sprache
Pfeil 1.1 Historischer Hintergrund
Pfeil 1.2 Warum Java populär ist – die zentralen Eigenschaften
Pfeil 1.2.1 Bytecode
Pfeil 1.2.2 Ausführung des Bytecodes durch eine virtuelle Maschine
Pfeil 1.2.3 Plattformunabhängigkeit
Pfeil 1.2.4 Java als Sprache, Laufzeitumgebung und Standardbibliothek
Pfeil 1.2.5 Objektorientierung in Java
Pfeil 1.2.6 Java ist verbreitet und bekannt
Pfeil 1.2.7 Java ist schnell – Optimierung und Just-in-time-Compilation
Pfeil 1.2.8 Das Java-Security-Modell
Pfeil 1.2.9 Zeiger und Referenzen
Pfeil 1.2.10 Bring den Müll raus, Garbage-Collector!
Pfeil 1.2.11 Ausnahmebehandlung
Pfeil 1.2.12 Das Angebot an Bibliotheken und Werkzeugen
Pfeil 1.2.13 Vergleichbar einfache Syntax
Pfeil 1.2.14 Java ist Open Source
Pfeil 1.2.15 Wofür sich Java weniger eignet
Pfeil 1.3 Java im Vergleich zu anderen Sprachen *
Pfeil 1.3.1 Java und C(++)
Pfeil 1.3.2 Java und JavaScript
Pfeil 1.3.3 Ein Wort zu Microsoft, Java und zu J++
Pfeil 1.3.4 Java und C#/.NET
Pfeil 1.4 Weiterentwicklung und Verluste
Pfeil 1.4.1 Die Entwicklung von Java und seine Zukunftsaussichten
Pfeil 1.4.2 Features, Enhancements (Erweiterungen) und ein JSR
Pfeil 1.4.3 Applets
Pfeil 1.4.4 JavaFX
Pfeil 1.5 Java-Plattformen: Java SE, Jakarta EE, Java ME, Java Card
Pfeil 1.5.1 Die Java SE-Plattform
Pfeil 1.5.2 Java ME: Java für die Kleinen
Pfeil 1.5.3 Java für die ganz, ganz Kleinen
Pfeil 1.5.4 Java für die Großen: Jakarta EE (ehemals Java EE)
Pfeil 1.5.5 Echtzeit-Java (Real-time Java)
Pfeil 1.6 Java SE-Implementierungen
Pfeil 1.6.1 OpenJDK
Pfeil 1.6.2 Oracle JDK
Pfeil 1.7 AdoptOpenJDK installieren
Pfeil 1.7.1 AdoptOpenJDK unter Windows installieren
Pfeil 1.8 Das erste Programm compilieren und testen
Pfeil 1.8.1 Ein Quadratzahlen-Programm
Pfeil 1.8.2 Der Compilerlauf
Pfeil 1.8.3 Die Laufzeitumgebung
Pfeil 1.8.4 Häufige Compiler- und Interpreter-Probleme
Pfeil 1.9 Entwicklungsumgebungen
Pfeil 1.9.1 Eclipse IDE
Pfeil 1.9.2 IntelliJ IDEA
Pfeil 1.9.3 NetBeans
Pfeil 1.10 Zum Weiterlesen
 

Zum Seitenanfang

1.4    Weiterentwicklung und Verluste Zur vorigen ÜberschriftZur nächsten Überschrift

 

Zum Seitenanfang

1.4.1    Die Entwicklung von Java und seine Zukunftsaussichten Zur vorigen ÜberschriftZur nächsten Überschrift

Vor 20 Jahren sprachen zwei große Pluspunkte für Java: die Einfachheit im Vergleich zum Vorgänger C++ und das Fehlen von »gefährlichen« syntaktischen Konstrukten. So schrieb einer der Sprachväter, James Gosling (der nach der Übernahme von Sun durch Oracle das Unternehmen verließ), schon 1997:

»Java ist eine Arbeitssprache. Sie ist nicht das Produkt einer Doktorarbeit, sondern eine Sprache für einen Job. Java fühlt sich für viele Programmierer sehr vertraut an, denn ich tendiere stark dazu, Dinge zu bevorzugen, die schon oft verwendet wurden, statt Dingen, die eher wie eine gute Idee klangen.«[ 32 ](Im Original: »Java is a blue collar language. It’s not PhD thesis material but a language for a job. Java feels very familiar to many different programmers because I had a very strong tendency to prefer things that had been used a lot over things that just sounded like a good idea.« (https://www.win.tue.nl/~evink/education/avp/pdf/feel-of-java.pdf) )

Der Wunsch nach einer einfachen Sprache besteht bis heute, allerdings ist in den letzten 20 Jahren viel passiert und Java deutlich komplexer geworden. Bedeutende Sprachänderungen gab es in Java 5 (also etwa zehn Jahre nach der Einführung von Java) und in Java 8. Das Modulsystem in Java 9 bringt ebenfalls neue Herausforderungen.

Bei der Dreifaltigkeit der Java-Plattform – 1. Java als Programmiersprache, 2. den Standardbibliotheken und 3. der JVM als Laufzeitumgebung – lässt sich erkennen, dass es große Bewegung bei den unterschiedlichen Programmiersprachen auf der Java-Laufzeitumgebung gibt. Es zeichnet sich ab, dass Java-Entwickler weiterhin in Java entwickeln werden, aber eine zweite Programmiersprache auf der JVM zusätzlich nutzen. Das kann JavaScript, Groovy, Kotlin, Scala, Jython, JRuby oder eine andere JVM-Sprache sein. Dadurch, dass die alternativen Programmiersprachen auf der JVM aufsetzen, können sie alle Java-Bibliotheken nutzen und daher Java als Programmiersprache in einigen Bereichen ablösen. Dass die alternativen Sprachen auf die üblichen Standardbibliotheken zurückgreifen, funktioniert reibungslos, allerdings ist der umgekehrte Weg, dass etwa Scala-Bibliotheken aus Jython heraus genutzt werden, (noch) nicht standardisiert. Bei der .NET-Plattform klappt das besser, und hier ist es wirklich egal, ob man C#- oder VB.NET-Klassen deklariert oder nutzt.

Als die Übernahme von Sun vor der Tür stand, zeigte Oracle sich sehr engagiert gegenüber den Sun-Technologien. Nach der Übernahme 2010 wandelte sich das Bild etwas, und Oracle sorgte eher für negative Schlagzeilen, etwa als es die Unterstützung für OpenSolaris einstellte, MySQL zurückfuhr und als Gefahr für die eigene Datenbank betrachtete und als es OpenOffice erst spät an Apache übergab (als sich LibreOffice schon verselbstständigt hatte). Auch was die Informationspolitik und Unterstützung von Usergroups angeht, verhält sich Oracle ganz anders als Sun. Durch die Klage gegen Google wegen Urheberrechtsverletzungen in Android machte sich Oracle auch keine Freunde. Android gilt als Beweis, dass Java auf dem Client tatsächlich erfolgreich ist. Als Sicherheitslücken in Java entdeckt wurden, machte das Unternehmen ebenfalls keine gute Figur. Insgesamt dürfte auf einer Bewertung folgende Einschätzung zu finden sein: »Oracle hat sich bemüht, den Anforderungen gerecht zu werden.«

Fast 10 Jahre nach der Übernahme gibt es neue radikale Änderungen. Erstmals entfernte Oracle Teile der Java SE-Bibliothek, wie CORBA-Unterstützung, JAXB, JAX-RS (Webservices), Applets, Java Web Start und JavaFX, auch die JavaScript-Engine ist mittlerweile verschwunden. Damit ist die bisher heilige Abwärtskompatibilität aufgegeben – Java 14 kann nicht in jedem Fall ältere Java-Software ausführen.

Ein weiter Schock ist die Kommerzialisierung. Oracle bringt mit dem Oracle JDK alle halbe Jahre ein neues Release heraus, das jedoch nur für »development, testing, prototyping or demonstrating purposes« genutzt werden darf, also nicht mehr kommerziell; für eine kommerzielle Nutzung fallen Gebühren an.[ 33 ](http://www.oracle.com/technetwork/java/eol-135779.html) Da das Oracle JDK allerdings nur eine Java SE-Implementierung von vielen ist, gibt es Alternativen, wie das OpenJDK.

 

Zum Seitenanfang

1.4.2    Features, Enhancements (Erweiterungen) und ein JSR Zur vorigen ÜberschriftZur nächsten Überschrift

Java wächst von Version zu Version, sodass es regelmäßig größere Zuwächse bei den Bibliotheken gibt sowie wohlproportionierte Änderungen an der Sprache und minimale Änderungen an der JVM. Änderungen an der Java SE-Plattform werden in Features und Enhancements kategorisiert. Ein Enhancement ist dabei eine kleine Änderung, die nicht der Rede wert ist – etwa dass eine kleine Funktion wie isEmpty() bei der Klasse String hinzukommt. Diese Erweiterungen bedürfen keiner großen Abstimmung und Planung und werden von Oracle-Mitarbeitern einfach integriert.

Features dagegen sind in Bezug auf den Aufwand der Implementierung schon etwas Größeres. Oder aber die Community erwartet diese Funktionalität dringend – das macht sie deutlich, indem sie einen Feature-Request auf Oracles Website platziert und viele für dieses Feature stimmen. Eine weitere Besonderheit ist, wie viele dieser Features geplant werden, denn oftmals entsteht ein JSR (Java Specification Request), der eine bestimmte Reihenfolge bei der Planung vorschreibt. Die meisten Änderungen an den Bibliotheken beschreibt ein JSR, und es gibt mittlerweile Hunderte von JSRs, wie die Seite https://jcp.org/en/jsr/overview zeigt.

In der Anfangszeit war die Implementierung gleichzeitig die Spezifikation, aber mittlerweile gibt es für einen Java-Compiler, die JVM und diverse Bibliotheken eine beschreibende Spezifikation. Das gilt auch für Java als Gesamtes. Java SE ist eine Spezifikation, die zum Beispiel das Oracle JDK und OpenJDK realisiert – frühere Alternativen wie Apache Harmony[ 34 ](http://harmony.apache.org. Seit Ende 2011 »retired«, also »in Pension« und somit tot. ) oder GNU Classpath[ 35 ](http://www.gnu.org/s/classpath. Seit Anfang 2009 keine neue Version mehr. Da das OpenJDK wie auch GNU Classpath unter der GPL-Lizenz steht, gibt es keine Notwendigkeit mehr für eine weitere Java SE-Implementierung unter der GPL. ) sind beendet. Das Oracle JDK (kurz JDK) basiert auf dem OpenJDK, und das OpenJDK steht unter der GPL-Lizenz. Das OpenJDK für Windows und Linux ist die Referenzimplementierung und definiert somit den Standard. (Das ist dann wichtig, wenn eben gewisse Eigenschaften doch nicht dokumentiert sind.) Die Java SE 14 Platform wird im JSR 389 beschrieben[ 36 ](https://www.jcp.org/en/jsr/detail?id=389).

 

Zum Seitenanfang

1.4.3    Applets Zur vorigen ÜberschriftZur nächsten Überschrift

Es ist nicht untertrieben, dem Web eine Schlüsselposition bei der Verbreitung von Java zuzuschreiben. Populär wurde Java Mitte der 1990er-Jahre durch Applets – Java-Programme, die ein Browser ausführt. Eine HTML-Datei referenzierte das Applet, es bekam auf der Webseite einen Platz zugewiesen, und der Browser holte sich eigenständig die Klassendateien und Ressourcen über das Netz und führte sie in der JVM aus.

Im Laufe der Zeit ging die Bedeutung der Java-Applets immer weiter zurück, und das lag an der Sprache, die ebenfalls 1995 erschien: JavaScript. Java-Applets brachten erstmals Dynamik und bewegte Grafik in die bis dahin statischen Webseiten, doch als dann die Webstandards CSS (1996) und SVG auftauchten (2001), setzten immer mehr Webentwickler auf eine Kombination von JavaScript mit diesen Standards. Denn Java-Applets haben, genauso wie Flash oder Silverlight, alle ein Problem: Sie benötigen ein Browser-Plugin. Das macht sie unattraktiv für Unternehmen, da im Internet kein Kunde ausgeschlossen werden soll. Früher, als die Webstandards noch nicht so weit entwickelt waren, brachten Flash und Silverlight Dynamik auf die Webseite, doch heute sind aufwendige Webanwendungen mit JavaScript und HTML5/CSS3 realisierbar. Auch Microsoft stoppte bei Silverlight 5 die Entwicklung und bevorzugt nun Lösungen auf der Basis von JavaScript + HTML5 + CSS3, insbesondere für mobile Endgeräte, da den Redmondern klar ist, dass es nie Silverlight auf dem iPhone oder Android geben wird.[ 37 ](Mit https://xamarin.com/platform gibt es interessante Ansätze. ) Adobe selbst beginnt mit Konvertern von Flash nach HTML5/CSS3/JavaScript und zeigt damit auch die Zukunft auf.

Es ist lange her, dass die frühen Browser Netscape und Internet Explorer eine JVM integrierten – irgendwann haben die Hersteller die Java-Laufzeitumgebung entfernt. Eine Zeit lang lieferte Oracle das Java Plug-in (in dieser Schreibweise) aus, um die eigene JVM in den Browser zu integrieren. Moderne Browser unterstützen das Java Plug-in jedoch nicht mehr. Wegen fehlender Unterstützung in den Browsern – und den guten Webstandards – markierte Oracle in Java 9 Applets als veraltet und entfernte sie komplett in Java 10. Java Web Start war eine Alternative ähnlich den Applets, mit der sich Programme aus dem Internet laden ließen, allerdings ist auch Java Web Start ab Java 11 nicht mehr integriert.

 

Zum Seitenanfang

1.4.4    JavaFX Zur vorigen ÜberschriftZur nächsten Überschrift

Rich Internet Applications (RIA) sind grafisch anspruchsvolle Webanwendungen, die in der Regel Daten aus dem Internet beziehen. Viele Jahre beherrschte Adobe Flash hier fast zu 100 % das Feld, und Microsoft spielte mit Silverlight zeitweilig mit. Auch Oracle wollte aus strategischen Gründen das Feld nicht den Mitbewerbern überlassen. Als sich abzeichnete, dass Applets zu unflexibel für komplexe GUI-Anwendungen und unbeliebt sind, veröffentlichte Oracle nach längerer interner Projektphase Ende 2008 die JavaFX-Plattform. JavaFX ist ein ganz neuer GUI-Stack und komplett von Swing und AWT entkoppelt.

In der ersten JavaFX-Version gehörte die Programmiersprache JavaFX Script mit dazu, doch ab Version JavaFX 2 hat Oracle die Richtung geändert: JavaFX ist nun eine pure Java-Bibliothek, und die eigenwillige Programmiersprache JavaFX Script ist Vergangenheit. Mit Skriptsprachen auf der Java-VM ist jedoch ein vergleichbares »Feeling« gewährleistet.

Eine Zeit lang sah es so aus, als ob JavaFX den GUI-Stack AWT/Swing beerben könnte. Swing ist eine GUI-Bibliothek, die schon seit Java 1.2 (1998) zum Standard gehört, doch seit 10 Jahren keine nennenswerten Features mehr bekommen hat, es werden aber regelmäßig Bugs gefixt. Doch nach dem anfänglichen Hype um JavaFX hat Oracle viele Entwickler abgezogen und JavaFX auf das Abstellgleis geschoben. Für Oracle spielen Desktop-Technologien keine Rolle mehr, weshalb sich Oracle 2018 ganz von JavaFX verabschiedet hat: Ab Java 11 ist JavaFX nicht mehr integriert. Oracle hat JavaFX in das Projekt OpenJFX (https://wiki.openjdk.java.net/display/OpenJFX/Main) überführt, wo es als Open-Source-Projekt weiterentwickelt wird – ein Mirror ist https://github.com/teamfx. Für JavaFX-Fans ist das eher ein Vorteil als ein Nachteil, denn eine Entkopplung ermöglicht eine flexiblere Weiterentwicklung; OpenJFX ist dann ein Modul wie jedes andere auch.

 


Ihre Meinung?

Wie hat Ihnen das Openbook gefallen? Wir freuen uns immer über Ihre Rückmeldung. Schreiben Sie uns gerne Ihr Feedback als E-Mail an kommunikation@rheinwerk-verlag.de

<< zurück
 Zum Rheinwerk-Shop
Zum Rheinwerk-Shop: Java ist auch eine Insel Java ist auch eine Insel

Jetzt Buch bestellen


 Buchempfehlungen
Zum Rheinwerk-Shop: Captain CiaoCiao erobert Java

Captain CiaoCiao erobert Java




Zum Rheinwerk-Shop: Java SE 9 Standard-Bibliothek

Java SE 9 Standard-Bibliothek




Zum Rheinwerk-Shop: Algorithmen in Java

Algorithmen in Java




Zum Rheinwerk-Shop: Objektorientierte Programmierung

Objektorientierte Programmierung




 Lieferung
Versandkostenfrei bestellen in Deutschland, Österreich und in die Schweiz

InfoInfo



 

 


Copyright © Rheinwerk Verlag GmbH 2021

Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das Openbook denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt.

Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.

 

[Rheinwerk Computing]



Rheinwerk Verlag GmbH, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, service@rheinwerk-verlag.de



Cookie-Einstellungen ändern