Java – die Neuerungen in Version 9 bis 14
eBook - ePub

Java – die Neuerungen in Version 9 bis 14

Modularisierung, Syntax- und API-Erweiterungen

Michael Inden

Partager le livre
  1. 370 pages
  2. German
  3. ePUB (adapté aux mobiles)
  4. Disponible sur iOS et Android
eBook - ePub

Java – die Neuerungen in Version 9 bis 14

Modularisierung, Syntax- und API-Erweiterungen

Michael Inden

DĂ©tails du livre
Aperçu du livre
Table des matiĂšres
Citations

À propos de ce livre

Bleiben Sie bei Java auf dem Laufenden!

  • Aktuelle Infos bis zur neuesten Java-Version
  • Vertiefen Sie Ihr Know-how durch praktische Übungen
  • Lernen Sie die wichtigen Änderungen kompakt kennen

Sie besitzen bereits solides Java-Know-how und möchten sich prĂ€gnant ĂŒber die wichtigsten Neuerungen in den Java-Versionen 9 bis 14 informieren und Ihr Wissen auf den neuesten Stand bringen? Dann ist dieses Buch genau das Richtige fĂŒr Sie. Vertiefen können Sie Ihr Wissen in diesem Buch zusĂ€tzlich durch eine Vielzahl an Übungen.


Foire aux questions

Comment puis-je résilier mon abonnement ?
Il vous suffit de vous rendre dans la section compte dans paramĂštres et de cliquer sur « RĂ©silier l’abonnement ». C’est aussi simple que cela ! Une fois que vous aurez rĂ©siliĂ© votre abonnement, il restera actif pour le reste de la pĂ©riode pour laquelle vous avez payĂ©. DĂ©couvrez-en plus ici.
Puis-je / comment puis-je télécharger des livres ?
Pour le moment, tous nos livres en format ePub adaptĂ©s aux mobiles peuvent ĂȘtre tĂ©lĂ©chargĂ©s via l’application. La plupart de nos PDF sont Ă©galement disponibles en tĂ©lĂ©chargement et les autres seront tĂ©lĂ©chargeables trĂšs prochainement. DĂ©couvrez-en plus ici.
Quelle est la différence entre les formules tarifaires ?
Les deux abonnements vous donnent un accĂšs complet Ă  la bibliothĂšque et Ă  toutes les fonctionnalitĂ©s de Perlego. Les seules diffĂ©rences sont les tarifs ainsi que la pĂ©riode d’abonnement : avec l’abonnement annuel, vous Ă©conomiserez environ 30 % par rapport Ă  12 mois d’abonnement mensuel.
Qu’est-ce que Perlego ?
Nous sommes un service d’abonnement Ă  des ouvrages universitaires en ligne, oĂč vous pouvez accĂ©der Ă  toute une bibliothĂšque pour un prix infĂ©rieur Ă  celui d’un seul livre par mois. Avec plus d’un million de livres sur plus de 1 000 sujets, nous avons ce qu’il vous faut ! DĂ©couvrez-en plus ici.
Prenez-vous en charge la synthÚse vocale ?
Recherchez le symbole Écouter sur votre prochain livre pour voir si vous pouvez l’écouter. L’outil Écouter lit le texte Ă  haute voix pour vous, en surlignant le passage qui est en cours de lecture. Vous pouvez le mettre sur pause, l’accĂ©lĂ©rer ou le ralentir. DĂ©couvrez-en plus ici.
Est-ce que Java – die Neuerungen in Version 9 bis 14 est un PDF/ePUB en ligne ?
Oui, vous pouvez accĂ©der Ă  Java – die Neuerungen in Version 9 bis 14 par Michael Inden en format PDF et/ou ePUB ainsi qu’à d’autres livres populaires dans Computer Science et Object Oriented Programming. Nous disposons de plus d’un million d’ouvrages Ă  dĂ©couvrir dans notre catalogue.

Informations

Éditeur
dpunkt.verlag
Année
2020
ISBN
9783960889793

1Einleitung

FrĂŒher wurden Java-Releases aufgrund unfertiger Features hĂ€ufiger verschoben. Um dem entgegenzuwirken, hat Oracle nach dem Erscheinen von Java 9 auf einen halbjĂ€hrlichen Releasezyklus umgestellt. Das erlaubt es, die jeweils bis zu diesem Zeitpunkt fertig implementierten FunktionalitĂ€ten zu veröffentlichen. Zwar kann diese schnelle Releasefolge eine grĂ¶ĂŸere Herausforderung fĂŒr Toolhersteller sein, fĂŒr uns als Entwickler ist es aber oftmals positiv, weil wir potenziell weniger lang auf neue Features warten mĂŒssen. Das konnte frĂŒher recht mĂŒhsam sein, wie die letzten Jahre gezeigt haben. Ein paar Gedanken dazu greift der nachfolgende Hinweiskasten auf.
Allerdings gilt das Positive vor allem fĂŒr eigene Hobbyprojekte, weil man dort mit den Neuerungen experimentieren kann und weniger durch Restriktionen eingeschrĂ€nkt ist. Im professionellen Einsatz wird man eher auf KontinuitĂ€t und die VerfĂŒgbarkeit von Security Updates setzen, weshalb in diesem Kontext vermutlich nur LTS-Versionen in Betracht kommen, um MigrationsaufwĂ€nde kalkulierbar und zeitlich besser planbar zu halten.
Hinweis: Oracles neue Releasepolitik
Bis einschließlich Java 9 wurden neue Java-Versionen immer Feature-basiert veröffentlicht. Das hatte in der Vergangenheit oftmals und mitunter auch betrĂ€chtliche Verschiebungen des geplanten Releasetermins zur Folge, wenn fĂŒr die Version wesentliche Features noch nicht fertig waren. Insbesondere deshalb verzögerten sich Java 8 und Java 9 um mehrere Monate bzw. sogar ĂŒber ein Jahr: Rund 3,5 Jahre nach dem Erscheinen von JDK 8 im MĂ€rz 2014 ging Java mit Version 9 im September 2017 an den Start. Wieder einmal musste die Java-Gemeinde auf die Veröffentlichung der Version 9 des JDKs lĂ€nger warten – es gab gleich mehrere Verschiebungen, zunĂ€chst von September 2016 auf MĂ€rz 2017, dann auf Juli 2017 und schließlich auf September 2017.
Mit einer zeitbasierten Releasestrategie möchte man derartigen Verzögerungen entgegenwirken, indem jedes halbe Jahr eine neue Java-Version veröffentlicht wird, die all jene Features enthĂ€lt, die bereits fertig sind. Alle drei Jahre ist dann eine LTS-Version (Long Term Support) geplant. Eine solche ist in etwa vergleichbar mit den frĂŒheren Major-Versionen.
Was erwartet Sie im Folgenden?
Dieses Buch gibt einen fundierten Überblick ĂŒber diverse wesentliche Erweiterungen in den JDKs 9 bis 14. Es werden unter anderem folgende Themen behandelt:
API- und SyntaxerweiterungenWir schauen uns verschiedene Änderungen an der Syntax von Java an. Neben Erweiterungen bei der @Deprecated-Annotation widmen wir uns Details zu Bezeichnern, dem Diamond Operator und vor allem gehe ich kritisch auf das Feature privater Methoden in Interfaces ein. FĂŒr Java 10 und 11 thematisiere ich die Syntaxerweiterung var als Möglichkeit zur Definition lokaler Variablen bzw. zur Verwendung in Lambdas. Im Kontext von instanceof ist es mit Java 14 möglich, kĂŒnstliche Hilfsvariablen und unschöne Casts zu vermeiden.
Kommen wir zu den APIs: In Java 9 wurden diverse APIs ergĂ€nzt oder neu eingefĂŒhrt. Auch Bestehendes, wie z. B. das Stream-API oder die Klasse Optional<T>, wurde um FunktionalitĂ€t erweitert. Neben Vereinfachungen beim Prozess-Handling, der Verarbeitung mit Optional<T> oder von Daten mit InputStreams schauen wir auf fundamentale Neuerungen im Bereich der Concurrency durch Reactive Streams. DarĂŒber hinaus enthalten Java 10 und 11 eine Vielzahl kleinerer weiterer Neuerungen. Eine grĂ¶ĂŸere Änderung ist der mit Java 11 offiziell ins JDK 11 aufgenommene HTTP/2-Support. In Java 12 wurden ein paar API-Erweiterungen integriert. Mit Java 13 finden wir zwei Previews auf SyntaxĂ€nderungen, nĂ€mlich einmal bezĂŒglich switch und zudem die sogenannten »Text Blocks«, die mehrzeilige Strings erlauben. Mit Java 14 werden die Neuerungen bei switch endlich in den Sprachstandard aufgenommen. Außerdem finden wir eine hilfreiche Neuerung zur Fehleranalyse bei NullPointerExceptions. ZusĂ€tzlich bietet Java 14 zwei Erweiterungen bei der Definition mehrzeiliger Texte. Ganz besonders interessant sind sogenannte Records, die eine extrem kompakte Schreibweise zum Deklarieren spezieller Klassen mit unverĂ€nderlichen Daten ermöglichen.
JVM-ÄnderungenIn jeweils eigenen Abschnitten beschĂ€ftigen wir uns mit Änderungen in der JVM, fĂŒr JDK 9 etwa in Bezug auf die Nummerierung von Java-Versionen oder javadoc. Zudem kann fĂŒr Quereinsteiger und Neulinge die durch das Tool jshell bereitgestellte Java-Konsole mit REPL-UnterstĂŒtzung (Read-Eval-Print-Loop) erste Experimente und Gehversuche erleichtern, ohne dafĂŒr den Compiler oder eine IDE bemĂŒhen zu mĂŒssen. Mit Java 11 kommt ein neuer Garbage Collector sowie mit dem Feature »Launch Single-File Source-Code Programs« die Möglichkeit, Java-Klassen ohne explizite vorherige Kompilierung ausfĂŒhren zu lassen und somit fĂŒr Scripting einsetzen zu können. Java 12 bietet als wesentliche Neuerung die Integration des Microbenchmark-Frameworks JMH (Java Microbenchmarking Harness).
ModularisierungDie Modularisierung adressiert zwei typische Probleme grĂ¶ĂŸerer Java-Applikationen. Zum einen ist dies die sogenannte JAR-Hell, womit gemeint ist, dass sich im CLASSPATH verschiedene JARs mit zum Teil inhaltlichen Überschneidungen (unterschiedliche Versionen mit Abweichungen in Packages oder gleiche Klassen, jedoch mit anderem Bytecode) befinden. Dabei kann allerdings nicht sichergestellt werden, wann welche Klasse aus welchem JAR eingebunden wird. Zum anderen sind als public definierte Typen beliebig von anderen Packages aus zugreifbar. Das erschwert die Kapselung. Mit JDK 9 lassen sich eigenstĂ€ndige Softwarekomponenten (Module) mit einer Sichtbarkeitssteuerung definieren. Das hat allerdings weitreichende Konsequenzen: Sofern man Module verwendet, kann man Programme mit JDK 9 nicht mehr ohne Weiteres wie gewohnt starten, wenn diese externe AbhĂ€ngigkeiten besitzen. Das liegt vor allem daran, dass AbhĂ€ngigkeiten nun beim Programmstart geprĂŒft und dazu explizit beschrieben werden mĂŒssen.
Es gibt aber einen rein auf dem CLASSPATH basierenden KompatibilitĂ€tsmodus, der ein Arbeiten wie bis einschließlich JDK 8 gewohnt ermöglicht.
Tipp: Beispiele und der KompatibilitÀtsmodus
Zum Ausprobieren verschiedener Neuerungen aus JDK 9 bis 14 werden wir kleine Beispielapplikationen in main()-Methoden erstellen. Dabei ist es fĂŒr erste Experimente und fĂŒr die Migration bestehender Anwendungen von großem Vorteil, dass man das an sich modularisierte JDK auch ohne eigene Module und ihre SichtbarkeitsbeschrĂ€nkungen betreiben kann. In diesem KompatibilitĂ€tsmodus wird wie zuvor bei Java 8 mit .class-Dateien, JARs und dem CLASSPATH gearbeitet. FĂŒr zukĂŒnftige Projekte wird man mitunter Module nutzen wollen. Das schauen wir uns in eigenen Kapiteln an.
Ausprobieren der Java-14-Beispiele
Durch die kurzen Releasezyklen werden mittlerweile einige Features als Previews der Entwicklergemeinde vorgestellt. Möchte man diese nutzen, so sind in den IDEs und Build-Tools gewisse Parametrierungen sowohl beim Kompilieren als auch beim AusfĂŒhren nötig, etwa wie im folgenden Beispiel:
java --enable-preview -cp build/libs/Java14Examples.jar \
java14.RecordExamples
Details dazu werden in Abschnitt 9.4 beschrieben.
Entdeckungsreise JDK 9 bis 14 – WĂŒnsche an die Leser
Ich wĂŒnsche allen Lesern viel Freude mit diesem Buch sowie einige neue Erkenntnisse und viel Spaß beim Experimentieren mit JDK 9 bis 14. Möge Ihnen der Umstieg auf die von Ihnen bevorzugte Java-Version und die Erstellung modularer Applikationen oder die Migration bestehender Anwendungen durch die LektĂŒre meines Buchs leichter fallen.
Wenn Sie zunÀchst eine Auffrischung Ihres Wissens zu Java 8 und seinen Neuerungen benötigen, bietet sich ein Blick in den Anhang A an.

Teil I

Neuerungen in Java 9 bis 11

2Syntaxerweiterungen in JDK 9 bis 11

In JDK 9 finden sich verschiedene kleinere Syntaxerweiterungen, die wir uns hier anschauen. Außerdem lernen wir mit var die sogenannte Local Variable Type Inference als Syntaxerweiterung in Java 10 kennen, die mit Java 11 leicht erweitert wurde.

2.1Anonyme innere Klassen und der Diamond Operator

Bei der Definition anonymer innerer Klassen konnte man den Diamond Operator bis JDK 8 leider nicht nutzen, sondern der Typ aus der Deklaration war auch bei der Definition explizit anzugeben. Praktischerweise ist es mit JDK 9 (endlich) möglich, auf diese redundante Typangabe zu verzichten. Als Beispiel dient die Definition eines Komparators mit dem Interface java.util.Comparator<T>.
B...

Table des matiĂšres