有望在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. 从源码分析Hystrix工作机制
  2. 001_jQuery简介
  3. Eclipse上搭建SSH(struts-2.2.3 + spring-2.5.6 + hibernate-3.6.8)框架-附源码
  4. hive怎样决定reducer个数
  5. 使用animate实现页面过度_很多人都在使用的开源CSS动画效果库——animate.css
  6. java构造函数内部调用_具有内部类构造函数参数的Java Reflection奇数
  7. linux 未找到wifi适配器,无线 - 重新启动后找不到WI-FI适配器
  8. Android基础控件之Button的基本使用
  9. Springboot04整合Druid
  10. 敏捷开发生态系统系列之三:计划跟踪II(需求优先级排序-迭代期内无变更-团队承诺)...
  11. iTerm2 快捷键收集
  12. [转] WPF TextBox控件中文字实现垂直居中
  13. android viewholder继承,Android RecyclerView中的ViewHolder
  14. 【IE插件】--如何制作?
  15. MQTT服务器Mosquitto的使用及配置过程中的一些问题和解决方法
  16. 条件概率和全概率公式
  17. WAIC 2020 微软论坛精彩全回顾!
  18. 微信支付服务器system error,微信企业支付--遇到不明确结果的err_code:SYSTEMERROR,NOT_FOUND...
  19. 历史的1000+篇文章总结
  20. warning no match for this type name:xxx.xxx.xxx [Xlint:invalidAbsoluteTypeName]

热门文章

  1. 你喜欢什么样的课堂?
  2. java中随机生成26个字母组合的随机验证码
  3. 指纹识别软件安装包下载
  4. 使用Servlet上传多张图片——Service层(ProductInfoService.java和ProductInfoServiceImpl)
  5. 查询空值中的注意事项
  6. removeAll throws java.lang.UnsupportedOperationException
  7. 使用腾讯云发送短信API接口实现(完整流程)
  8. 困难是成功路上的垫脚石_Java是开发的垫脚石。 学习吧!
  9. cuba开发_使用CUBA进行开发–与Spring相比有很大的转变?
  10. mfc 弹簧_弹簧和线程:异步