java开发用怎么软件开发
有望在Java 9中发布的最令人兴奋的功能是什么?
近期不要对Java 9相对沉默而分心。JDK提交者正在努力准备下一个版本,预计在2015年12月才完成功能的下一个版本。此后,它将通过严格的测试和错误修复了将其准备于一般可用性的计划,该计划于2016年9月发布 。
今天,我们对Java 9的功能有了一个清晰的了解。如果可以将Java 8描述为lambda,流和API更改的主要版本,那么Java 9就是关于Jigsaw ,额外的实用程序和更改的内容。 在这篇文章中,我们收集了一些我们认为是针对Java 9的最令人兴奋的功能–除了通常的怀疑之外,Jigsaw项目承担了分解JRE并将Java核心组件引入模块化的使命。 。
这里有一些Java 9绝对必须了解的功能,其中一些已经在早期发行版中为您准备好了。
1. Java + REPL = jshell
是。 以前,我们怀疑Kulla项目能否在Java 9之前发布,但现在它是正式的。 Java的下一发行版将具有一个名为jshell的新命令行工具,该工具将添加本机支持并普及Java模式以实现REPL(Read-Eval-Print-Loop)。 举例来说,这意味着如果您想自己运行几行Java,则无需将其全部包装在单独的项目或方法中。 哦,分号–您可以忘记那些:
-> 2 + 2
| Expression value is: 4
| assigned to temporary variable $1 of type int
有一些替代方法,例如流行的IDE的REPL插件和Java REPL Web控制台等解决方案,但是到目前为止,还没有正式且正确的方法来做到这一点。 jshell已在早期发行版中提供,并等待您对其进行测试。
2.微基准测试即将到来
Alexey Shipilev的Java Microbenchmarking Harness( JMH )正在迈向其发展的下一步,并加入Java作为官方基准测试解决方案 。 我们真的很喜欢在塔基皮(Takipi) 进行 基准测试 ,因此我们希望能有一种标准化的基准测试方法。
JMH是用于构建,运行和分析nano / micro / milli / macro基准测试的Java工具。 对于准确的基准测试,诸如预热时间和优化之类的因素可能会对结果产生重大影响。 尤其是当您下降到微秒和纳秒时。 因此,如果您想获得最准确的结果来帮助您按照基准测试做出正确的决定,那么今天的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 RFC在Google的SPDY算法的基础上才获得批准。 SPDY在HTTP 1.1上已显示出极大的速度改进,范围在11.81%到47.7%之间,并且其实现已存在于大多数现代浏览器中。
Java 9将完全支持 HTTP 2.0,并具有一个新的Java HTTP客户端,它将取代HttpURLConnection,并实现HTTP 2.0和websocket。
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(“您的pid是” + Process.getCurrentPid());
此更新将扩展Java与操作系统进行交互的能力:处理PID,进程名称和状态的新直接方法,以及枚举JVM和进程等的能力。
您在Java 9中看不到什么?
我们假定有两个有趣的功能将成为即将发布的Java版本的一部分-但现在我们知道这次将跳过它们。
1.标准化的轻量级JSON API
在我们与350位开发人员进行的一项调查中,JSON API像Jigsaw一样被大肆宣传,但是由于资金问题,它似乎没有成功。 Java平台的首席架构师Mark Reinhold在JDK 9邮件列表中:
“这个JEP将是对该平台的有用补充,但是,从总体上看,它不如Oracle为JDK 9提供资金或正在考虑为其他功能提供的其他功能那么重要。我们可能会重新考虑针对JDK 10或JDK 9的JEP。更高版本。 ”
2.货币和货币API
在其他消息中,看起来好像预期的Money and Currency API也缺少Oracle支持。 这是我们从API规范负责人Anatole Tresch得到的答案:
@tkfxin目前没有。 Oracle没有这样做的支持。 相反,我们将改善对ee的支持,而spring也会对其提供支持:)
— Anatole Tresch(@atsticks) 2015年6月16日
翻译自: https://www.javacodegeeks.com/2015/06/5-features-in-java-9-that-will-change-how-you-develop-software-and-2-that-wont.html
java开发用怎么软件开发