当前位置: 首页 > 科技观察

即将改变软件开发的5个Java9新特性

时间:2023-03-13 16:22:45 科技观察

Java9即将改变软件开发的5个新特性最近关于Java9的消息一直很安静,不要被它愚弄了。JDK开发人员正在努力开发下一个版本,并计划在2015年12月之前完成所有功能开发。之后,它将经过严格的测试和错误修复,为定于2016年9月的全面发布做准备。今天我们有一个漂亮的对Java9的期望一目了然。如果Java8可以描述为主要是lambda、流和API更改,那么Java9就是Jigsaw、附加实用程序和内部更改。在这篇文章中,我们收集了一些我们认为是Java9中最受期待的特性——超越通常的猜测,Jigsaw项目承担了打破JRE和模块化Java核心组件的使命。以下是Java9中绝对必须知道的一些功能,其中一些功能已准备好供您在早期版本中进行修改。1.Java+REPL=jshell是的。此前我们怀疑ProjectKulla是否会在Java9中如期发布,但现在已经得到官方证实。Java的下一个版本将有一个名为jshell的新命令行工具,它将添加本机支持并以Java方式推广REPL(交互式解释器)。这意味着,如果您只想运行几行Java代码,则不必将其包装到单独的项目或方法中。哦,你可以忘记那些分号:->2+2|表达式计算为4|临时变量$1的类型为int有一些替代品,例如添加到流行的IDE和解决方案中的REPL插件,例如JavaREPLWeb控制台。但是到目前为止,还没有官方或适当的方法可以这样做。jshell已经有早期版本了,等你来试运行。2.Microbenchmarking即将到来由AlexeyShipilev开发的JavaMicrobenchmarkingHarness正在进入其发展的下一阶段,并将Java添加为官方基准测试解决方案。我们真的很喜欢在Takipi做基准测试,所以我们期待一种标准化的方法。JHM是一组用于编译、运行和分析纳米/微米/毫/宏观基准的套件。当涉及到准确的基准测试时,对结果有很大影响的能力,例如预热时间和优化,将引起极大的兴趣。当您以微秒或纳秒为单位计时时尤其如此。所以,如果你想要更准确的结果来帮助跟踪基准以做出正确的决定,JMH是你的最佳选择——它现在已经成为Java9的代名词。3.G1会成为新的默认垃圾收集器吗?我们经常听到的一个误解是Java只有一个垃圾收集器,而实际上它有四个。在Java9中,仍然有一个正在运行的提议来讨论替换Java7中引入的G1默认垃圾收集器(并行/吞吐量收集)。有关不同收集器之间差异的简要概述,请参阅本文。一般来说,G1旨在更好地支持大于4GB的堆,并且不会导致频繁的GC停顿,但当停顿确实发生时,它们往往需要更长的时间来处理。我们最近与Outbrain的性能专家HaimYadid讨论了GC的各个方面,以帮助您更多地了解各种收集器之间的不同权衡。此外,如果您想深入讨论,hotspot-dev和jdk9-dev邮件组是不错的起点。4.未来是HTTP2.0HTTP2.0官方标准在几个月前获得批准,它基于Google的SPDY算法。SPDY已经证明比HTTP1.1有巨大的速度改进,范围从11.81%到47.7%,并且它已经存在于大多数现代浏览器中。Java9将全面支持HTTP2.0,并为Java配备了全新的HTTP客户端来替代HttpURLConnection,同时实现了HTTP2.0和websockets。5.进程API得到巨大提升到目前为止,通过Java控制和管理操作系统进程的能力是有限的。例如,在早期版本的Java中,要执行诸如获取进程PID之类的简单操作,必须访问本机代码或使用某种神奇的临时解决方法。此外,您可能需要针对每个平台进行不同的实施,以确保获得正确的结果。在Java9中,除了获取LinuxPID的代码外,现在是这样获取的:publicstaticvoidmain(String[]args)throwsException{Processproc=Runtime.getRuntime().exec(newString[]{"/bin/sh""-c","echo$PPID"});if(proc.waitFor()==0){InputStreamin=proc.getInputStream();intavailable=in.available();byte[]outputBytes=newbyte[可用];in.read(outputBytes);Stringpid=newString(outputBytes);System.out.println("Yourpidis"+pid);}}转向这样的代码(也支持所有操作系统):System.out.println("你的pid是"+Process.getCurrentPid());此更新将扩展Java与操作系统交互的能力:一种直接操作PID、进程名称和状态、操作JVM线程和进程等的新方法。你不会在Java9中看到什么?我们认为两个有趣的特性将成为即将发布的Java版本的一部分——但现在我们知道它们不会出现在这个版本中。1.标准的轻量级JSONAPI在我们对350名开发人员进行的调查中,JSONAPI像Jigsaw一样被大肆宣传,但它看起来并没有发布,可能是因为资金问题。Java平台高级架构师MarkReinhold在JDK9邮件列表中写道:“这个JEP是该平台的有用补充,但从长远来看,考虑到资金因素和Oracle资助的其他功能,它并不那么重要作为其他功能。我们认为我们可能会在JDK10或更高版本中发布此JEP。”2.有个关于money和currencyAPI的消息,好像money和currencyAPI也缺少Oracle的支持。这是我们从该API的产品传播者AnatoleTresch那里得到的答案:@tkfxin目前没有。没有来自Oracle的支持。相反,我们将改进JavaEE支持,spring也将支持它–AnatoleTresch(@atsticks)2015年6月16日,我们错过了什么吗?请在下面的评论部分告诉我们。没有空闲时间?让我们看看代码何时以及为何在生产中中断。