Ganz frisch zu Java 25 erscheint diese Woche die fünfte Auflage meines Java-Grundkurses. Das Buch richtet sich an Schüler, Studentinnen und alle, die gerade Java lernen oder von einer anderen Programmiersprache auf Java umsteigen möchten. Im handlichen Taschenbuchformat fasst das Buch die Syntax von Java in seiner aktuellen Form zusammen. Das Buch berücksichtigt dabei die vielen in Java 25 endlich verfügbaren Vereinfachungen, die gerade Einsteigern sehr entgegenkommen.
100 Beispiele und Übungen (inkl. Lösungen!) führen von der Theorie in die Praxis. Alle Beispieldateien liegen in zwei Versionen vor, einmal aktuell zu Java 25 und einmal für ältere Java-Installationen, wie sie gerade im Schulbetrieb leider üblich sind.
Seit einigen Jahren erscheinen halbjährlich neue Java-Versionen. In dieser Versionsflut stechen die LTS-Versionen (Long Term Support) heraus. Zuletzt war das Java 11, aktuell ist es Java 17. Eine gute Gelegenheit also, einen Blick auf die Neuerungen von Java der letzten Jahre zu werfen.
Mit diesem Artikel starte ich eine Serie von Update-Artikel zu meinem Kotlin-Buch. In diesem ersten Beitrag geht es um die Neuerungen in Kotlin von Version 1.4 bis zur aktuellen Version 1.5.20.
Seit JavaFX aus dem JDK entfernt wurde, ist es nicht mehr ganz einfach, ein minimalistisches JavaFX-Programm zu entwickeln. In der 3. Auflage meines Java-Grundkurses zeige ich, wie Sie die JavaFX-Bibliotheken manuell herunterladen und dann in ein IntelliJ-Projekt integrieren (Veränderung der Modulabhängigkeiten und der VM-Optionen). Das funktioniert, die resultierenden IntelliJ-Projekte laufen wegen der starr eingestellten Pfade aber nicht auf einem anderen Rechner. Besser ist es, das Build-Tool Gradle zu Hilfe zu nehmen.
Die Überschrift sagt schon alles: In diesem Beitrag geht es darum, Programme mit Java 11 und JavaFX in der IntelliJ IDEA unter Linux zu entwickeln. Als Testumgebung dienten Ubuntu 18.10 und Fedora 29. (Unter Ubuntu 18.04 stehen noch immer keine offiziellen Java-11-Pakete zur Verfügung.)
Die IntelliJ IDEA mit einem Java-11-Projekt samt JavaFX unter Ubuntu 18.10
Der Schritt von Java SE 8 hin zu Java SE 9 hat beachtliche dreieinhalb Jahre gedauert. Der Weg war steinig, und das hatte nicht nur mit der eigentlichen Implementierung der Neuerungen zu tun. Bis Java SE 9 im September 2017 endlich ausgeliefert werden konnte, mussten auch viele (firmen-)politische Differenzen ausgeräumt werden.
Aktuelle und zukünftige Java-Versionsnummern
Nun haben wir also Java 9. Allmählich lernen IDEs wie Eclipse richtig mit den Neuerungen umzugehen, insbesondere also mit dem neuen Modulsystem. Langsam kommt Java 9 auf Rechnern in den Labors von Schulen und Universitäten bzw. in den Entwicklungsabteilungen von Firmen an. Noch langsamer etabliert sich OpenJDK 9 unter Linux. (In Ubuntu 17.10 ist OpenJDK 9 nur in der universe-Paketquelle, in Fedora 27 gilt OpenJDK 9 als Technology Preview. Bei den Enterprise-Distributionen ist ohnedies das Warten auf die nächste Version angesagt, oder natürlich die manuelle Installation abseits der offiziellen Paketquellen.)
Viele Programmiersprachen kennen bequeme Kurzschreibweisen zur Initialisierung von Maps, Sets etc. In Java gibt’s das leider nur für Arrays (also int [] x = {1, 2, 3}). Daran wird auch Java 9 nichts ändern, JEP186 wurde vorerst verworfen. Aber immerhin wurde stattdessen JEP269 implementiert. Dieser Erweiterungsvorschlag sieht die neue Methoden List.of, Set.of und Map.of vor, mit denen sich Collections recht komfortabel initialisieren lassen. (JEP = JDK Enhancement Proposals).
Die für Einsteiger vermutlich nützlichste Neuerung in Java 9 besteht darin, dass es nun einen Kommandointerpreter gibt, die Java-Shell (JShell). In der Fachsprache heißt dieses Feature auch Read-Eval-Print-Loop (REPL). In anderen Sprachen wie Python oder Swift ist ein derartiger Kommandointerpreter ja schon seit jeher eine Selbstverständlichkeit.
Gerade habe ich eine Anfrage zu meiner Übungsaufgabe aus meinem Java-Grundkurs erhalten. Ich habe in der Lösung eine for-Schleife mit einer int-Variable vorgeschlagen. Warum nicht eine double-Variable als Schleifenvariable verwenden?
Der Eclipse-Installer von Eclipse 4.5 Mars speichert in eclipse/java-mars/eclipse/eclipse.ini unglücklicherweise den absoluten Pfad zur gerade aktuellen Java-Installation, in meinem Fall (unter Fedora 22) z.B.:
Wird nun Java im Rahmen eines Updates auf eine neue Version aktualisiert, findet Eclipse Java nicht mehr und zeigt beim Startversuch nur eine Fehlermeldung an.
Diese Website verwendet Cookies nur in minimalem Ausmaß. Es gibt weder Werbung noch Analytic-Funktionen.
Funktional
Immer aktiv
Die technische Speicherung oder der Zugang ist unbedingt erforderlich für den rechtmäßigen Zweck, die Nutzung eines bestimmten Dienstes zu ermöglichen, der vom Teilnehmer oder Nutzer ausdrücklich gewünscht wird, oder für den alleinigen Zweck, die Übertragung einer Nachricht über ein elektronisches Kommunikationsnetz durchzuführen.
Vorlieben
Die technische Speicherung oder der Zugriff ist für den rechtmäßigen Zweck der Speicherung von Präferenzen erforderlich, die nicht vom Abonnenten oder Benutzer angefordert wurden.
Statistiken
Die technische Speicherung oder der Zugriff, der ausschließlich zu statistischen Zwecken erfolgt.Die technische Speicherung oder der Zugriff, der ausschließlich zu anonymen statistischen Zwecken verwendet wird. Ohne eine Vorladung, die freiwillige Zustimmung deines Internetdienstanbieters oder zusätzliche Aufzeichnungen von Dritten können die zu diesem Zweck gespeicherten oder abgerufenen Informationen allein in der Regel nicht dazu verwendet werden, dich zu identifizieren.
Marketing
Die technische Speicherung oder der Zugriff ist erforderlich, um Nutzerprofile zu erstellen, um Werbung zu versenden oder um den Nutzer auf einer Website oder über mehrere Websites hinweg zu ähnlichen Marketingzwecken zu verfolgen.