早在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。

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

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

    maven 官方地址: 官方地址 下载maven,shdd7-200 # cd /opt/src # wget https://archive.apache.org/dist/maven/maven- ...

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

    1.如何通过eclipse将Java项目生成可执行jar包 首先把在eclipse下的java项目导出jar file 下一步 下一步 下一步 最后点击完成,便生成了可执行的jar文件.可以在刚刚选择 ...

  3. 单个java文件打成可执行jar包

    1 概述 使用JDK自带的jar与java将单个java文件打成可执行jar包并运行. 当然也可以使用IDE完成,使用Maven只需要一个简单的package,但是单个文件嘛,没必要这么"凶 ...

  4. 【原创】Java基础之简单修改jar包中的class

    有时需要修改很多jar(假设这些jar都位于lib目录)中其中一个jar中的某一个类,而且又没有原始代码或ide,这时最简单的方式是: 1 进入lib目录 # cd lib # ls test.jar ...

  5. DOS命令运行java文件,批量引用jar包

    进入class文件目录 cd:\workspace\workspace_goodsownersystem\workspace_goodsownersystem\goodsownersystem\tar ...

  6. java 编译 运行 及 引用外部 jar 包的方法

    1. 环境变量配置 JAVA_HOMEC:\Program Files\Java\jdk1.8.0_121; PATH%PATH%;C:\Java\jdk1.6.0_30\bin; CLASSPATH ...

  7. Java基础之用记事本编辑java代码运行,并且打成jar包后运行

    使用记事本写java代码 1.在d盘新建一个记事本,名字叫做zhanzhuang.java,会询问不可用,是否继续,点击是 2.在里面编辑就如下内容,注意文件的名字要和 class 后面的名字相对应 ...

  8. 在Linux下运行引入了外部jar包的java程序

    如图:H.java里引入了commons-io-2.2.jar 代码如下: import org.apache.commons.io.IOUtils; public class H{ public s ...

  9. Java如何获取当前的jar包路径以及如何读取jar包中的资源

    写作业的时候要输出一个record.dat文件到jar包的同级目录,但是不知道怎么定位jar包的路径.百度到的方法不很靠谱,所以在这里记录一下. 一:使用类路径 String path = this. ...

随机推荐

  1. SVN太旧,要更新问题

    同步或者提交的时候出现问题提示 The working copy needs to be upgradedsvn: Working copy 'E:\JAVA\Workspaces\uhr' is t ...

  2. java几种字符串反转

    java实现的字符串翻转,能想到的这几种方法 假设有其它方法,欢迎交流 //字符串反转 public class ReverseString { public String reverse1(Stri ...

  3. Shell编程速查手册

    https://blog.atime.me/note/shell-scripting-summary.html 总结一下日常Shell脚本里常用的知识,忘记时方便查阅. 常见的shell 常见的Lin ...

  4. Java语言基础(三)

    Java语言基础(三) 一.    补码 (1).之所以有补码是因为要考虑成本 就是造计算机的成本 (2).下面让我们分析一下补码 以四位补码为例 <1> 高位是符号位,它决定其是正数还是 ...

  5. Linux下使用w命令和uptime命令查看系统负载

    在Linux系统中查询系统CPU和内存的负载(使用率)时,我们通常习惯于使用top.atop或者ps,这篇文章将要给大家介绍如何使用w命令和uptime命令来查看系统的负载情况,对于uptime命令, ...

  6. Cocos2d各版本搭建环境中的奇葩操作

    #Version: Cocos2d-x 3.4 Android 将[Cocos2d-x解压目录]\cocos\platform\android\java\src中的com,org目录拷贝覆盖到[项目根 ...

  7. GUI编程笔记(java)11:使用Netbeans工具进行GUI编程

    Netbeans工具:是基于java语言进行GUI界面设计的工具 Visual Studio工具:是基于C#语言进行GUI界面设计的工具

  8. jdk配置及maven配置

    jdk配置及maven配置 >>>>>>>>>>>>>>>>>>>>>&g ...

  9. Python之路【第十一篇】:CSS --暂无内容-待更新

    Python之路[第十一篇]:CSS --暂无内容-待更新

  10. Python开发【第二十二篇】:Web框架之Django【进阶】

    Python开发[第二十二篇]:Web框架之Django[进阶]   猛击这里:http://www.cnblogs.com/wupeiqi/articles/5246483.html 博客园 首页 ...