国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

如何制作最小的RCP程序壓縮包

2019-11-18 15:29:31
字體:
供稿:網(wǎng)友

    假如開發(fā)完了一個RCP應(yīng)用程序,要安裝到客戶端,那么這個安裝文件會有多大呢,我們當(dāng)然希望是越小越好。

    我們先算一下普通方式下的文件大小:

    jre1.5 安裝程序 16M

    rcp3.2 runtime 9M

    rcp應(yīng)用程序(包含用到的第三方的lib) 此處假設(shè) 2-3M

    那么將這些文件打成包后的大小將為28M左右,一個普通的rcp安裝程序居然會有這么大。這實在有點令人難以接受。

    難道就不能再小一點嗎?我們多么希望有一個小巧的RCP安裝程序啊。答案是肯定的,我們完全可以將RCP安裝程序控制在10M以內(nèi),甚至更小。

    此處只介紹如何壓制一個最小的RCP壓縮包,至于如何制作安裝程序,已經(jīng)超出了討論的范疇,只要有了最小的壓縮包,不論用何種安裝程序,都可以制作出10M以下的RCP安裝程序。

    第一步: jre 減肥

    jre1.5安裝程序有16M,這可是一個大東西,客戶想要運行RCP程序,首先就要安裝JRE.這也是很多客戶反感的,jre里面包含了太多的東西,很多是rcp程序根本用不到的,比如swing庫,假如全是用swt開發(fā),swing包就多此一舉了。 而且JRE的安裝程序也不見的那么健壯,筆者就曾經(jīng)兩次碰到在不同的機器上不能成功安裝jre的情況,而且通過添加刪除程序也刪不掉,非常煩人。其實完全沒有必要安裝JRE,只需要在rcp安裝目錄下建一個jre目錄,里面包含jre用到的文件就可以了。rcp程序啟動時,會首先查找當(dāng)前目錄下有沒有jre目錄,假如有,就用里面的jre,假如沒有才去注冊表查找jre.接下來,我們看看這個jre目錄里面都有哪些東西,一些不要的統(tǒng)統(tǒng)刪掉,至于刪掉哪些,要根據(jù)情況而定,這個需要反復(fù)實驗才能確定哪些有用,哪些沒用。最后bin目錄筆者保留了必須的dll和exe文件,llib目錄里面,只保留了rt.jar和charsets.jar這兩個庫。但是rt.jar還是太大了32M,既然要減肥,那就徹底減到底吧,用WinRAR或者其他解壓縮工具打開rt.jar,看看哪些包里面的class不需要,就統(tǒng)統(tǒng)刪掉。例如,客戶端不需要swing,javax.swing包干掉,客戶端不需要rmi,javax.rmi包干掉,刪來刪去,最后rt.jar變成了10多M, charsets.jar這個包也挺大8M,里面包含了不同的字符集編碼,其實很多字符集都用不到,根據(jù)情況挑選你所用的吧。

    到了這一步,jre已經(jīng)瘦了一圈了,但還是不能達到我們的目的,假如用普通的壓縮工具壓縮jre目錄后,基本可以達到10到12多M.這離我們的目標(biāo)還差好大一快呢。jre還的減肥,這次狠一點,拿出我們的殺手武器pack200,pack200是java1.5自帶的(在jre/bin/目錄下)一個針對class文件進行壓縮的工具,由于專門針對class文件進行了優(yōu)化,壓縮比高的驚人(當(dāng)然速度也比普通壓縮軟件慢多了)pack200的用法請自行參考相關(guān)文檔。先用pack200把rt.jar,和charsets.jar壓縮一下,然后用其他壓縮軟件對jre整個目錄壓縮一下,壓縮后的大小讓你吃驚,假如用rar,壓縮出來的是4M,zip高一些4.8M.可能是筆者刪的東西太多了,所以會這么小。但這里還包含一個8M的charsets.jar文件。筆者試過,假如不包括charset.jar,用rar壓縮后大小為2.88M,這實在太驚人了,有誰能想象一個只有2.88M的JRE,遺憾的是charset.jar是必須的,你可以刪掉里面一些不要的字符集這樣能壓出來的jre也再3M-4M之間。必須注重的是,解壓縮的時候,還要用pack200解開壓縮后的jar文件。整個步驟就是壓縮兩遍,第一遍用pack200壓縮所有的jar文件,第二遍再用一個其他壓縮軟件壓縮jre目錄。這樣就能得到一個很小的jre壓縮包。

    看到這里,有人開始懷疑,這個3M多的JRE能用嗎?筆者就曾將這個jre放到eclipse目錄下,eclipse啟動一切正常,進去后可以繼續(xù)寫我的java代碼,還可以編譯java文件(其實eclispe本身不需要tools.jar,它自己就帶了一個很強的java編譯器),從cvs下載文件也不成問題,試了一圈,沒發(fā)現(xiàn)有什么出錯的地方。當(dāng)然,包不齊,少了那個class文件,就會出錯了,所以刪除class文件的時候,盡量不要多刪。假如你很熟悉每個class文件的用途,就可以放心的去刪了。假如SUN能出一個 MINI JRE 那就更好了。

    第二步: RCP插件減肥

    記不清從eclipse3.1起的那個版本,已經(jīng)開始支持將插件打包成一個jar文件,甚至這個插件里面包含著其他的jar文件,這在3.1以前只能創(chuàng)建一個插件目錄。既然插件可以打包成jar文件,那么pack200就派上用場了,同壓縮jre一樣,此處就不在敘述了。

    值的注重的問題是,有的插件jar文件里面包含一個目錄lib,lib里面又包含了其他的jar文件,那么用pack200對這個插件jar壓縮的時候,lib里面的jar文件是不會壓縮的。這個也不是什么問題,只要寫個小程序,對lib里面的jar文件壓縮一下就行了。



發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 普陀区| 瑞金市| 古丈县| 上杭县| 华池县| 闻喜县| 铜梁县| 建水县| 上高县| 霍城县| 安徽省| 卫辉市| 乳山市| 陆川县| 新蔡县| 隆林| 彝良县| 炎陵县| 高淳县| 海丰县| 昭平县| 正安县| 桐乡市| 华坪县| 兰州市| 桐梓县| 永仁县| 武宣县| 汝阳县| 凭祥市| 南京市| 景泰县| 精河县| 郑州市| 河曲县| 渝中区| 犍为县| 东宁县| 泉州市| 卢氏县| 淮南市|