process

这篇文章继续了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不能杀死进程,我们还可以选择destroyForceible。

上面的示例显示了Process API对于启动,终止和监视进程有多么有用和简单。 它使我们摆脱了依赖第三方库提供过程控制的麻烦

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

process

process_在JShell中尝试Java9 HTTP客户端和Process API相关推荐

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

    这篇文章继续了My My Java 9 Features博客文章中对Java9功能的探索. 在这里,我们用在Java9 HTTP / 2客户端和进程API试验JShell HTTP / 2客户端 HT ...

  2. 在.Net Core 3.0中尝试新的System.Text.Json API

    .NET Core 3.0提供了一个名为System.Text.Json的全新命名空间,它支持reader/writer,文档对象模型(DOM)和序列化程序.在此博客文章中,我将介绍它如何工作以及如何 ...

  3. java rest客户端_Java中的简单REST客户端

    java rest客户端 如今,大多数用于与某些服务器通信的移动应用程序都使用REST服务. 这些服务也是JavaScript或jQuery的常用惯例. 现在,我知道在Java中为REST服务创建客户 ...

  4. Java中的简单REST客户端

    如今,大多数用于与某些服务器通信的移动应用程序都使用REST服务. 这些服务也是与JavaScript或jQuery一起使用的常见做法. 现在,我知道在Java中为REST服务创建客户端的2种方法,在 ...

  5. 使用MVVM尝试开发Github客户端及对编程的一些思考

    本文已授权 微信公众号 玉刚说 (@任玉刚)独家发布. 本文中我将尝试分享我个人 搭建个人MVVM项目 的过程中的一些心得和踩坑经历,以及在这过程中目前对 编程本质 的一些个人理解和感悟,特此分享以期 ...

  6. 微服务接入oauth2_SpringCloud微服务实战系列(十九)Ouath2在真实场景中的应用之客户端接入(第一种写法)...

    SpringCloud微服务实战系列(十九)Ouath2在真实场景中的应用之客户端接入(第一种写法) 一.概述 在<SpringCloud微服务实战系列(十七)Ouath2在真实场景中的应用之资 ...

  7. java 多个监听_java中监听一个客户端怎么做?监听多个怎么做?

    随着时代的不断进步与发展,人们对于科学技术的使用也越来越普遍化.人们都开始自己学习编程语言以更好的适应时代的发展.今天就来为大家介绍一下,java中监听一个客户端怎么做?监听多个怎么做?一起来看看吧. ...

  8. js读取服务器txt文件,ZK中使用JS读取客户端txt文件内容问题

    最近写一个需求时遇到一个问题,用户需要通过点击一个按钮直接读取他自己电脑上D盘的一个txt文件内容显示到页面,因为项目现在是用ZK写的.我对于ZK也是刚刚了解不就,很多都还不是很熟.起初我是想用io流 ...

  9. 将Visual Studio Code设置为jshell中的默认编辑器

    Java Shell( jshell )是用于在Java中学习和进行原型制作的交互式工具. 它是在Java 9中引入的,从那以后,我在演示过程中偶尔使用它来进行一些快速原型制作,或者只是为了验证Jav ...

最新文章

  1. 执行高性能任务的强大桌面计算机是,用于高性能任务的强大的桌面计算机是一个______。...
  2. nohub 将程序永久运行下去
  3. java工程中的.classpathaaaaaaaaaaaaaaaa转载
  4. 上传图片被防火墙拦截_Murus Pro Suite——防火墙软件
  5. GeoServer之styles定制
  6. 跨网段远程调试vs_如何提高后台服务应用问题的排查效率?日志 VS 远程调试
  7. Leetcode--523. 连续的子数组和
  8. python基础教程廖雪峰云-Python 爬虫:把廖雪峰的教程转换成 PDF 电子书
  9. 从 0 开始机器学习 - 机器学习系统的设计与误差分析
  10. 关于更换PC版浏览器推荐
  11. PostgreSQL如何拼接字符串
  12. 复元奇方饮_谁研制的?治疗什疾病?作用与功效?
  13. QEMU同步脏页原理
  14. 如何把苹果文件APP里的Word文档传到手机备忘录
  15. 虚拟主播甜妹小给给戏腔演绎国风佳作,引爆抖音直播浪潮
  16. Transformer8
  17. [内附完整源码和文档] 基于Android的手机音乐播放器的设计与实现
  18. mybatis实战:一、mybatis入门(配置、一些问题的解决)
  19. 单片机两大延时方法总结
  20. xampp mysql远程连接_远程访问xampp

热门文章

  1. Android TV PAI功能的接口实现
  2. 【2021牛客多校2】F-Girlfriend 计算几何
  3. M201: MongoDB Performance chapter 1 Introduction学习记录
  4. iphone13升级ios16好不好 流畅度有没有改变
  5. 揭秘中国第一个自主产权的“云计算”平台
  6. 当网络虚拟化不足以解决问题时
  7. Python爬虫-猫眼电影《冰雪奇缘2》评论数据的可视化分析
  8. 下周要去女朋友家,第一次去应该给未来老丈人带什么礼物合适,要轻奢、时尚有独特性的,求推荐?
  9. mysql show variables 详解_show variables 详解
  10. YXcms之利用phpMyAdmin拿shell