{"id":231,"date":"2024-02-11T23:32:12","date_gmt":"2024-02-11T22:32:12","guid":{"rendered":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/?p=231"},"modified":"2024-02-23T23:37:05","modified_gmt":"2024-02-23T22:37:05","slug":"die-evolution-des-completablefuture-neuerungen-ab-java-9","status":"publish","type":"post","link":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/?p=231","title":{"rendered":"Die Evolution des CompletableFuture: Neuerungen ab Java 9"},"content":{"rendered":"\n<p><br>Java 9 brachte eine Vielzahl von Neuerungen und Verbesserungen mit sich, und die CompletableFuture-Klasse wurde dabei nicht \u00fcbersehen. Die CompletableFuture-Klasse ist ein leistungsstarkes Werkzeug f\u00fcr asynchrone Programmierung in Java, das es erm\u00f6glicht, nebenl\u00e4ufige Operationen effizient zu verwalten. In diesem Artikel werden wir einen detaillierten Blick auf die Neuerungen ab Java 9 in der CompletableFuture-Klasse werfen und verstehen, wie diese Verbesserungen die Entwicklung von robusten und effizienten asynchronen Anwendungen erleichtern<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Einf\u00fchrung in CompletableFuture:<\/strong><br>Bevor wir uns den Neuerungen ab Java 9 widmen, ist es wichtig, die Grundlagen der CompletableFuture-Klasse zu verstehen. CompletableFuture ist Teil des java.util.concurrent-Pakets und erweitert die Funktionalit\u00e4ten von Future und Promise, indem es eine umfassende API f\u00fcr asynchrone Programmierung in Java bereitstellt. Mithilfe von CompletableFuture k\u00f6nnen Entwickler komplexe asynchrone Abl\u00e4ufe definieren und steuern.<\/li>\n\n\n\n<li><strong>Verbesserungen in der API-Struktur:<\/strong><br>Mit Java 9 wurden einige Verbesserungen in der API-Struktur von CompletableFuture eingef\u00fchrt. Dazu geh\u00f6rt die Einf\u00fchrung neuer Methoden, die die Lesbarkeit des Codes verbessern und die Entwickler dabei unterst\u00fctzen, h\u00e4ufig auftretende Muster in der asynchronen Programmierung zu vereinfachen. Ein Beispiel hierf\u00fcr ist die <code>orTimeout<\/code>-Methode, die es erm\u00f6glicht, einen Timeout f\u00fcr eine CompletableFuture festzulegen. Diese Methode gibt eine neue CompletableFuture zur\u00fcck, die entweder das Ergebnis der urspr\u00fcnglichen CompletableFuture enth\u00e4lt oder nach Ablauf des Timeouts mit einer Timeout-Ausnahme abbricht. Dadurch k\u00f6nnen Entwickler einfach Timeout-Szenarien in ihre asynchronen Abl\u00e4ufe integrieren.<\/li>\n<\/ol>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-1\" data-shcb-language-name=\"HTML, XML\" data-shcb-language-slug=\"xml\"><span><code class=\"hljs language-xml\">   CompletableFuture<span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">T<\/span>&gt;<\/span> orTimeout(long timeout, TimeUnit unit);<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-1\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">HTML, XML<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">xml<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<ol class=\"wp-block-list\" start=\"3\">\n<li><strong>Verbesserte Unterst\u00fctzung f\u00fcr Subkomposition:<\/strong><br>Ein weiteres signifikantes Update in Java 9 betrifft die Verbesserungen bei der Unterst\u00fctzung von Subkomposition in CompletableFuture. Subkomposition bezieht sich auf die F\u00e4higkeit, Teile einer asynchronen Berechnung zu isolieren und separate CompletableFuture-Instanzen f\u00fcr diese Teile zu erstellen. Dies erleichtert das Erstellen und Verwalten komplexer asynchroner Workflows erheblich. Mit den neuen Methoden <code>completeOnTimeout<\/code> und <code>orTimeout<\/code> k\u00f6nnen Entwickler Teile eines asynchronen Ablaufs definieren, die nach Ablauf einer bestimmten Zeit mit einem vordefinierten Wert abgeschlossen werden sollen. Dies erm\u00f6glicht die Implementierung von Zeitbeschr\u00e4nkungen f\u00fcr Teile eines asynchronen Ablaufs, was besonders in rechenintensiven oder netzwerkbasierten Anwendungen n\u00fctzlich ist.<\/li>\n\n\n\n<li><strong>Reaktive Programmierung mit CompletableFuture:<\/strong><br>Java 9 hat auch die Integration von CompletableFuture mit dem Reactive Streams API vorangetrieben. Reactive Streams bieten eine standardisierte M\u00f6glichkeit zur Verarbeitung von asynchronen Datenstr\u00f6men mit nicht blockierender R\u00fcckdrucksteuerung. Die CompletableFuture-Klasse in Java 9 bietet nun Methoden wie <code>toCompletableFuture<\/code> und <code>fromPublisher<\/code>, die die nahtlose Integration von CompletableFuture mit Reactive Streams erleichtern. Durch diese Integration wird es einfacher, asynchrone Datenstr\u00f6me zu verwalten und zu verarbeiten, insbesondere in Umgebungen, in denen reaktive Programmierungstechniken bevorzugt werden.<\/li>\n\n\n\n<li><strong>Verbesserte Fehlerbehandlung:<\/strong><br>Fehlerbehandlung ist ein kritischer Aspekt jeder robusten Anwendung, und Java 9 hat die Fehlerbehandlung in CompletableFuture weiter verbessert. Die Methode <code>handle<\/code> wurde um die <code>handleAsync<\/code>&#8211; und <code>handleAsync<\/code>-Overloads erweitert, um eine verbesserte Kontrolle \u00fcber die Ausf\u00fchrung der Fehlerbehandlung zu erm\u00f6glichen. Diese Methoden erlauben es, eine Funktion zur Verarbeitung von Ergebnissen oder Fehlern asynchron auszuf\u00fchren und bieten damit mehr Flexibilit\u00e4t bei der Fehlerbehandlung in asynchronen Abl\u00e4ufen.<\/li>\n<\/ol>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-2\" data-shcb-language-name=\"HTML, XML\" data-shcb-language-slug=\"xml\"><span><code class=\"hljs language-xml\">   CompletableFuture<span class=\"hljs-tag\">&lt;<span class=\"hljs-name\">T<\/span>&gt;<\/span> handleAsync(BiFunction<span class=\"php\"><span class=\"hljs-meta\">&lt;?<\/span> super T, Throwable, ? extends U&gt; fn);<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-2\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">HTML, XML<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">xml<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Java 9 hat die CompletableFuture-Klasse mit einer Vielzahl von Verbesserungen und neuen Funktionen ausgestattet, die die Entwicklung von asynchronen Anwendungen in Java erleichtern. Von der erweiterten API-Struktur \u00fcber die verbesserte Unterst\u00fctzung f\u00fcr Subkomposition bis hin zur Integration mit Reactive Streams bietet die CompletableFuture-Klasse nun leistungsstarke Mittel, um komplexe asynchrone Abl\u00e4ufe zu definieren und zu steuern. Entwickler k\u00f6nnen von den neuen Features profitieren, um effiziente und fehlertolerante asynchrone Anwendungen zu erstellen.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Java 9 brachte eine Vielzahl von Neuerungen und Verbesserungen mit sich, und die CompletableFuture-Klasse wurde dabei nicht \u00fcbersehen. Die CompletableFuture-Klasse ist ein leistungsstarkes Werkzeug f\u00fcr asynchrone Programmierung in Java, das es erm\u00f6glicht, nebenl\u00e4ufige Operationen effizient zu verwalten. In diesem Artikel werden wir einen detaillierten Blick auf die Neuerungen ab Java 9 in der CompletableFuture-Klasse werfen [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[],"class_list":["post-231","post","type-post","status-publish","format-standard","hentry","category-plain_java"],"_links":{"self":[{"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=\/wp\/v2\/posts\/231","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=231"}],"version-history":[{"count":1,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=\/wp\/v2\/posts\/231\/revisions"}],"predecessor-version":[{"id":232,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=\/wp\/v2\/posts\/231\/revisions\/232"}],"wp:attachment":[{"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=231"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=231"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=231"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}