日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

在JShell中尝试Java9 HTTP客户端和Process API

發布時間:2023/12/3 javascript 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 在JShell中尝试Java9 HTTP客户端和Process API 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

這篇文章繼續了My My Java 9 Features博客文章中對Java9功能的探索。 在這里,我們用在Java9 HTTP / 2客戶端和進程API試驗JShell

HTTP / 2客戶端

HTTP / 2客戶端是Java9中的孵化器項目。 這意味著該API尚未最終確定,因此在將來的版本中仍有一定的更改范圍。 從Java9到Java10的最明顯變化是將其從jdk.incubator.httpclient模塊移動到“ http.client”模塊,以及相關的軟件包名稱更改。 使用API??時應牢記這一點。

HTTP / 2不能直接在jshell中正常工作,但是它可以讓我們看到Java Platform Modularity System(JPMS)的運行。 我們只需使用–add-modules –將httpclient模塊傳遞到jshell中

C:\jdk9TestGround>jshell -v --add-modules jdk.incubator.httpclient

然后,我們導入http庫–

jshell> import jdk.incubator.http.*;

現在,我們可以從jshell調用網站–

jshell> HttpClient httpClient = HttpClient.newHttpClient(); jshell> HttpRequest httpRequest = HttpRequest.newBuilder().uri(new URI("https://www.javabullets.com")).GET().build(); jshell> HttpResponse<String> httpResponse = httpClient.send(httpRequest, HttpResponse.BodyHandler.asString()); jshell> System.out.println(httpResponse.statusCode()); jshell> System.out.println(httpResponse.body());

最有趣的功能是使用Builder模式創建HTTP請求。 這在HttpRequest.Builder中定義,可用于構造更復雜的HttpClient請求,包括身份驗證。

語法與Http / 2兼容的Jetty HttpClient和okhttp相似。 絕對比Java中的舊方法簡單得多。

此API的其他有用功能是–

  • 異步請求–由于它是非阻塞的,因此比上面的示例更有用。 這是通過HttpRequest.sendAsync方法完成的
  • WebSockets –通過具有自己的WebSocket.Builder的WebSocket類創建。 我將在另一篇文章中介紹它,因為它比在jshell中更清晰

流程API

流程API簡化了Java中對流程信息的訪問。

考慮一下我當前的Jshell流程的細節–

jshell> System.out.println(ProcessHandle.current().pid()); 8580jshell> System.out.println(ProcessHandle.current().info()); [user: Optional[NEW-EJ0JTJ5I9B9\javabullets], cmd: C:\Program Files\Java\jdk-9\bin\java.exe, startTime: Optional[2017-10-09T19:41:21.743Z], totalTime: Optional[PT4.625S]]jshell> System.out.println(ProcessHandle.current().parent()); Optional[6592]

我們還可以訪問系統進程和ID –

jshell> ProcessHandle.allProcesses().forEach(p -> System.out.println(p.pid())); 8276 9720 8012 480

或資訊–

jshell> ProcessHandle.allProcesses().forEach(p -> System.out.println(p.info()));[user: Optional[NEW-EJ0JTJ5I9B9\javabullets], cmd: C:\Program Files (x86)\PFU\ScanSnap\Update\ScanSnapUpdater.exe, startTime: Optional[2017-10-09T18:28:42.812Z], totalTime: Optional[PT0.78125S]] [user: Optional[NEW-EJ0JTJ5I9B9\javabullets], cmd: C:\Windows\explorer.exe, startTime: Optional[2017-10-09T18:35:08.397Z], totalTime: Optional[PT25.234375S]] [user: Optional[NEW-EJ0JTJ5I9B9\javabullets], cmd: C:\Windows\System32\cmd.exe, startTime: Optional[2017-10-09T18:36:11.522Z], totalTime: Optional[PT0.078125S]]

現在我們可以訪問可以殺死選擇性過程的進程-讓我們殺死記事本-

jshell> Process p = new ProcessBuilder("C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe").start(); p ==> Process[pid=9644, exitValue="not exited"]jshell> p.destroy();

如果destroy不能終止進程,我們還可以選擇destroyForce。

上面的示例顯示了Process API對于啟動,終止和監視進程有多么有用和簡單。 它使我們擺脫了依賴第三方庫提供過程控制的麻煩

翻譯自: https://www.javacodegeeks.com/2017/10/experimenting-java9-http-client-process-api-jshell.html

總結

以上是生活随笔為你收集整理的在JShell中尝试Java9 HTTP客户端和Process API的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。