前言:
11.4M 雖然還不夠理想,偶最初期望可以把 JRE 部分控制在 10M 以內。
勉強湊合吧,這樣一個預先集成 JRE 的普通 SWT 桌面應用程序下載大小就不會超過20M。
一般的寬帶用戶就不會猶豫了。JRE 1.5 的性能又可以保留,另外還有 SWT 的協助。
普通人看不出這是個 java 程序,除了配置老的機子啟動有點慢(一般也能在10秒內啟動)
=========================================================================
SWT 有了, J2SE 1.5 有了, Java 桌面程序還需要些什么??
可能對于很多人來說(包括我), Java 的跨平臺特性并不是必須的,
很多時候我們只是想做個簡單的Windows桌面應用,然后試著把快樂分發給別人,
但是當我試著這么做的時候,才發現 SUN 的虛擬機對你溺愛的程度讓你惡心~
怎么辦? 既然已經上了這條船,就只能先找找有沒有就近的解決方法:
SWT + Java launcher + 一個小巧的JRE
因為 GCJ 還不很完美,目前我就是用上面的方法做 Java Windows 桌面應用的。
唯一遺憾的是 JRE 1.5 太大,壓縮后也有 20M 左右不利于程序分發。
(這里,首先我們不希望客戶自己下載安裝JRE,涉及到 JRE的版本兼容等問題)
雖然可以對 SUN JRE 進行大規模精簡,但這樣做顯然是不合規范的,
JRE 的授權信息里似乎有類似“可以隨意分發,但必須保證完整性”說法。
況且我也沒有找到全面的精簡 SUN JRE 的技術文章。
JRE 目錄下的 readme 有關于去掉可選內容的說明,
但即便是完全刪除可選內容,減掉的肥肉也是有限的。
有俠士提供了這篇文章:Understand JRE download size
大意是想說明“JRE 其實并不大,你可以下載它的 offline 安裝版本。”
這個離線安裝版本將不會下載部分可選的內容,而且安裝的時候可以定制安裝組件。
測試后發現真的不錯,比普通 offline 版本安裝后體積小了 20M 。
可惜的是本來可以更小一點,但為了兼容中文,必須安裝語言相關的組件。
然后,以這個相對輕便的 JRE 為基礎,剔除 Applet、AWT、Swing 相關內容。
因為我們使用 SWT ?。ㄕf實話,我討厭 Swing )
方法是用 WinRAR 解壓 jre/lib/rt.jar 包,搜索 applet 、awt 、swing 目錄
全部刪除后,再用 WinRAR 以 zip 存儲模式(注重)后改名成 rt.jar,替換原文件
jre/bin/awt.dll 可以刪除。 刪除 jre/ 目錄下所有文件,除了bin/目錄 與lib/目錄
(應該還有其他可以精簡的,比如jre readme 里說的一些,但偶沒多試,只抓了大頭)
完成后就開始打包壓縮了,慢著,不是用 WinRAR! 而是 NISI
這里有中文文檔:http://Foobar.nease.net/nsis/
它試一個安裝制作程序,很棒,用 NISI 的 LZMA 壓縮算法效果絕對出乎你的意料。
不會用 NISI 可以像我這樣先把整個東西打包成ZIP,然后用 NISI 的 Zip2Exe 工具轉換
完成后結果就出來了,我的 J2SE 1.5 Updata4 最終大小是 11.4M
NISI 不但是個壓縮工具,同時它更加是個安裝程序制作工具,非常棒!
你順便就可以用它做安裝程序(帶著JRE 和 業務程序本身)
========================================================================
下面是一些相關內容:
SWT:Eclipse 圖形組件
Java launcher:一個加載java程序的小工具,
我發現用它啟動Java還可以一直保持鼠標的沙漏狀態
關于 SWT + Java launcher ,可以看這篇文章(強烈推薦):
http://www.49028c.com/glchengang/archive/2005/06/12/173070.Html
新聞熱點
疑難解答