java7里有jdk吗_jdk9和jdk8相对于jdk7升级多吗?

首先呢,java就目前的情况,大致可以分为jdk9以及他之前的jdk,以及jdk9以及他之后的jdk。为什么会这样呢?原因就是jdk9开始Java出现了一个巨大的变化:JPMS,即java模块化系统。

什么是JPMS:

这个系统把java的传统意义的jar包进行了进一步的封装,形成了一个模块的概念,jpms里面分为三种模块:具名模块,自动模块,无名模块。

具名模块:jar里面提供了module-info.java的时候,jar包就是具名模块。

自动模块:jar包在meta-inf里面的描述文件提供了模块名,但是没有module-info.java的时候,称作自动模块。

无名模块:jar包没有任何模块信息,就是普通的jar包。

那么可以看出,module-info是个关键,他的作用就在于提供了一个全新的权限限制,本模块之外的用户仅仅能够使用export的包,这些包里面的class不能被深度反射,例如强制修改private字段这种就是不允许的,但是只是普通的反射方法和构造方法没有问题,即对反射的一个强化。

如果模块中使用了open关键字,那么被open关键字指定的包对外界模块或某些模块开放,允许任何反射和使用方式。

非模块jar包全部属于无名模块,里面的类统一导出到无名模块中,同时全部处于open状态,自动模块和这个很相似,也是全部导出,处于open状态。

对于模块中资源的获取,我建议使用module的getResource相关方法而不是class的。

这个修改相当具有破坏性,spring等框架大量使用了反射进行各类操作,因此在JPMS初期,大家很难迁移到这里。

不过现在模块化的jar就比较多了。

模块化带来了一个新的东西:叫做jlink。通过jlink我们可以建立一个最小的java运行时,他能够包含所有你需要的模块化的jar将他们放到一起,对于发布java项目是很有帮助的。

和java的classLoader一样,module有moduleFinder,ModuleLayer等新的反射结构,如果需要动态载入模块,就需要他们了。

jdk9并不是一个长期的版本,因此建议直接使用jdk11,他的特性更全面也更稳定,会用jdk11的你,肯定能正确使用jdk9,另外现在线上主流使用的还是jdk8.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值