jdk 1.8的新特性_JDK的主要新特性 Java 9续

Java 9在Java 8的基础上改进了try-with-resources语句,允许在外部初始化资源。同时,钻石操作符<>可用于匿名实现类,String的存储结构变为byte数组以节省空间。新增的HTTP客户端API支持HTTP 2和WebSocket,提供更高效的数据传输能力。
摘要由CSDN通过智能技术生成

17. 简化在try-catch中使用资源(I/O流)

Java8中新增了try-with-resources语句,可以自动关闭需要关闭的资源文件,但是必须在try语句后的括号中初始化资源。Java 9改进了try-with-resources语句,你可以在try外初始化资源,然后在try后的括号中添加需要自动关闭的资源即可,具体如下。

在Java 8之前你只能这样去初始化和关闭资源:

InputStreamReader reader = null;

try {

   reader = new InputStreamReader(System.in);

   //......

} catch (IOException e) {

   e.printStackTrace();

}finally {

   if (reader != null) {

        try {

            reader.close();

        } catch (IOException e) {

            e.printStackTrace();

        }

   }

}

Java8新增了try-with-resources语句,你可以在try后的括号中初始化资源,实现资源自动关闭:

//多资源用分号隔开

try (InputStreamReader reader = newInputStreamReader(System.in);) {

   //......

} catch (IOException e) {

   e.printStackTrace();

}

在Java 9中,改进了try-with-resources语句,可以在try前进行初始化,在try后的括号内引用,即可实现资源自动关闭:

InputStreamReader reader = newInputStreamReader(System.in);

OutputStreamWriter writer = newOutputStreamWriter(System.out);

//多资源用分号隔开

try (reader; writer) {

    //......

} catch (IOException e) {

   e.printStackTrace();

}

18. 改进钻石操作符<>

Java 9中钻石操作符可以使用匿名实现类,可以在匿名实现类中重写方法等操作。

Set set = new HashSet<>(){

    //匿名实现类重写add方法。

    @Override

    publicboolean add(String s) {

       System.out.println("执行add方法");

       return super.add(s);

    }

};

19. String存储结构变更

Java 9之前String底层使用char数组存储数据private final char value[],每个字符(Unicode)用2个字节存储。但很多时候字符串中存储的都是只需一个字节的Latin-1字符(类似ASCII),所以一半的存储空间被浪费。Java 9将String底层存储数据改为byte数组存储数据private final byte[] value,根据实际需要选择用一个还是两个字节存储字符。StringBuffer和StringBuilder也同样做了变更。

20. 多分辨率图片

在java.awt.image包新增了支持多分辨率图片的API,例如,MultiResolutionImage接口,用于支持多分辨率的图片。将不同分辨率的图像封装到一张(多分辨率的)图像中,作为它的变体。

21. 智能Java编译工具

智能Java编译工具sjavac的第一个阶段始于JEP139这个项目,用于在多核处理器情况下提升编译速度。如今,这个项目已经进入第二阶段,即JEP199,其目的是改进Java编译工具,并取代目前编译工具javac,继而成为Java默认的通用的智能编译工具。Java 9还更新了javac编译器以便能够将Java 9代码编译运行在低版本Java中。

22. javadocHTML 5支持

Java 8生成的Java帮助文档是在HTML 4中。而HTML 4已经是很久的标准了。Java 9的javadoc现支持HTML 5标准。

23. 全新的HTTP客服端API

HTTP,用于传输网页的协议,早在1997年就被采用在目前的1.1版本中。直到2015年,HTTP 2才成为标准。HTTP 1.1和HTTP 2的主要区别是如何在客户端和服务器之间构建和传输数据。HTTP 1.1依赖于请求/响应周期。HTTP 2允许服务器“push”数据:它可以发送比客户端请求更多的数据。这使得它可以优先处理并发送对于首先加载网页至关重要的数据。

Java 9中有新的方式来处理HTTP调用。它提供了一个新的HTTP客户端(HttpClient),它将替代仅适用于blocking模式的HttpURLConnection(HttpURLConnection是在HTTP 1.0的时代创建的,并使用了协议无关的方法),并提供对WebSocket和HTTP 2的支持。此外,HTTP客户端还提供API来处理HTTP 2的特性,比如流和服务器推送等功能。

资料引用:

https://www.cnblogs.com/peter1018/p/9209951.html

68d13f5a1aced31c03c2e5deb8975fc6.png

5be45a5e1bc88b1358fecd78c10d9774.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值