Java9 中最受期待的 5 大新特性,你造吗?

本贴最后更新于 3549 天前,其中的信息可能已经时移世异

虽然 Java9 要等到明年才正式发布,但是现在网上已经有了各种各样的有关 Java9 新特性的文章了,今天小编也将为大家分享除了通常猜测之外的一些很值得期待的 5 个新特性。

1.Java + REPL = jshell

之前我们猜测 Kulla 项目是否会在 Java 9 中准时发布,现在已得到官方确认,Java9 中将会有称为 jshell 的新命令行工具,它会添加本地支持和以 Java 方式对 REPL(交互式解释器)进行推广。这就意味着,如果你想只运行几行 Java 代码,就不必把它包装进一个单独的工程或者方法了。

同时,你也可以忘记掉哪些分号了:

-> 2 + 2

| 表达式的值是 4

| 将临时变量 $1 的类型设为 int

还有一些像 REPL 加载项一样的替代品会增加到流行的 IDE 和解决方案中,就像 Java REPL 网页控制台。但目前为止,还没有官方的或者合适的方式来这么做。jshell 在早期的版本中已经可以用了,等着你给它来个测试运行。

2、微基准测试要来了

由 Alexey Shipilev 开发的 Java 微基准测试套件在其进化的下一阶段,将加入 Java 作为官方基准解决方案。从事 Java 开发的人,肯定都很喜欢在 Takipi 做基准,所以一套标准化的执行方式是很值得大家期待的。
JHM 是一组用来编译、运行和分析 nano/micro/milli/macro 基准的套件。当涉及到精确基准评估,对结果产生很大影响的能力将备受关注,比如预热时间和优化。当以微秒或纳秒计时的情况下尤其如此。所以,如果想要更加精确的结果来帮助跟踪基准以做出正确的决定,JMH 是最佳的选择——并且现在它已经成为 Java9 的同义词了。

3、G1 会成为新的默认垃圾收集器吗?

之前很多人对 Java 都存在一个误解:Java 只有一个垃圾收集器,而事实上它有 4 个。Java 9 中,仍有一个运行提议,关于替换由 Java 7 引入的 G1 默认垃圾收集器(并行/吞吐量收集)的讨论。通常来说,G1 被设计来更好地支持大于 4GB 的堆,并且不会造成频繁的 GC 暂停,但当暂停发生时,往往会处理更长时间。

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 线程和进程等等能力。

以上就是 Java9 中最受期待的 5 个新特性,你了解么?看到这些特性是不是觉得很兴奋,确实任何一款软件新版本发布,总是会给大家带来不一样的体验,你做好迎接 Java9 的准备了吗?

相关文章:《Java 常量使用中如何避免反模式?》 http://www.maiziedu.com/group/article/5832/

  • Java

    Java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的。Java 技术具有卓越的通用性、高效性、平台移植性和安全性。

    3201 引用 • 8216 回帖 • 2 关注

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...

推荐标签 标签

  • React

    React 是 Facebook 开源的一个用于构建 UI 的 JavaScript 库。

    192 引用 • 291 回帖 • 367 关注
  • SEO

    发布对别人有帮助的原创内容是最好的 SEO 方式。

    36 引用 • 200 回帖 • 34 关注
  • NGINX

    NGINX 是一个高性能的 HTTP 和反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器。 NGINX 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,第一个公开版本 0.1.0 发布于 2004 年 10 月 4 日。

    315 引用 • 547 回帖
  • OneDrive
    2 引用 • 4 关注
  • 分享

    有什么新发现就分享给大家吧!

    248 引用 • 1794 回帖 • 1 关注
  • 设计模式

    设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。

    201 引用 • 120 回帖
  • Node.js

    Node.js 是一个基于 Chrome JavaScript 运行时建立的平台, 用于方便地搭建响应速度快、易于扩展的网络应用。Node.js 使用事件驱动, 非阻塞 I/O 模型而得以轻量和高效。

    139 引用 • 269 回帖
  • Swift

    Swift 是苹果于 2014 年 WWDC(苹果开发者大会)发布的开发语言,可与 Objective-C 共同运行于 Mac OS 和 iOS 平台,用于搭建基于苹果平台的应用程序。

    34 引用 • 37 回帖 • 554 关注
  • Shell

    Shell 脚本与 Windows/Dos 下的批处理相似,也就是用各类命令预先放入到一个文件中,方便一次性执行的一个程序文件,主要是方便管理员进行设置或者管理用的。但是它比 Windows 下的批处理更强大,比用其他编程程序编辑的程序效率更高,因为它使用了 Linux/Unix 下的命令。

    125 引用 • 74 回帖
  • 代码片段

    代码片段分为 CSS 与 JS 两种代码,添加在 [设置 - 外观 - 代码片段] 中,这些代码会在思源笔记加载时自动执行,用于改善笔记的样式或功能。

    用户在该标签下分享代码片段时需在帖子标题前添加 [css] [js] 用于区分代码片段类型。

    191 引用 • 1359 回帖
  • 面试

    面试造航母,上班拧螺丝。多面试,少加班。

    326 引用 • 1395 回帖
  • Jenkins

    Jenkins 是一套开源的持续集成工具。它提供了非常丰富的插件,让构建、部署、自动化集成项目变得简单易用。

    54 引用 • 37 回帖
  • LeetCode

    LeetCode(力扣)是一个全球极客挚爱的高质量技术成长平台,想要学习和提升专业能力从这里开始,充足技术干货等你来啃,轻松拿下 Dream Offer!

    209 引用 • 72 回帖
  • Elasticsearch

    Elasticsearch 是一个基于 Lucene 的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于 RESTful 接口。Elasticsearch 是用 Java 开发的,并作为 Apache 许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。

    117 引用 • 99 回帖 • 196 关注
  • Ruby

    Ruby 是一种开源的面向对象程序设计的服务器端脚本语言,在 20 世纪 90 年代中期由日本的松本行弘(まつもとゆきひろ/Yukihiro Matsumoto)设计并开发。在 Ruby 社区,松本也被称为马茨(Matz)。

    7 引用 • 31 回帖 • 261 关注
  • Excel
    31 引用 • 28 回帖
  • Gzip

    gzip (GNU zip)是 GNU 自由软件的文件压缩程序。我们在 Linux 中经常会用到后缀为 .gz 的文件,它们就是 Gzip 格式的。现今已经成为互联网上使用非常普遍的一种数据压缩格式,或者说一种文件格式。

    9 引用 • 12 回帖 • 178 关注
  • 浅吟主题

    Jeffrey Chen 制作的思源笔记主题,项目仓库:https://github.com/TCOTC/Whisper

    1 引用 • 28 回帖 • 1 关注
  • Rust

    Rust 是一门赋予每个人构建可靠且高效软件能力的语言。Rust 由 Mozilla 开发,最早发布于 2014 年 9 月。

    59 引用 • 22 回帖 • 11 关注
  • JVM

    JVM(Java Virtual Machine)Java 虚拟机是一个微型操作系统,有自己的硬件构架体系,还有相应的指令系统。能够识别 Java 独特的 .class 文件(字节码),能够将这些文件中的信息读取出来,使得 Java 程序只需要生成 Java 虚拟机上的字节码后就能在不同操作系统平台上进行运行。

    180 引用 • 120 回帖 • 2 关注
  • Outlook
    1 引用 • 5 回帖 • 3 关注
  • Android

    Android 是一种以 Linux 为基础的开放源码操作系统,主要使用于便携设备。2005 年由 Google 收购注资,并拉拢多家制造商组成开放手机联盟开发改良,逐渐扩展到到平板电脑及其他领域上。

    336 引用 • 324 回帖
  • Ubuntu

    Ubuntu(友帮拓、优般图、乌班图)是一个以桌面应用为主的 Linux 操作系统,其名称来自非洲南部祖鲁语或豪萨语的“ubuntu”一词,意思是“人性”、“我的存在是因为大家的存在”,是非洲传统的一种价值观,类似华人社会的“仁爱”思想。Ubuntu 的目标在于为一般用户提供一个最新的、同时又相当稳定的主要由自由软件构建而成的操作系统。

    127 引用 • 169 回帖
  • Hadoop

    Hadoop 是由 Apache 基金会所开发的一个分布式系统基础架构。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。

    93 引用 • 122 回帖 • 618 关注
  • WebClipper

    Web Clipper 是一款浏览器剪藏扩展,它可以帮助你把网页内容剪藏到本地。

    3 引用 • 9 回帖
  • RemNote
    2 引用 • 16 回帖 • 25 关注
  • Firefox

    Mozilla Firefox 中文俗称“火狐”(正式缩写为 Fx 或 fx,非正式缩写为 FF),是一个开源的网页浏览器,使用 Gecko 排版引擎,支持多种操作系统,如 Windows、OSX 及 Linux 等。

    7 引用 • 30 回帖 • 380 关注