美文网首页Java
Java9新特性简介

Java9新特性简介

作者: TZX_0710 | 来源:发表于2021-06-24 09:28 被阅读0次

Java9

Java9正式发布于2017年9月21日,Java9 带来了很多重大的变化,其中最重要的改动是Java平台模块系统的引入。

Java 平台模块系统

Java平台模块系统,也就是Project Jigsaw,把模块化开发实践引入到了Java平台。在引入了模块系统中之后,JDK被重新组织成94个模块。Java应用可以通过新增的jlink工具,创建出只包含所以来的JDK模块的自定义运行镜像。这样可以减少Java运行时的环境大小。可以节省很多存储空间和内存。

集合、Stream和Optional

在集合中,Java9增加了List.of()、Set.of()、Map.of()、Map.ofEntries()等工厂发给发来创建不可变集合。

 public static void main(String[] args) {
        List.of("Hello", "World");
        Set.of("Hello", "Hello");
        Map.of("key", "value");
        Map.ofEntries(Map.entry("Nice", "Lucy"));
    }

Stream中增加了新的方法ofNullable、dropWhile、takeWhlile和iterate

   //dropWhile
        long count = Stream.of(1, 2, 13, 14).
                //删除奇数
                        dropWhile(number -> number % 2 != 0).count();
        System.out.println(count);

Collectors 中新增了filtering和filterMapping方法

        // Collectors 中增加了新的方法 filtering 和 flatMapping
        final List<Integer> result = Stream.of("a", "ab", "abc")
                //把参数映射成Integer类型  然后放入List当中
                .collect(Collectors.flatMapping(v -> v.chars().boxed(),
                        Collectors.toList()));
        result.forEach(e -> {
            System.out.println(result);
        });

Optional类新增了ifPresentOrElse、or和Stream等方法

 //Optional的ifPresentOrElse方法
  Optional.of(result).ifPresentOrElse(consumer -> System.out.println("对象不为Null"), () -> System.out.println("user对象为null"));
//Stream<Optional<T>> 
        Stream.of(Optional.of("1"),
                Optional.empty())
                //如果元素为null则不反悔
                .flatMap(Optional::stream).count();

反应式流

反应式编程的思想最近得到了广泛的流行,在Java平台上又刘翔的反应式库RxJava和Reactor。反应式流规范的出发点是提供一个带非阻塞负压的异步流处理规范,反应式规范的核心接口已经被加入到了java.util.concurrent.Flow类中

IO流新特性

InputStream当中新增了新的方法来读取和复制InputStream中包含的数据

readAllBytes 读取InputStream中的所有剩余字节

readNBytes 从InputStream 中读取指定数量的字节到数组中

transferTo 读取InputStream 中的全部字节并写入到指定的OutPutSteam中

    //一次性读取所有字节
    File file = new File("test.txt");
    InputStream inputStream = new FileInputStream(file);
    byte[] bytes = inputStream.readAllBytes();
    System.out.println(new String(bytes));
    
    //transfrTo写入到output当中去
    File outFile = new File("out.txt");
    OutputStream outputStream = new FileOutputStream(outFile);
    //一次性读取所有字节到outputStream中
    inputStream.transferTo(outputStream);
    inputStream.close();
    outputStream.close();

改进应用安全性能

Java9 新增了4个SHA-3哈希算法,SHA3-224,SHA3-256,SHA3-384和SHA3-512。另外也增加了通过java.security.SecureRandom生成使用DRBG算法的强随机数。

import org.apache.commons.codec.binary.Hex;
public class SHA3 {
    public static void main(final String[] args) throws NoSuchAlgorithmException {
        final MessageDigest instance = MessageDigest.getInstance("SHA3-224");
        final byte[] digest = instance.digest("".getBytes());
        System.out.println(Hex.encodeHexString(digest));
    }
}

接口中私有方法

在Java9中允许在接口当中使用私有方法。

ublic interface InterfaceTest {
    private String buildMessage() {
        return "Hello";
    }

    void sayHi(final String message);

    default void sayHi() {
        sayHi(buildMessage());
    }
}

相关文章

  • Java9新特性简介

    Java9 Java9正式发布于2017年9月21日,Java9 带来了很多重大的变化,其中最重要的改动是Java...

  • Java11的新特性

    Java语言特性系列 Java5的新特性 Java6的新特性 Java7的新特性 Java8的新特性 Java9的...

  • Java15的新特性

    Java语言特性系列 Java5的新特性 Java6的新特性 Java7的新特性 Java8的新特性 Java9的...

  • Java12的新特性

    Java语言特性系列 Java5的新特性 Java6的新特性 Java7的新特性 Java8的新特性 Java9的...

  • Java9 新特性官档翻译 (轻喷)

    Java9 新特性 翻译自 : https://docs.oracle.com/javase/9/whatsnew...

  • java9的新特性

    1、Java9 新特性之---目录结构 包含jdk8及以前的jdk版本,所有目录结构以及目录含义如图: 这个新特性...

  • java9新特性

    1、模块化系统:Jigsaw->Modularity 解决越来越臃肿 的java运行环境。 主要目的在于减少...

  • Java9新特性

    作者:「Rambabu Posa」,一个具有 11 年丰富开发经验的技术牛人。 英文出处:Java 9 Featu...

  • Java9新特性

    Java 9 发布于 2017 年 9 月 22 日,带来了很多新特性,其中最主要的变化是已经实现的模块化系统。接...

  • 一、java前期准备:(2)java、eclipse并写两个小程

    1、下载java8 目前最新的java9,增加了一些新的特性,在官网的首页上当然也是java9,如果想下载jdk ...

网友评论

    本文标题:Java9新特性简介

    本文链接:https://www.haomeiwen.com/subject/nkdbyltx.html