精简JRE第二步 ─ 精简lib目录
http://jarg.iteye.com/blog/867960
JRE(Java Runtime Environment): Java運(yùn)行環(huán)境.
打開JRE安裝目錄.目錄包括bin,lib二個(gè)文件夾.
1. bin: 可以認(rèn)為這是Java虛擬機(jī).
精簡(jiǎn)過(guò)程在本博客文章精簡(jiǎn)JRE第一步 ─ 精簡(jiǎn)bin目錄 中有初步介紹.
2. lib: 執(zhí)行class文件時(shí),Java虛擬機(jī)需要用到的類庫(kù)及資源文件.
① lib目錄最主要的類庫(kù)是rt.jar,是任意Java程序所必需的類庫(kù).
lib目錄大約62MB,但是rt.jar類庫(kù)就占了47MB,可見精簡(jiǎn)bin目錄,最主要是裁剪rt.jar.
② lib目錄下一個(gè)運(yùn)行Java程序不可或缺的文件是位于i386下的虛擬機(jī)配置文件jvm.cfg.該配置文件用來(lái)管理不同版本的jvm.dll.其內(nèi)容作為java.exe,javac.exe的全局變量,用來(lái)加載相應(yīng)的動(dòng)態(tài)鏈接庫(kù)文件.
③ lib目錄里面除了包含程序運(yùn)行所需要的類庫(kù)及配置文件外,還包含有一些諸如: 鼠標(biāo)光標(biāo),字體等系統(tǒng)資源.簡(jiǎn)單程序如果未用到這部分資源的話,可以剔除.
如果程序除去JRE部分,占用空間較大的話,為了避除資源加載錯(cuò)誤帶來(lái)的麻煩,建議保留這不到20MB的內(nèi)容.
本文主要介紹類庫(kù)的精簡(jiǎn)過(guò)程,主要是rt.jar類庫(kù)的精簡(jiǎn)過(guò)程.
一、準(zhǔn)備工作
查看執(zhí)行當(dāng)前Java程序所需加載的所有類(由于Java中具有類延時(shí)加載的現(xiàn)象,所以要把程序所有的功能都運(yùn)行一次才能得到運(yùn)行當(dāng)前Java程序需要用到的全部類),并保存所有用到的類名到log.txt中.
查看程序加載類的方法在本博客文章精簡(jiǎn)JRE - verbose命令 中有初步介紹.
二、修改log.txt
由于log.txt每行都是形同: [Loaded java.lang.System from shared objects file]的一串字符,修改文本以方便獲取類完整名java.lang.System,從而獲得類似類路徑j(luò)ava/lang/System的一串字符,方便后繼編寫類拷貝程序.
修改方法:
1. 查找并替換[Loaded 為空,達(dá)到刪除[Loaded 的目的.
2. 使用任意一個(gè)具有正則表達(dá)式查找替換功能的文本編輯器,查找并替換 from.*為空,達(dá)到刪除 from及其后面的字符串的目的.
3. 查找并替換.為/
4. 刪除以[Opened 開頭的行.
5. 刪除程序中System.out.println的輸出行.
java/lang/Object java/io/Serializable java/lang/Comparable ... java/util/TreeMap$Entry sun/misc/VM sun/nio/cs/ext/GBK java/lang/StringCoding java/lang/ThreadLocal$ThreadLocalMap ... java/security/ProtectionDomain$Key java/security/Principal java/lang/Shutdown java/lang/Shutdown$Lock
三、類拷貝程序
上述形同java/lang/System的字符串,System是類名,相應(yīng)System.class文件.java/lang為System.class在類庫(kù)rt.jar中的相對(duì)路徑.下面的類拷貝程序的目的就是從解壓后的rt.jar的文件夾rt中將需要用到的類(也就是log.txt中記載的類)拷貝到別一個(gè)文件夾(這里為rt1)中,達(dá)到抽取運(yùn)行當(dāng)前Java程序需要全部類的目的.
程序運(yùn)行要求: 事先解壓rt.jar類庫(kù)到該類拷貝程序所在目錄
四、精簡(jiǎn)rt.jar
將拷貝出來(lái)的類打包成rt.jar.
1. 用jar打包命令打包.
2. 用壓縮程序(如: winrar)壓縮成rt.zip(不能是.rar格式),然后重命令為rt.jar.
五、精簡(jiǎn)charsets.jar
charsets.jar包含執(zhí)行程序所需的編碼方式,但是通常我們只會(huì)用到其中的一種.根據(jù)類拷貝程序提示的錯(cuò)誤信息,將相應(yīng)的類拷貝出來(lái)打包成charsets.jar,完成精簡(jiǎn)charsets.jar的工作.
?
至此完成本文要介紹的內(nèi)容: 精簡(jiǎn)lib目錄.
- 大小: 35.8 KB
- 大小: 6.8 KB
- log.rar (2.2 KB)
- 下載次數(shù): 22
?
總結(jié)
以上是生活随笔為你收集整理的精简JRE第二步 ─ 精简lib目录的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 精简JRE第一步 — 精简bin目录
- 下一篇: Keil C51软件的使用教程