首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

(转)简要JRE第二步 ─ 精简lib目录

2012-11-13 
(转)精简JRE第二步 ─ 精简lib目录文章转自:http://jarg.iteye.com/blog/867960??JRE(Java Runtime Environ

(转)精简JRE第二步 ─ 精简lib目录

文章转自:http://jarg.iteye.com/blog/867960

?

?

JRE(Java Runtime Environment): Java运行环境.

?

?

?


1. bin: 可以认为这是Java虚拟机.
精简过程在本博客文章 精简JRE第一步 ─ 精简bin目录 中有初步介绍.


2. lib: 执行class文件时,Java虚拟机需要用到的类库及资源文件.

① lib目录最主要的类库是rt.jar,是任意Java程序所必需的类库.
lib目录大约62MB,但是rt.jar类库就占了47MB,可见精简bin目录,最主要是裁剪rt.jar.

?

② lib目录下一个运行Java程序不可或缺的文件是位于i386下的虚拟机配置文件jvm.cfg.该配置文件用来管理不同版本的jvm.dll.其内容作为java.exe,javac.exe的全局变量,用来加载相应的动态链接库文件.

?

③ lib目录里面除了包含程序运行所需要的类库及配置文件外,还包含有一些诸如: 鼠标光标,字体等系统资源.简单程序如果未用到这部分资源的话,可以剔除.
如果程序除去JRE部分,占用空间较大的话,为了避除资源加载错误带来的麻烦,建议保留这不到20MB的内容.

?

本文主要介绍类库的精简过程,主要是rt.jar类库的精简过程.

?

一、准备工作
查看执行当前Java程序所需加载的所有类(由于Java中具有类延时加载的现象,所以要把程序所有的功能都运行一次才能得到运行当前Java程序需要用到的全部类),并保存所有用到的类名到log.txt中.
查看程序加载类的方法在本博客文章 精简JRE - verbose命令 中有初步介绍.

?

二、修改log.txt
由于log.txt每行都是形同: [Loaded java.lang.System from shared objects file]的一串字符,修改文本以方便获取类完整名java.lang.System,从而获得类似类路径java/lang/System的一串字符,方便后继编写类拷贝程序.
修改方法:
1. 查找并替换[Loaded 为空,达到删除[Loaded 的目的.
2. 使用任意一个具有正则表达式查找替换功能的文本编辑器,查找并替换 from.*为空,达到删除 from及其后面的字符串的目的.
3. 查找并替换.为/

4. 删除以[Opened 开头的行.

5. 删除程序中System.out.println的输出行.

?(转)简要JRE第二步 ─ 精简lib目录?(转)简要JRE第二步 ─ 精简lib目录

?

?

程序运行要求: 事先解压rt.jar类库到该类拷贝程序所在目录

?

四、精简rt.jar
将拷贝出来的类打包成rt.jar.
1. 用jar打包命令打包.
2. 用压缩程序(如: winrar)压缩成rt.zip(不能是.rar格式),然后重命令为rt.jar.

?

五、精简charsets.jar
charsets.jar包含执行程序所需的编码方式,但是通常我们只会用到其中的一种.根据类拷贝程序提示的错误信息,将相应的类拷贝出来打包成charsets.jar,完成精简charsets.jar的工作.
(转)简要JRE第二步 ─ 精简lib目录
?

?

至此完成本文要介绍的内容: 精简lib目录.


(转)简要JRE第二步 ─ 精简lib目录


打开JRE安装目录.目录包括bin,lib二个文件夹.

热点排行