{"id":237,"date":"2024-01-26T23:47:02","date_gmt":"2024-01-26T22:47:02","guid":{"rendered":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/?p=237"},"modified":"2024-02-23T23:50:00","modified_gmt":"2024-02-23T22:50:00","slug":"verbesserungen-am-process-api-in-java-9","status":"publish","type":"post","link":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/?p=237","title":{"rendered":"Verbesserungen am Process-API in Java 9"},"content":{"rendered":"\n<p>Java 9 brachte eine Reihe von Verbesserungen und neuen Funktionen mit sich, darunter auch signifikante Aktualisierungen am Process-API. Das Process-API ist entscheidend f\u00fcr die Interaktion mit externen Prozessen aus Java-Anwendungen heraus. Die Verbesserungen in Java 9 zielen darauf ab, die Kontrolle \u00fcber externe Prozesse zu erleichtern, die Leistung zu optimieren und die Sicherheit zu verbessern.<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Erweiterte Steuerung mit <code>ProcessHandle<\/code><\/strong> Eine der wichtigsten Verbesserungen in Java 9 ist die Einf\u00fchrung der <code>ProcessHandle<\/code>-Klasse. Diese Klasse stellt eine umfassendere und flexiblere M\u00f6glichkeit zur Steuerung von Prozessen bereit. Statt nur die Prozess-ID zu erhalten, erm\u00f6glicht <code>ProcessHandle<\/code> den Zugriff auf eine Vielzahl von Informationen \u00fcber einen laufenden Prozess.<\/li>\n<\/ol>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-1\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">   ProcessHandle processHandle = ProcessHandle.current();\n   System.out.println(<span class=\"hljs-string\">\"PID: \"<\/span> + processHandle.pid());\n   System.out.println(<span class=\"hljs-string\">\"Befehl: \"<\/span> + processHandle.info().command().orElse(<span class=\"hljs-string\">\"N\/A\"<\/span>));\n   System.out.println(<span class=\"hljs-string\">\"Startzeit: \"<\/span> + processHandle.info().startInstant().orElse(<span class=\"hljs-literal\">null<\/span>));<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-1\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Mit dieser Erweiterung k\u00f6nnen Entwickler jetzt detailliertere Informationen \u00fcber laufende Prozesse abrufen und verwalten.<\/p>\n\n\n\n<ol class=\"wp-block-list\" start=\"2\">\n<li><strong>Reaktive Verarbeitung mit <code>onExit<\/code><\/strong> Java 9 erm\u00f6glicht es, auf den Abschluss eines Prozesses reaktiv zu reagieren, indem die Methode <code>onExit<\/code> der <code>ProcessHandle<\/code>-Klasse verwendet wird. Dies vereinfacht die Implementierung von Anwendungen, die auf den Abschluss von externen Prozessen warten m\u00fcssen.<\/li>\n<\/ol>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-2\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">   ProcessBuilder processBuilder = <span class=\"hljs-keyword\">new<\/span> ProcessBuilder(<span class=\"hljs-string\">\"my-command\"<\/span>);\n   Process process = processBuilder.start();\n\n   ProcessHandle processHandle = process.toHandle();\n   processHandle.onExit().whenComplete((ph, ex) -&gt; {\n       System.out.println(<span class=\"hljs-string\">\"Prozess beendet. Exit-Code: \"<\/span> + ph.exitValue());\n   });<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-2\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Durch diese reaktive Herangehensweise k\u00f6nnen Entwickler besser mit der Asynchronit\u00e4t von Prozessabschl\u00fcssen umgehen.<\/p>\n\n\n\n<ol class=\"wp-block-list\" start=\"3\">\n<li><strong>Einfacher Zugriff auf Prozessinformationen<\/strong> Die <code>ProcessHandle<\/code>-Klasse bietet auch eine verbesserte M\u00f6glichkeit, auf Prozessinformationen zuzugreifen, ohne zus\u00e4tzliche externe Bibliotheken verwenden zu m\u00fcssen. Dies erleichtert die Entwicklung von plattformunabh\u00e4ngigem Code, da die Funktionalit\u00e4ten direkt in das Java-API integriert sind.<\/li>\n<\/ol>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-3\" data-shcb-language-name=\"CSS\" data-shcb-language-slug=\"css\"><span><code class=\"hljs language-css\">   <span class=\"hljs-selector-tag\">ProcessHandle<\/span><span class=\"hljs-selector-class\">.allProcesses<\/span>()\n               <span class=\"hljs-selector-class\">.filter<\/span>(<span class=\"hljs-selector-tag\">ph<\/span> <span class=\"hljs-selector-tag\">-<\/span>&gt; <span class=\"hljs-selector-tag\">ph<\/span><span class=\"hljs-selector-class\">.info<\/span>()<span class=\"hljs-selector-class\">.command<\/span>()<span class=\"hljs-selector-class\">.orElse<\/span>(\"\")<span class=\"hljs-selector-class\">.contains<\/span>(\"<span class=\"hljs-selector-tag\">meinProzess<\/span>\"))\n               <span class=\"hljs-selector-class\">.forEach<\/span>(<span class=\"hljs-selector-tag\">ph<\/span> <span class=\"hljs-selector-tag\">-<\/span>&gt; <span class=\"hljs-selector-tag\">System<\/span><span class=\"hljs-selector-class\">.out<\/span><span class=\"hljs-selector-class\">.println<\/span>(\"<span class=\"hljs-selector-tag\">Prozess<\/span> <span class=\"hljs-selector-tag\">gefunden<\/span>: \" + <span class=\"hljs-selector-tag\">ph<\/span><span class=\"hljs-selector-class\">.pid<\/span>()));<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-3\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">CSS<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">css<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Diese Verbesserungen machen es einfacher, Prozesse zu \u00fcberwachen, zu steuern und mit ihnen zu interagieren, ohne auf externe Hilfsmittel angewiesen zu sein.<\/p>\n\n\n\n<ol class=\"wp-block-list\" start=\"4\">\n<li><strong>Bessere Ressourcenkontrolle mit <code>destroyForcibly<\/code><\/strong> Die Methode <code>destroyForcibly<\/code> erm\u00f6glicht ein aggressiveres Beenden von Prozessen. Dies kann n\u00fctzlich sein, wenn ein Prozess nicht auf herk\u00f6mmliche Weise beendet werden kann.<\/li>\n<\/ol>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-4\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">   ProcessBuilder processBuilder = <span class=\"hljs-keyword\">new<\/span> ProcessBuilder(<span class=\"hljs-string\">\"my-command\"<\/span>);\n   Process process = processBuilder.start();\n\n   ProcessHandle processHandle = process.toHandle();\n   processHandle.destroyForcibly();<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-4\"><span class=\"shcb-language__label\">Code-Sprache:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Diese Methode gibt dem Betriebssystem den Auftrag, den Prozess sofort zu beenden, ohne auf eine ordnungsgem\u00e4\u00dfe Beendigung zu warten.<\/p>\n\n\n\n<ol class=\"wp-block-list\" start=\"5\">\n<li><strong>Verbesserte Leistung und Ressourcenmanagement<\/strong> Java 9 f\u00fchrt auch Optimierungen im Hinblick auf die Leistung und das Ressourcenmanagement bei der Ausf\u00fchrung von externen Prozessen ein. Dies f\u00fchrt zu effizienterer Nutzung von Systemressourcen und einer verbesserten Stabilit\u00e4t bei der Ausf\u00fchrung von Java-Anwendungen.<\/li>\n<\/ol>\n\n\n\n<p>Insgesamt stellen die Verbesserungen am Process-API in Java 9 eine wichtige Aktualisierung dar, die Entwicklern mehr Kontrolle und Flexibilit\u00e4t bei der Interaktion mit externen Prozessen bietet. Die Einf\u00fchrung von <code>ProcessHandle<\/code> und anderen Funktionen erleichtert die Implementierung von robusten und effizienten Anwendungen, die externe Ressourcen effektiv nutzen k\u00f6nnen.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Java 9 brachte eine Reihe von Verbesserungen und neuen Funktionen mit sich, darunter auch signifikante Aktualisierungen am Process-API. Das Process-API ist entscheidend f\u00fcr die Interaktion mit externen Prozessen aus Java-Anwendungen heraus. Die Verbesserungen in Java 9 zielen darauf ab, die Kontrolle \u00fcber externe Prozesse zu erleichtern, die Leistung zu optimieren und die Sicherheit zu verbessern. [&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-237","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\/237","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=237"}],"version-history":[{"count":1,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=\/wp\/v2\/posts\/237\/revisions"}],"predecessor-version":[{"id":238,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=\/wp\/v2\/posts\/237\/revisions\/238"}],"wp:attachment":[{"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=237"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=237"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.xn--javaeinfacherklrt-4qb.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=237"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}