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

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

虽然 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 技术具有卓越的通用性、高效性、平台移植性和安全性。

    3165 引用 • 8206 回帖

相关帖子

欢迎来到这里!

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

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

推荐标签 标签

  • 小薇

    小薇是一个用 Java 写的 QQ 聊天机器人 Web 服务,可以用于社群互动。

    由于 Smart QQ 从 2019 年 1 月 1 日起停止服务,所以该项目也已经停止维护了!

    34 引用 • 467 回帖 • 689 关注
  • CAP

    CAP 指的是在一个分布式系统中, Consistency(一致性)、 Availability(可用性)、Partition tolerance(分区容错性),三者不可兼得。

    11 引用 • 5 回帖 • 553 关注
  • Maven

    Maven 是基于项目对象模型(POM)、通过一小段描述信息来管理项目的构建、报告和文档的软件项目管理工具。

    185 引用 • 318 回帖 • 352 关注
  • Facebook

    Facebook 是一个联系朋友的社交工具。大家可以通过它和朋友、同事、同学以及周围的人保持互动交流,分享无限上传的图片,发布链接和视频,更可以增进对朋友的了解。

    4 引用 • 15 回帖 • 448 关注
  • flomo

    flomo 是新一代 「卡片笔记」 ,专注在碎片化时代,促进你的记录,帮你积累更多知识资产。

    3 引用 • 74 回帖 • 2 关注
  • 设计模式

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

    198 引用 • 120 回帖
  • Python

    Python 是一种面向对象、直译式电脑编程语言,具有近二十年的发展历史,成熟且稳定。它包含了一组完善而且容易理解的标准库,能够轻松完成很多常见的任务。它的语法简捷和清晰,尽量使用无异义的英语单词,与其它大多数程序设计语言使用大括号不一样,它使用缩进来定义语句块。

    534 引用 • 671 回帖
  • 架构

    我们平时所说的“架构”主要是指软件架构,这是有关软件整体结构与组件的抽象描述,用于指导软件系统各个方面的设计。另外还有“业务架构”、“网络架构”、“硬件架构”等细分领域。

    139 引用 • 441 回帖
  • TGIF

    Thank God It's Friday! 感谢老天,总算到星期五啦!

    284 引用 • 4481 回帖 • 652 关注
  • Sublime

    Sublime Text 是一款可以用来写代码、写文章的文本编辑器。支持代码高亮、自动完成,还支持通过插件进行扩展。

    10 引用 • 5 回帖 • 1 关注
  • Google

    Google(Google Inc.,NASDAQ:GOOG)是一家美国上市公司(公有股份公司),于 1998 年 9 月 7 日以私有股份公司的形式创立,设计并管理一个互联网搜索引擎。Google 公司的总部称作“Googleplex”,它位于加利福尼亚山景城。Google 目前被公认为是全球规模最大的搜索引擎,它提供了简单易用的免费服务。不作恶(Don't be evil)是谷歌公司的一项非正式的公司口号。

    49 引用 • 192 回帖
  • Openfire

    Openfire 是开源的、基于可拓展通讯和表示协议 (XMPP)、采用 Java 编程语言开发的实时协作服务器。Openfire 的效率很高,单台服务器可支持上万并发用户。

    6 引用 • 7 回帖 • 87 关注
  • 小说

    小说是以刻画人物形象为中心,通过完整的故事情节和环境描写来反映社会生活的文学体裁。

    28 引用 • 108 回帖 • 3 关注
  • Kubernetes

    Kubernetes 是 Google 开源的一个容器编排引擎,它支持自动化部署、大规模可伸缩、应用容器化管理。

    108 引用 • 54 回帖
  • Vditor

    Vditor 是一款浏览器端的 Markdown 编辑器,支持所见即所得、即时渲染(类似 Typora)和分屏预览模式。它使用 TypeScript 实现,支持原生 JavaScript、Vue、React 和 Angular。

    308 引用 • 1657 回帖 • 1 关注
  • PostgreSQL

    PostgreSQL 是一款功能强大的企业级数据库系统,在 BSD 开源许可证下发布。

    21 引用 • 22 回帖
  • gRpc
    10 引用 • 8 回帖 • 48 关注
  • 机器学习

    机器学习(Machine Learning)是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。

    76 引用 • 37 回帖
  • IPFS

    IPFS(InterPlanetary File System,星际文件系统)是永久的、去中心化保存和共享文件的方法,这是一种内容可寻址、版本化、点对点超媒体的分布式协议。请浏览 IPFS 入门笔记了解更多细节。

    20 引用 • 245 回帖 • 232 关注
  • 招聘

    哪里都缺人,哪里都不缺人。

    189 引用 • 1056 回帖
  • Sillot

    Sillot (汐洛)孵化自思源笔记,致力于服务智慧新彖乄,具有彖乄驱动、极致优雅、开发者友好的特点
    Github 地址:https://github.com/Hi-Windom/Sillot

    12 引用 • 26 关注
  • 开源

    Open Source, Open Mind, Open Sight, Open Future!

    393 引用 • 3380 回帖 • 1 关注
  • 锤子科技

    锤子科技(Smartisan)成立于 2012 年 5 月,是一家制造移动互联网终端设备的公司,公司的使命是用完美主义的工匠精神,打造用户体验一流的数码消费类产品(智能手机为主),改善人们的生活质量。

    4 引用 • 31 回帖 • 6 关注
  • Chrome

    Chrome 又称 Google 浏览器,是一个由谷歌公司开发的网页浏览器。该浏览器是基于其他开源软件所编写,包括 WebKit,目标是提升稳定性、速度和安全性,并创造出简单且有效率的使用者界面。

    60 引用 • 287 回帖
  • Swagger

    Swagger 是一款非常流行的 API 开发工具,它遵循 OpenAPI Specification(这是一种通用的、和编程语言无关的 API 描述规范)。Swagger 贯穿整个 API 生命周期,如 API 的设计、编写文档、测试和部署。

    26 引用 • 35 回帖 • 7 关注
  • 生活

    生活是指人类生存过程中的各项活动的总和,范畴较广,一般指为幸福的意义而存在。生活实际上是对人生的一种诠释。生活包括人类在社会中与自己息息相关的日常活动和心理影射。

    228 引用 • 1450 回帖
  • SQLite

    SQLite 是一个进程内的库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。SQLite 是全世界使用最为广泛的数据库引擎。

    4 引用 • 7 回帖 • 1 关注