有望在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 9中的5个功能将改变您开发软件的方式(还有2个不会)相关推荐

  1. java开发用怎么软件开发_Java 9中的5个功能将改变您开发软件的方式(还有2个不会)...

    java开发用怎么软件开发 有望在Java 9中发布的最令人兴奋的功能是什么? 近期不要对Java 9相对沉默而分心.JDK提交者正在努力准备下一个版本,预计在2015年12月才完成功能的下一个版本. ...

  2. Java 8中的5个功能将改变您的编码方式

    Java 8在JVM和语言级别都包含了一些非常令人兴奋的功能. 虽然最初为该发行版设想的某些功能已扩大范围或已推出到第9版,但实际上有数十个新功能. 许多新添加的内容在编译器,JVM或帮助系统级别都进 ...

  3. java结束程序是什么语句,在Java程序中,每条功能执行语句的最后都必须用结束。...

    在Java程序中,每条功能执行语句的最后都必须用结束. 答: 分号 热继电器可以实现短路保护和过载保护 答:× 皮亚杰用表示通过作用或者操控物体和事件来发现其特点从而获取知识的人 答:建构者 品行包括 ...

  4. Java 语言中十大“坑爹”功能!

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 来源:https://www.sohu.com/a/35 ...

  5. java改变变量编码方式_Java 8中的5个功能将改变您的编码方式

    java改变变量编码方式 Java 8在JVM和语言级别都包含了一些非常令人兴奋的功能. 尽管最初为该发行版设想的某些功能已扩展到第9版,或已推出第9版,但实际上有数十个新功能. 许多新添加的内容在编 ...

  6. Java 9中的新Regex功能

    最近,我收到了Packt出版的Anubhava Srivastava提供的免费书籍" Java 9 Regular Expressions" . 这本书是一个很好的教程,它向任何想 ...

  7. 根据变量推断变量类型_11位专家参与其中:本地变量类型推断是Java 10中最大的新功能

    根据变量推断变量类型 " Java 10不仅是对Java 9的简单稳定性和性能修复," 尽管Java 9是六个月前才发布的( 仅! ),这意味着对Java 10的期望可能不是很高, ...

  8. 使用comm在java程序中管理本地端口[回钦波:高级软件工程师]

    使用comm在java程序中管理本地端口 最近在做电信项目,遇到一些专业性的问题,在这里和大家一起分享下comm包下的类及如何使用等问题: 在java程序中,为了实现同本地系统的硬件端口(RS-232 ...

  9. 如何在JAVA项目中实现反向代理功能?

    前言(什么是反向代理) 反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet ...

最新文章

  1. asp.net mvc 与 asp.net结合(asp.net mvc 技巧)
  2. 有哪些老鸟程序员知道而新手不知道的小技巧?自我感受
  3. Openwrt WIFI探针开发【一】
  4. Error: no such column
  5. javafx透明边框_JavaFX技巧6:使用透明颜色
  6. node-包管理工具 npm
  7. dsp 正弦波信号发生器matlab程序,基于Matlab/DSP Builder多波形信号发生器的设计
  8. 【数位dp】HDOJ2089:不要62( 真· 数位dp入门题目)
  9. mysql补丁不成功,SQLServer2000SP4补丁打不上的解决办法_MySQL
  10. java计算机毕业设计高考填报信息系统源码+数据库+系统+lw文档+部署
  11. Fate Decision剧本
  12. 大学的第一堂必修课:军训
  13. 在日软件工程师的远虑近忧
  14. android 键盘语音输入,讯飞输入法Android V7.0.4265 长按空格键开启语音输入
  15. 计算机网络自顶向下-套接字编程作业
  16. linux grub error17,Ubuntu Grub 问题:提示 error17 修复方法
  17. Windows Project2016如何增加加班工时。
  18. css 唤醒qq聊天,移动端唤起QQ聊天
  19. (flutter)黑苹果系统 Xcode iOS flutter 跑通真机模拟器 此oc clover 彼oc swift
  20. c# 计算圆锥的体积_用C#如何编写程序计算球,圆柱和圆锥的表面积和体积? 用C#编写方法并通过方法...

热门文章

  1. 处理目录的常用命令---Linux
  2. arm linux gcc 编译,Linux arm-linux-gcc交叉编译环境配置
  3. Error:(1, 10) java: 需要class, interface或enum
  4. 部署kafka kafka的service容器和zookeeper kafka客户端 Elasticsearch的客户端
  5. centos7离线安装oracle11g,CentOS 7.5离线安装Oracle 11gR2
  6. html5实现3d翻页效果,利用css3 3d transform制作超逼真翻书效果
  7. linux 命令 抛后台,在后台运行Linux命令的方法
  8. thinking-in-java(11) 持有对象
  9. jvm(6)-java类文件结构(字节码文件)
  10. java 轻量级文件数据库_Java:如何创建轻量级数据库微服务