技术原理

Java9的特性和改进

,Java 9和java9特性的发布是Java生态系统的一个里程碑。跟上新版本的步伐对于跟上技术的发展和理解新版本背后的需求非常重要,这将使您更接近Java、J2EE和SOA认证。在ProjectJigsaw下开发的模块化框架将是这个JavaSE版本的一部分,其中的主要功能是JShell(REPL工具),重要的API更改和JVM级别更改,以提高JVM的性能和可调试性。

在我们详细解释Java 9特性之前,让我们先看看以前的Java版本,看看有哪些缺点以及java9是如何帮助克服这些缺点的异常情况:-

Java标准版平台和JDK不适用于小型计算设备没有JDK的整体安全性和维护没有应用程序性能的整体改进Java开发人员很难构建和维护代码库和更大的应用程序,对于JavaSE和EE平台

,我将按照以下方式对Java9特性进行分类:

处理Java9HTTP/2客户端中的API更新Java9JavaShell脚本(读取Eval打印循环)Java9MultiReleaseJAR文件特性Java9MoreConcurrency更新特性Java9ProjectJava 9中的Jigsaw

java9中有什么新功能

“我选择了一些新的Java 9特性,我觉得这些特性值得了解。让我们看看这些是什么特点:-

进程API在Java 9

Java的进程API中的更新相当原始,只支持启动新进程、重定向进程的输出和错误流。在这个版本中,对Process API的更新启用了以下功能:

获取当前JVM进程和JVM生成的任何其他进程的PID枚举系统中运行的进程以获取诸如PID、名称和资源使用情况管理进程树管理子进程

让我们来看一个示例代码,它打印当前的PID以及当前的进程信息:

公共类新特性{公共静态void main(字符串[]参数){进程句柄当前进程=处理句柄.current();系统输出打印(“PID:” 当前进程.getPid());处理句柄信息当前进程信息=当前进程信息();系统输出打印(“信息:” currentProcessInfo);HTTP/2客户端在Java 9

中这个java9特性预计会在后续版本中发生变化,甚至可能被完全删除。

早期的开发人员经常使用第三方库,如apachehttp、Jersey等。除此之外,Java的HTTP API早于HTTP/1.1规范,是同步的,很难维护。这些限制需要添加新的API。新的HTTP客户端API提供了以下内容:

一个简单而简洁的API,用于处理大多数HTTP请求支持HTTP/2规范性能更好安全性更好一些增强

让我们看一个示例代码,使用新的API发出HTTP GET请求。下面是在文件模块中定义的模块定义-信息.java:

模块新功能{}

下面的代码使用HTTP客户端API,它是jdk.孵化器.httpclient模块:

进口java.net.URI;public static void main(String[]args)引发异常{HttpRequest request=HttpRequest.GET().build();HttpResponse.String响应=客户端.send(请求,HttpResponse.BodyHandler.asString()); 系统输出打印(“响应正文:” 响应.正文());}}-A级-B类-C.class

这里是多版本JAR文件的外观:

JAR root-A级-B类-C类-中导-版本-9个-A级-10个-B.class

在上图中,JAR文件支持两个Java版本的类文件–9和10。

因此,在Java 9上执行先前的JAR时,versions–9文件夹下的A.class被选中执行。

在不支持多版本JAR文件的平台上,versions目录下的类永远不会被使用。所以,如果你在Java8上运行多版本JAR文件,它就和运行一个简单的JAR文件一样好。在Java9中

更多并发更新特性在这个更新中,一个新的类并发java.util.concurrent引入了.Flow,它具有支持发布-订阅框架实现的嵌套接口。publish-subscribe框架允许开发人员通过设置生成数据的发布者和通过订阅(管理它们)使用数据的订阅者来构建可以异步使用实时数据流的组件。四个新接口如下:

并发java.util.concurrent.Flow.Publisher版本并发java.util.concurrent.流量订户并发java.util.concurrent.流订阅并发java.util.concurrent.流量处理器(同时作为发布者和订阅者)。项目Jigsaw在Java 9

这个项目的主要目的是介绍模块化的概念;支持在java9中创建模块,然后将其应用到JDK;也就是说,模块化JDK。

模块化的一些好处如下:

强封装:模块只能访问可供使用的模块。因此,除非在模块信息文件中显式导出包,否则包中的公共类不是公共的。清除依赖项:模块必须通过requires子句声明它们将使用的其他模块。组合模块以创建更小的运行时,它可以很容易地扩展到更小的计算设备。可靠:通过消除运行时错误,应用程序更加可靠。示例:-您一定在运行时遇到过由于缺少类而导致应用程序失败,从而导致ClassNotFoundException。”

“有各种JEP,它们是本项目的一部分,如下所示:

JEP 200-模块化JDK:这应用Java平台模块系统将JDK模块化为一组模块,这些模块可以在编译时、构建时或运行时组合在一起。JEP 201——模块化源代码:这将JDK源代码模块化为模块,并增强了编译模块的构建工具。JEP 220——模块化运行时映像:这将重新构造JDK和JRE运行时映像,以适应模块并提高性能、安全性和可维护性。JEP 260——封装大多数内部api:这允许直接或通过反射访问许多内部api。访问注定要更改的内部api是相当危险的。为了防止其使用,它们被封装到模块中,只有那些被广泛使用的内部API才被提供,直到一个合适的API就位。JEP 261-模块系统:这通过改变Java编程语言、JVM和其他标准api来实现模块系统Java规范JEP 282:jlink,Java链接器:这允许将模块及其依赖项打包成更小的运行时间。

所以,这都是关于Java 9和新的java9特性的

“现在您已经了解了Java 9的特性,请查看Edureka的Java认证培训,Edureka是一家值得信赖的在线学习公司,拥有遍布全球的25万名满意的学习者。

有问题要问我们吗?请在这个“Java9”博客的评论部分提到它,我们会尽快给您回复

你也可能喜欢

发表评论

您的电子邮件地址不会被公开。 必填项已用 * 标注

提示:点击验证后方可评论!

插入图片
北京人工智能培训学校 投稿者
我还没有学会写个人说明!
最近文章
  • * 没有更多文章了
  • 热门搜索

    分类目录