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

  今天我们已经对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代码,你不必把它包装进一个单独的工程或者方法。

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

  1

  2

  3-> 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的代码,现在都像这样来获取:

  1

  2

  3

  4

  5

  6

  7

  8

  9

  10

  11publicstaticvoidmain(String[] args)throwsException {

  Process proc = Runtime.getRuntime().exec(newString[]{"/bin/sh","-c","echo $PPID"});

  if(proc.waitFor() ==0) {

  InputStream in = proc.getInputStream();

  intavailable = in.available();

  byte[] outputBytes =newbyte[available];

  in.read(outputBytes);

  String pid =newString(outputBytes);

  System.out.println("Your pid is "+ pid);

  }

  }

  转向像这样的代码(同样也支持所有的操作系统):

  1System.out.println("Your pid is"+ Process.getCurrentPid());

  这一更新将扩展Java与操作系统交互的能力:全新的直接操作PID、进程名和状态的方法,操作JVM线程和进程等等能力。

  http://mt.sohu.com/20160906/n467734021.shtml

  http://mt.sohu.com/20160906/n467725557.shtml

  http://mt.sohu.com/20160906/n467729919.shtml

时间: 2024-11-03 01:36:35

改变软件开发的5个Java9新特性的相关文章

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

预计发布的Java 9中,最令人兴奋的特性是什么? 有关Java9的消息最近显得有些沉寂,不要被它迷惑了.JDK开发者正在努力朝着下一个版本迈进,计划2015年12月前完成所有功能开发.之后,它会经历严格测试和bug修复以准备它的全面上市,按计划会在2016年9月发布. 今天我们已经对Java 9中所期待的特性有了一个很清晰的图景.如果Java 8可以被描述为主要是lambdas表达式.streams和API变化的话,那么Java 9就是关于Jigsaw.额外的实用工具和内部的变化.在这篇文章中

iOS 9应用开发教程之iOS 9新特性

iOS 9应用开发教程之iOS 9新特性 iOS 9开发概述 iOS 9是目前苹果公司用于苹果手机和苹果平板电脑的最新的操作系统.该操作系统于2015年6月8号(美国时间)被发布.本章将主要讲解iOS 9的新特性.以及使用Xcode 7.0如何编写一个简单的iOS 9的应用程序等内容. iOS 9新特性 在2015年6月8日即北京时间2015年6月9日的WWDC大会上,苹果公司代表讲解了很多iOS 9带来的新特性.本节将讲解一些主要的特性. Siri语音助手智能化 Siri语音助手的智能性能主要

Java9新特性

Java9前几天已经发布了,在此罗列下它的主要特性 1.Java模块系统 JDK9的核心变化就是引入了一种新的Java编程组件,也就是模块.按照Oracle的说法,它是一个可命名的.自描述的代码和数据集合.模块技术的核心目标是减少Java应用和Java核心运行时环境的大小与复杂性.为此,JDK本身进行了模块化,Oracle希望通过这种方式提升性能.安全性和可维护性. 为了支持Java 9的模块,引入一种新的模块化JAR文件形式,按照这种形式会在其根目录中包含一个module-info.class

Java9新特性之——JShell

java9已经在北京时间9月22日正式发布,开发者可以在oracle jdk官网上下载到最新的jdk9.jdk9和jdk8中的新特性不同:jdk8中的stream和lambda表达式能够让开发者非常快速和直观地感受到新版本的功能特性,而java9中的关键更新--模块化,相比而言不能让开发者有直观的感受. 今天首先带来的是java9中直观的新特性:JShell.关于更多jdk9特性的介绍可以参照infoq的一篇文章:https://mp.weixin.qq.com/s/Onj9ZJYbV5pLTA

hybrid app开发中用到的html5新特性localStorage、sessionStorage和websql database

最近在项目中进行hybrid app开发,项目中有大量的js代码运行在android设备上.使用到了很多HTML5的新特性,之前没有遇到过,不了解,这里记录下增加点前端的知识.混合式app开发中,经常需要使用缓存功能,比如你在页面表单控件上输入了数据,你希望下次退出app再次进来的时候还能看到这些数据:比如你的项目中有保存草稿的功能,只是先将数据临时存储在本地,以后再提及到服务器.这就需要我们将数据持久地存储在本地,这就需要用到HTML5中的本地化存储解决方案.本文主要介绍下sessionSto

java9新特性-6-多版本兼容jar包

1.官方Feature 238: Multi-Release JAR Files 2.使用说明 当一个新版本的Java出现的时候,你的库用户要花费数年时间才会切换到这个新的版本.这就意味着库得去向后兼容你想要支持的最老的Java版本(许多情况下就是Java 6 或者 Java7).这实际上意味着未来的很长一段时间,你都不能在库中运用Java 9所提供的新特性.幸运的是,多版本兼容jar功能能让你创建仅在特定版本的Java环境中运行库程序选择使用的class版本. 举例1: jar root  

大数据技术之_04_Hadoop学习_02_HDFS_DataNode(面试开发重点)+HDFS 2.X新特性

第6章 DataNode(面试开发重点)6.1 DataNode工作机制6.2 数据完整性6.3 掉线时限参数设置6.4 服役新数据节点6.5 退役旧数据节点6.5.1 添加白名单6.5.2 黑名单退役6.6 Datanode多目录配置第7章 HDFS 2.X新特性7.1 集群间数据拷贝7.2 小文件存档7.3 回收站7.4 快照管理 第6章 DataNode(面试开发重点) 6.1 DataNode工作机制 DataNode工作机制,如下图所示. 1)一个数据块在DataNode上以文件形式存

java9新特性-3-JDK 和 JRE 的改变

1.JDK 与 JRE 的关系 JDK :JavaDevelopmentKit (Java开发工具包) JRE :JavaRuntimeEnvironment (Java运行环境) 说明: JDK = JRE + 开发工具集(例如Javac编译工具等) JRE = JVM + Java SE标准类库 2. JDK 8 的目录结构 说明: bin 目录包含命令行开发和调试工具,如javac,jar和javadoc. include目录包含在编译本地代码时使用的C/C++头文件 lib 目录包含JD

java9新特性-4-模块化系统: Jigsaw与Modularity

1.官方Feature 200: The Modular JDK 201: Modular Source Code 220: Modular Run-Time Images 260: Encapsulate Most Internal APIs 261:  Module System 282: jlink: The Java Linker   2.产生背景及意义 谈到 Java 9 大家往往第一个想到的就是 Jigsaw 项目.众所周知,Java 已经发展超过 20 年(95 年最初发布),Ja