5个Java9新特性你知道了吗?

标签: 编程技术 java9 新特征 | 发表时间:2015-10-08 17:45 | 作者:techug
出处:http://www.techug.com

今天我们已经对Java 9中所期待的特性有了一个很清晰的图景。如果Java 8可以被描述为主要是lambdas表达式、streams和API变化的话,那么Java 9就是关于Jigsaw、额外的实用工具和内部的变化。在这篇文章中,收集了一些我们认为是Java 9中最期待的特性——除了通常的猜测之外,Jigsaw项目,承担了打破JRE并对Java核心组件模块化的使命。

这里有一些特性是Java 9中绝对必要了解的,其中的一些已经在早期的发布版本中为你捣鼓做好了准备。

   1.Java + REPL = jshell

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

噢,你可以忘掉那些分号了:

      -> 2 + 2
| 表达式的值是4
| 将临时变量$1的类型设为int

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

   2、微基准测试要来了

由Alexey Shipilev开发的Java微基准测试套件在其进化的下一阶段,并加入Java作为官方基准解决方案。我们真的很喜欢在Takipi做基准,所以一套标准化的执行方式是我们期待的。

JHM是一组用来编译、运行和分析nano/micro/milli/macro基准的套件。当涉及到精确基准评估,对结果产生很大影响的能力将备受关注,比如预热时间和优化。当你以微秒或纳秒计时的情况下尤其如此。所以,如果你想要更加精确的结果来帮助跟踪基准以做出正确的决定,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标准是几个月之前被批准的,基于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线程和进程等等能力。

   你不会在Java 9中见到什么?

我们以为两个有趣的特性会作为即将到来的Java发布版本中的一部分——但现在我们知道它们将不会出现在这次发布的版本。

   1、一个标准的轻量级JSON API

在我们进行的一项对350名开发人员的调查中,JSON API就像Jigsaw一样被大肆宣传,但看起来它好像没在发布版本中,原因可能是资金问题。Mark Reinhold,Java平台的首席架构师,在JDK 9的邮件列表中写到:

“这个JEP对于平台来说是个有益的补充,但长远来看,考虑到资金的因素以及Oracle资助的其它特性,它并不如其它特性一样重要。我们考虑可能在JDK 10或者之后的版本再发布这个JEP。”

   2、金钱和货币API

有一条新闻,似乎看起来金钱和货币API也缺少Oracle的支持。这是我们从Anatole Tresch那里得到的答案,这个API的产品推广师:

@tkfxin 目前不会。从Oracle那里没得到支持。取而代之的,我们将提高Java EE支持并且spring也将支持它 :)

– Anatole Tresch (@atsticks) 2015年6月16日

相关 [java9 知道] 推荐:

5个Java9新特性你知道了吗?

- - 程序师
今天我们已经对Java 9中所期待的特性有了一个很清晰的图景. 如果Java 8可以被描述为主要是lambdas表达式、streams和API变化的话,那么Java 9就是关于Jigsaw、额外的实用工具和内部的变化. 在这篇文章中,收集了一些我们认为是Java 9中最期待的特性——除了通常的猜测之外,Jigsaw项目,承担了打破JRE并对Java核心组件模块化的使命.

百度知道XSS漏洞

- - 博客园_首页
事情的起因是我一同学在百度知道上看到一个很奇怪的,正文带有连接的提问( 这里),正常来说,这种情况是不可能出现的. 我条件反射的想到了:XSS漏洞. 通过查看源代码,我马上发现了问题的根源:未结束的标签.
帮我写一个能提取

[译]你不知道的NodeJS

- - 掘金前端
更新:这篇文章现在是我的书《Node.js进阶》的一部分. 在 jscomplete.com/node-beyond…中阅读此内容的更新版本以及有关Node.js的更多信息. 在今年的Forward.js会议(关于JavaScript的会议)上,我分享了题为“你不知道的NodeJS”的演讲. 在那次演讲中,我向观众提出了一系列有关Nodejs运行时的问题,大多数有技术背景的观众无法回答其中大多数问题.

如何知道你是谁?

- - 改变从这里开始 - 壹心理
作者:Psychouse. 来源:微信公众号:北京心舍(ID:psychouse). 一项研究表明,拥有更好的了解自己的能力可以帮助你做出有效的决定并实现目标. 碧昂斯说:“知道你是谁,是人类拥有的最伟大的智慧. 知道你的目标,你爱什么,你的道德,你的需求,你的标准,你不能容忍什么,你愿意为什么而死.

那些你知道和不知道的千纸鹤

- Brandon - DIY - 果壳网
千纸鹤是一件经典折纸作品,理工男现在就要利用几何知识打破经典,开拓创新. 申明:本文所述作品(除最后一只翻转鹤)均属原创,如有雷同,纯属英雄所见略同. 你将需要的工具和材料有:. 10   一刀纸鹤(非原创). 12   DIYer签到处 12.1   大手牵小手. 正方形是用来折纸的一种完美形状,想要创新,首先就要突破正方形的限制.

社交搜索——百度知道,不如你我知道

- - 微博之博
本篇文章作者王德超,程序员一枚,创业在路上,微博@哀木涕啊. 当你想订购一台吐司机的时候,你会去哪儿寻找参考信息. 我想大概有许多人像我一样,习惯了使用Google 、百度或者Bing. 但他们真的会给我们最需要的答案吗. 作为一名使用微博3年以上的老围脖,突然发现自己在搜索答案时出现了另一个习惯.

推荐技术随谈,你知道的或者不知道的

- - IT瘾-dev
大家好,今天想和大家讨论下相关推荐技术通用的特点及在实践中的改进点,这也是我们团队在研发实践中一些经验总结. 首先,推荐解决主要问题是给用户在没有行为的新闻上预测一个偏好概率,然后通过概率值由高到低排序推荐给用户. 如图简单地表达了用户在新闻上的稀疏行为矩阵,通过我们会基于用户的画像特征、内容特征、上下文场景特征、用户对新闻的各种操作行为特征等对内容候选集进行排序打分.

关于xargs,你可能不知道的

- Caiwangqin - 黑客志
如果你曾经花了许多时间在Unix命令行上,那么或许你已经见过xargs了,如果你还没听过xargs,那就先让我来解释下,xargs是一个从标准输入或许参数并执行命令的程序. 我常常见到将find和xargs组合使用以对find返回的文件列表执行某些操作. 更新:根据Twitter和hacker news上的反馈,find是个很强大的命令,它自己也有-exec和-delete这样的参数可以用来执行命令和删除文件,尽管如此,如果你对find的这些选项不太了解,或是想不起来-exec那古怪的语法,那么你还是可以使用更为简单的xargs,并且xargs在效率上也更胜一筹.

我知道你为什么拖延

- Newton - 心事鉴定组 - 果壳网
经验说:事情越欠越多,都是因为拖延症. 实验说:拖延症是因为你总是无法战胜眼前的欲望. 我们在网上下载了一大堆电影、纪录片,用途却是拿来塞满硬盘,从没看过;我们买回一大堆书,准备读完这些名家大著、哲学经典什么的来充实自己,可实际上这些书跟着你回家后,放在书架上就再也没拿下来过,日复一日地积累灰尘. 尽管如此,我们仍然乐此不疲地下载一部又一部的电影,买一本又一本的书,以为未来的某天,自己会良心发现把它们看完.

我知道这个梗很lag,但……

- wyt - 工口堂
分类: acg | 评论数: 16.