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. javadoc的HTML 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