阅读更多

3顶
1踩

编程语言

转载新闻 即将改变软件开发的5个Java 9新特性

2015-07-21 16:16 by 副主编 mengyidan1988 评论(6) 有5731人浏览
预计发布的Java 9中,最令人兴奋的特性是什么?

有关Java9的消息最近显得有些沉寂,不要被它迷惑了。JDK开发者正在努力朝着下一个版本迈进,计划2015年12月前完成所有功能开发。之后,它会经历严格测试和bug修复以准备它的全面上市,按计划会在2016年9月发布。

今天我们已经对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 Microbenchmarking Harness)正在其进化的下一阶段,并加入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日

我们遗漏了什么吗?请在下面的评论区告诉我们吧。没有空闲时间?来看看何时以及为何在产品中代码会出现失败中断。

原文链接: takipi 翻译: ImportNew.com - eluq
译文链接: [urlhttp://www.importnew.com/16280.html]http://www.importnew.com/16280.html[/url]
来自: ImportNew
3
1
评论 共 6 条 请登录后发表评论
6 楼 windshome 2015-08-21 16:58
戢_时光 写道
windshome 写道
就这点破东西,Java完蛋了



 

完谁的蛋??

Java 很谦虚  不会去玩别家的蛋的  你放心好了。




我是说如果只是这点东西的话Java就完蛋了,其实Java一代代的革新包含了很多很多的内容。
5 楼 戢_时光 2015-08-21 08:50
windshome 写道
就这点破东西,Java完蛋了



 

完谁的蛋??

Java 很谦虚  不会去玩别家的蛋的  你放心好了。


4 楼 windshome 2015-08-19 16:17
就这点破东西,Java完蛋了
3 楼 shuhen2011 2015-08-18 13:59
新特性不错,不过要说改变软件开发,都不怕风大闪了舌头么?又不是所有人都用Java
2 楼 sepac 2015-07-22 16:34
往下面去点,更好!目标内存基址
1 楼 戢_时光 2015-07-22 09:19
    

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • 高薪程序员&面试题精讲系列25之你了解哪些Java新特性?你们公司使用哪个JDK版本?Java11了解过吗?

    你了解哪些Java(JDK)的新特性? Java8的新特性你知道哪些? Java11的新特性你知道哪些? ...... 2. 题目剖析 这道题目,其实回答起来并没有特别大的难度,主要是考察我们对Java新特性的了解程度。那么面试官为...

  • 即将改变软件开发的5个Java9新特性

     我们已经对Java 9中所期待的特性有了一个很清晰的图景。如果Java 8可以被描述为主要是lambdas表达式、streams和API变化的话,那么Java 9是关于Jigsaw、额外的实用工具和内部的变化。在这篇文章中,收集了一些我们...

  • Java8 - Java17新特性说明

    Java8 - Java17新特性说明

  • Java基础知识面试题(2020最新版)

    文章目录Java概述何为编程什么是Javajdk1.5之后的三大版本JVM、JRE和JDK的关系什么是跨平台性?原理是什么Java语言有哪些特点什么是字节码?采用字节码的最大好处是什么什么是Java程序的主类?应用程序和小程序的...

  • 掌握P5级Java面试技巧

    HashMap底层原理,扩容机制,jdk8以后会使用红黑树优化?红黑树和二叉平衡树的区别,红黑树和B树,B+树的区别,Mysql二大引擎索引底层实现,HashMap在多线程环境中为何出错?...当我们向HashMap中存放一个元素(k1,v1)

  • Java三大特性之多态

    Java有三大特性:封装、继承和多态。 一、多态的概念 多态指程序中定义的引用变量所指向的具体类型和通过该引用变量发出的方法调用在编程时并不确定,而是在程序运行期间才确定,即一个引用变量倒底会指向哪个类的...

  • 4.6 W 字总结!Java 11—Java 17特性详解

    点击关注公众号,回复“1024”获取2TB学习资源!接上一篇:7.8 W 字总结!Java 8—Java 10 特性详解Java 11 特性详解基于嵌套的访问控制与 Java 语言中现有的...

  • 高级java开发必问面试题

    比如:实现一个模块功能 面向过程会将任务拆解成一系列的步骤(函数),1,书写技术文档 2,排期 3,代码编写 4,测试 5,上线 面向对象会拆除技术架构师 java开发工程师 测试工程师 运维工程师 架构师:调研 技术...

  • Java面试题及答案整理( 2022最新版,持续更新)

    发现网上很多Java面试题都没有答案,所以花了很长时间搜集整理出来了这套Java面试题大全,希望对大家有帮助哈~Java面试永远是程序员迈向成功的第一个门槛,想要面试成功,各种面试题的洗礼是必不可少的,下面就来看...

  • 800+ 道 Java面试题及答案整理(2022最新版)

    本题库还会不断更新,涉及的类目还会更广,预计会更新上 1000 道 Java 开发会遇到的主流面试题,关注微信公众号:清朝程序猿,回复:面试,可以获取最新版。、多线程、IO、分布式、Spring全家桶、MyBatis、Dubbo、...

  • JAVA程序设计实战(1-9章)

    Java基础编程实战

  • 软件设计师-JAVA程序设计语言

    Java语言简介: 背景 1991年 ,SUN MicroSystem公司的 Jame Gosling、 Bill Joe等人 ,在电 视、控制烤面包箱等家用消费类电子产品上进行交互式操作的开发,开始时是使用C++语言,但是,后来发现C++在某些方面并不能...

  • Java面试题大全(2021版)

    发现网上很多Java面试题都没有答案,所以花了很长时间搜集整理出来了这套Java面试题大全,希望对大家有帮助哈~ 本套Java面试题大全,全的不能再全,哈哈~ 一、Java基础知识面试题 1、Java概述 ①. 何为编程 ...

  • Java Agent

    ​ JavaAgent就是Java探针,是一个JVM插件,常用于代码热...这个技术对大多数的同学来说可能有点陌生,但是对Java软件开发人员来说肯定都多多少少接触过,只是相对其原理,我们更多的关注在以它为核心的工具使用上。

  • 【最详细】最新最全Java基础面试题(91道)

    【最详细】最新最全Java基础面试题(91道)

  • 某Java大佬在地表最强Java企业(阿里)面试总结

    面试题真的是博大精深,也通过这个面试题学到了很多东西,很多笔者也不是很懂,如有描述错误的地方还望大佬赐教 HashMap和Hashtable的区别 Hashtable继承自Dictionary类,而HashMap继承自AbstractMap类。但二者都...

  • 多图表实现员工满意度调查数据分析python

    员工满意度是指员工对于工作环境、待遇、职业发展和组织管理等方面的满意程度。它是衡量员工对工作的整体感受和情绪状态的重要指标。

  • 2020届软件工程本科毕业生毕业设计项目.zip

    2020届软件工程本科毕业生毕业设计项目

  • 基于stm32平衡小车

    平衡小车 基于stm32 平衡小车 基于stm32 平衡小车 基于stm32

  • c语言火车票订票管理源码.rar

    c语言火车票订票管理源码.rar

Global site tag (gtag.js) - Google Analytics