1. Java + REPL = jshell
下一个版本的Java将使用一个名为jshell的新命令行工具,它将添加本机支持(native support)并将Java方式推广到REPL(Read-Eval-Print-Loop)。 意思是说,如果你想要自己运行几行Java代码,你不必将它包装在一个单独的项目或方法中。 甚至像分号(;)这些你都可以忘记,像下面这样:
-> 2 + 2 | Expression value is: 4 | assigned to temporary variable $1 of type int
2. 微基准(Microbenchmarks)来了
由Alexey Shipilev开发的Java微基准测试套件在其进化的下一阶段,并加入Java作为官方基准解决方案。我们真的很喜欢在Takipi做基准,所以一套标准化的执行方式是我们期待的。
JHM是一组用来编译,运行和分析nano / micro / milli / macro基准的套件。当涉及到精确基准评估,对结果产生很大影响的能力将备受关注,比如预热时间和优化。 你以微秒或纳秒计时的情况下尤其如此。所以,如果你想要更加精确的结果来帮助跟踪基准以做出正确的决定,JMH是你的最佳选择 - 并且现在它已经成为Java 9的同义词了。
3. G1会成为新的默认垃圾收集器吗?
我们经常听说的一个误解是:Java只有一个垃圾收集器,而事实上它有4个.Java 9中,仍有一个运行提议,关于替换由Java 7引入的G1默认垃圾收集器(并行/吞吐量收集)的讨论。不同收集器之间的差别,你可以网上查下,我们也会的后面的某一期进行说明。
通常来说,G1被设计来更好地支持大于4GB的堆,并且不会造成频繁的GC暂停,但当暂停发生时,往往会处理更长时间。最近我们和Outbrain的性能专家Haim Yadid讨论了关于GC的方方面面,来帮助你了解更多各收集器之间不同的权衡。同样,如果你想要深入了解相关讨论,那么hotspot-dev和jdk9-dev的邮件组是个开始学习不错的地方。
4,未来是HTTP 2.0
官方的HTTP 2.0标准是几个月之前被批准的,基于Google的SPDY算法构建SPDY已经展示了相对HTTP 1.1巨大的速度提升,范围在11.81%到47.7%之间,并且它已经存在于大多数现代的浏览器中.Java 9将全面支持HTTP 2.0,并且为Java配置一个全新的HTTP客户端来替代HttpURLConnection,并且同时还实现HTTP 2.0和websockets。
5. 进程API得到了巨大的推动
到目前为止,通过Java来控制和管理作业系统进程能力有限。例如在早期版本的Java中,为了做一些简单的事情,像得到进程PID,要么访问本机代码,要么用某种神奇的临时解决方法。此外,还可能需要一个对于每个平台提供不同实现来保证你得到正确的结果。
在Java 9之前,获取Linux PID的代码,都像下面这样来获取:
public static void main(String[] args) throws Exception { Process proc = Runtime.getRuntime().exec(new String[] { "/bin/sh", "-c", "echo $PPID" }); if (proc.waitFor() == 0) { InputStream in = proc.getInputStream(); int available = in.available(); byte[] outputBytes = new byte[available]; in.read(outputBytes); String pid = new String(outputBytes); System.out.println("Your pid is " + pid); } }
转向像这样的代码(同样也支持所有的作业系统):
System.out.println("Your pid is " + Process.getCurrentPid());
这一更新将扩展Java与作业系统交互的能力:全新的直接操作PID,进程名和状态的方法,操作JVM线程和进程等等能力。
本文分享自 ImportSource 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!