Java 9 已经在 JavaOne 大会发布许久,千锋哈尔滨Java开发培训老师将在本文中将为我们梳理 Java 9 所具备的新功能。
JShell:交互式 Java REPL
很多编程语言都已经具有了交互式编程环境,如今 Java 也加入了这个具有REPL [读取、评估、打印、循环]功能的俱乐部。 交互式shell可以让你轻松完成 Java 类、接口、枚举、对象、语句等的测试任务。使用 JShell 进行测试时无需部署整个解决方案。JShell也就是Java Shell的缩写,可以在终端窗口执行JShell命令将其启动,然后就可以直接在命令行中输入并执行 java 代码了。
使用这个工具的绝佳好处之一是,我们可以轻松测试我们的微服务,而不需要一遍又一遍地部署它们。这有助于加速终极组件的开发、迭代和质量。
私有接口方法
Java 8为我们提供了接口中的默认和静态方法实现,但是,我们无法在接口中创建私有方法。如果接口中有多个默认方法包含相同功能,通常,我们会重构这些方法,调用一个可复用的私有方法。在Java 8中,你可以在接口中创建私有方法。随着 Java 9的发布,这个问题得以解决,现在我们可以向接口添加私有辅助方法来解决这种类型的问题。
public interface MyInterface {
default void interfaceDefaultMethod() { init(); }
default void interfaceSecondDefaultMethod() { init(); }
// This is the declaration of the Private Method in Interface
private void init() { ... }
}
Java 9 模块系统
Java 9的一大变化是引入了模块系统(Jigsaw 项目)。一直到 Java 8 版本,我们都在使用 Monolithic Jars 来设计基于 Java 语言的应用程序。这种设计有两个主要的基本问题:难以封装代码,并且系统不同部分之间缺乏明确依赖的概念。为了避免这些根本问题,Java 9 引入了模块系统。模块系统主要有如下好处:
1. JDK、JRE、JAR等被分割成小的模块,我们可以只使用我们需要的模块即可。这有助于缩小小型设备应用程序的尺寸。
2. 对封装提供强力支持。
3. 内部 Non-Critical API 被隐藏,因为模块安全地隐藏了不需要的内部细节。这大大提高了应用程序的安全性。
改进的 Javadoc
我们一直以来都使用 Google 来搜索问题,才能找到正确的 Javadoc 页面。使用 Java 9这个问题得以解决,Javadoc 现在支持在 API 文档中的进行搜索。
HTTP/2客户端
Java 9 中有新的 HTTP/2 客户端 API 来处理 HTTP 调用。它代替了老旧的 `HttpURLConnection` API,并提供对 WebSocket 和 HTTP/2 的支持。
HttpClient newHttpClient = HttpClient.newHttpClient();
Uri uriObject = Uri.create("https://developersjournal.in");
HttpRequest request = HttpRequest.newBuilder(uriObject)
.header("User-Agent", "DJ")
.GET()
.build();
HttpResponse resp = client.send(req, HttpResponse.BodyHandler.asString());
新版字符串
Java 9 提供简化版的字符串格式,有助于清楚区分主要、次要、安全和补丁新版本。新版本的字符串格式符合当前的行业惯例,特别是语义版本控制(Server)。格式如下:
$MAJOR.$MINOR.$SECURITY.$PATCH
$MAJOR 是主要版本增加的版本号,例如 JDK 9,其中包含由 Java SE 平台规范指定的重要新功能。主要版本包含新功能和对现有功能的改,这些功能将提前计划和公布。
$MINOR 是为每个次要新增加的版本号,例如错误修复,标准 API 的修订,或相关平台规范范围之外的功能实现。
$SECURITY是针对安全新版本增加的版本号,其中包含关键修复程序,包括提高安全性所需的修补程序。
$PATCH是包含已经一起测试的安全性和高优先级客户修补程序的版本的版本号。
多版本兼容 JAR
Java 9 扩展了 JAR 文件格式,以便在单个存档中共享多个 Java 版本的类文件。
多版本 JAR(MRJAR)包含针对特定 Java 平台版本的类和资源的附加版本目录。使用 jar 工具 --release 选项指定版本化目录。
改进的 Stream API
改进的 Stream API 允许对对象序列化数据的传入流进行过滤,以提高安全性和鲁棒性。
对象序列化客户端可以容易地验证其输入,并且导出的远程方法调用(RMI)对象也可以容易地验证调用参数。
序列化客户端实现了在 ObjectInputStream 上设置的过滤器接口。对于 RMI,用RemoteServerRef 导出对象,该 RemoteServerRef 将 MarshalInputStream 上的过滤器设置为在未调用时验证调用参数。
当然,Java9有了,Java10也不远了。想要进一步了解Java吗?来千锋教育,学全新Java知识。
上一篇:哈尔滨Java程序员培训课哪个好?我的经验错不了
下一篇:返回列表
学员姓名:徐同学
入职单位:枭*科技
入职月薪:11000
时间:2016.05.26
学员姓名:潘同学
入职单位:酷*互动
入职月薪:13000
时间:2016.05.20
学员姓名:张同学
入职单位:斑*实业
入职月薪:14000
时间:2015.12.08
学员姓名:黄同学
入职单位:福*中金
入职月薪:12000
时间:2015.12.07
学员姓名:韩同学
入职单位:宽*是风
入职月薪:17000
时间:2015.09.17
学员姓名:郑同学
入职单位:腾*众创
入职月薪:16500
时间:2015.11.02
学员姓名:钱同学
入职单位:数*科技
入职月薪:16000
时间:2015.11.04
学员姓名:孙同学
入职单位:快*
入职月薪:14000
时间:2015.06.12
学员姓名:郭同学
入职单位:本*生活网
入职月薪:14000
时间:2015.10.08
学员姓名:张同学
入职单位:泰*集团
入职月薪:13800
时间:2015.06.11
了解千锋动态
关注千锋教育服务号
扫码匿名提建议
直达CEO信箱