簡體   English   中英

剝離JRE與應用程序捆綁在一起 - 我可以省略什么?

[英]Stripping the JRE to be bundled with an application - what can I omit?

我只是將$JAVA_HOME/jre的文件復制到我的應用程序發行版中,就一直在將JRE與我的應用程序捆綁在一起。 這可能違背了Java的精神,但它通過確保我的應用程序在經過測試的JRE版本上運行來減少潛在問題(包括比特;我使用一些JNI,它要求JRE是32位版本)。

它工作正常,但整個發行版有點大,所以可能會遺漏一些不必要的文件? 實際上, $JAVA_HOME/jre/README.txt包含以下建議:

組成Java SE運行時環境的文件分為兩類:必需和可選。 可供供應商自行決定從Java SE運行時環境的重新分發中排除可選文件。

以下部分包含可以選擇從Java SE運行時環境的重新分發中省略的文件和目錄的列表。 不在這些可選文件列表中的所有文件都必須包含在運行時環境的重新分發中。

...當使用自定義啟動器將Microsoft Windows上的JRE重新分發為私有應用程序運行時(其他應用程序無法訪問)時,以下文件也是可選的。 這些是用於Internet Explorer和Mozilla系列瀏覽器中的Java支持的庫和可執行文件; 私有JRE重新分發中不需要這些文件。

讓我感到困惑的是,可選文件列表包括:

bin\java.exe
bin\javaw.exe
bin\javaws.exe

java/javaw.exe如何可選? 如果沒有它們我應該如何啟動Java應用程序? 顯然我不知道某些事情(可能),或者指示是完全錯誤的。

使用自定義啟動器將Microsoft Windows上的JRE重新分發為私有應用程序運行時(其他應用程序無法訪問)時,以下文件也是可選的。

如果在自己的應用程序中嵌入JVM(通過鏈接其共享庫),則不需要獨立的啟動程序可執行文件。 例如,我認為Eclipse就是這樣運作的。

如果您的應用程序使用java可執行文件(例如通過批處理文件),那么您當然需要它們。

雖然這與問題沒有嚴格關系,但對於刪除“不需要的代碼”的整個程序(或整個平台)優化,我發現ProGuard是一個很好的工具。 因人而異。

如何使用launch4j之類的工具將其轉換為可執行文件? 您在此處找到的更多建議(不在接受的答案中)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM