Oracle开始从Java运行时中移除JAR包

早在2012年8月,在Java平台首席架构师Mark Reinhold宣布模块化项目Jigsaw之后不久,JEP 162这一题为“准备模块化”的提案就指出,在Jigsaw项目中为模块化系统开发的代码不会集成到JDK 8中。那次延期直接将模块化支持推迟到JDK 9,最早也得到2016年。

不过,Oracle近来加快了向Java引入模块化系统的步伐。2014年8月,Oracle将经过重组的源代码(JEP 201)合并到JDK 9 build 27中。近日,他们又将重构过的运行时(JEP 220)合并到JDK 9 build 41中,以下是其中几项比较重大的变化:

  • JDK中不再包含JRE子目录;
  • 停用授权标准覆盖机制,删除相应的实现代码,用可升级的模块取代它,JDK中不再包含系统属性java.endorsed.dirs及目录lib/endorsed;
  • 停用扩展机制,删除相应的实现代码,类似地,JDK中不再包含系统属性java.ext.dirs及目录lib/ext,但一些与扩展机制相关的Manifest属性,如Class-Path、Sealed等,还会保留;
  • 删除rt.jar、tools.jar、dt.jar以及其它各种内部JAR包,其中的类和资源文件存储在一种名为jimage的更加高效的格式中。需要直接访问rt.jar的工具可以使用一个内部NIO文件系统提供程序访问运行时中的类和资源文件;
  • 子目录lib中的配置文件.properties、.policy移到新目录conf中,其它计划由开发人员、部署人员和终端用户修改的配置文件也保存在该目录中;
  • 为模块、类和资源引入一种新的URI命名规则jrt,它隐藏了JDK内部结构或格式,其语法为jrt:/[$MODULE[/$PATH]]。

Oracle后续还会引入其它一些变化,但Reinhold明确指出,在所有已计划的变化中,上述变化是最重大的。他还特别强调,他们并没有提议删除一般用途的JAR包,而只是删除JRE和JDK中的。

接下来,根据Mark Reinhold的计划,还将有第四项提案。该提案将引入模块化系统本身,而且会与模块化系统JSR保持一致。

感兴趣的读者可以从官方网站上下载Java 9早期试用版。有一点需要注意,该版本不支持Windows XP。

时间: 2024-10-20 08:47:51

Oracle开始从Java运行时中移除JAR包的相关文章

kubernetes实战-交付dubbo服务到k8s集群(三)安装配置maven和java运行时环境的底包镜像

maven 官方地址: 官方地址 下载maven,shdd7-200 # cd /opt/src # wget https://archive.apache.org/dist/maven/maven-3/3.6.1/binaries/apache-maven-3.6.1-bin.tar.gz # mkdir /data/nfs-volume/jenkins_home/maven-3.6.1-8u232 # tar -zxf apache-maven-3.6.1-bin.tar.gz -C /da

Java项目生成可执行jar包、exe文件以及在Windows下的安装文件

1.如何通过eclipse将Java项目生成可执行jar包 首先把在eclipse下的java项目导出jar file 下一步 下一步 下一步 最后点击完成,便生成了可执行的jar文件.可以在刚刚选择导出目录的文件夹中找到. 2.将刚刚生成的jar文件导出可执行的.exe文件,首先安装exe4j软件,下载地址如下:http://www.jb51.net/softs/541579.html,下载后安装破解.打开界面如下 直接下一步,选择第二个 下一步 下一步 如果要在64位下运行,则要点击下面那个

普通的java项目生成可执行jar包

普通的java项目生成可执行jar包 1.右键选中项目,选择export 2.选择runnable jar file 然后next 3.填入相关信息 4.点击finish ,有提示的话点确定即可. 5.在自定义jar包生成的路径里面可以看到下面 6.命令行执行程序 Java  -jar JDBC.jar XXX XXX 后面的XXX 表示的是mian函数上的arg[]参数,String数组,有就添加,没有可以不用管. 如果是要copy到别的机器或者目录下面跑.一定要将生成的两个文件(jar包目录

【深入JAVA】程序打包成Jar包运行并读取外部配置文件

在阅读的过程中有任何问题,欢迎一起交流 邮箱:[email protected] QQ:1494713801 一.程序设置 Java的main方法有个初始化入参args,将参数表示为配置文件的路径,代码如下: 1 public static void main(String[] args) { 2 loadConf(args[0]); 3 } 1 public static void loadConf(String path) throws Exception { 2 Properties pr

【深入JAVA】打包项目为Jar包并运行jar

在阅读的过程中有任何问题,欢迎一起交流 邮箱:[email protected]    QQ:1494713801 1.其实运行jar包的命令比较简单:进入相应的目录后,执行java -jar XXX.jar即可! 2.但是,为什么通过Maven打包或者Eclipse export出来的jar不能运行呢?原因很简单,没指定执行哪个类的main方法,如何指定?配置文件,项目文件夹下有一个META-INF文件夹,META-INF文件夹下有一个MANIFEST.MF文件,只要更改该文件就可以了 3.默

[Java]Hibernate所需要的jar包和作用释义

hibernate 需要的jar包 1)hibernate3.jar: Hibernate的核心库,没有什么可说的,必须使用的jar包 2)cglib-asm.jar: CGLIB库,Hibernate用它来实现PO字节码的动态生成,非常核心的库,必须使用的jar包 3)dom4j.jar: dom4j是一个Java的XML API,类似于jdom,用来读写XML文件的.dom4j是一个非常非常优秀的Java XML API,具有性能优异.功能强大和极端易用使用的特点,同时它也是一个开放源代  

[Java]Struts2所需要的jar包和作用释义

struts2所必须的jar包 struts2所必须的jar包九个: struts2-core-2.1.6.jar --------------- struts2的核心包freemarker-2.3.13.jar--------------- FreeMarker是一个模板引擎,一个基于模板生成文本输出的通用工具commons-logging.jar ----------- Jakarta的通用日志记录包ognl-2.6.11.jar -------------- 支持ognl表达式xwork-

最近学习Spring-Data-JPA运行时发现缺少jar包报异常!网上找了一下相关信息,留作参考

在使用idea工具开发时,你建文件的时候会根据你的选项下载一些包,但是有时候不全 在我引用jpa的jar包后运行的时候报错: 然后去网上查了一下,是缺少相应的jar包: 以下是相应jar缺失出现的异常(仅供参考): 1.Exception in thread "main" org.springframework.beans.factory.parsing.BeanDefinitionParsingException: Configuration problem: Unable to l

Eclipse下导出java程序可执行的jar包图片无法显示问题的一种解决方法

说明:在eclipse中运行java程序的时候一切正常,可是当把jar包导出的时候却发现图片没法显示,这估计是java程序的各种配置和路径问题所导致,后来找到一种解决方法,供遇到这方面问题的学习java程序的鞋同参考: Java项目下的目录结构如下: 其中class类放在包:package accpedu; (即实际是在如上bin/accpedu文件夹下面) 通过下面的方法来引用图片时,在eclipse里面执行是可以正常显示图片的: ImageIcon image1 = new ImageIco