2009-06-02 116 views
2

我該如何捆綁一個精簡的JVM才能運行我的應用程序?將jvm與應用程序捆綁在一起

我想剝離JVM,以便將其包含在我的應用程序中。我知道exe文件可以做到這一點,但我想知道的是如何?這樣我就可以編寫腳本併爲多個操作系統創建捆綁包,而不僅僅是Windows。

回答

2

儘管從技術角度可能會取消JRE分發,但請仔細閱讀許可協議。對於Java 6中規定:

[...] Sun授予您 非獨家的,不可轉讓的,有限的許可,而不 費,複製和分發軟件,提供 是:(i)您分發軟件完整 未經修改,只爲捆綁的一部分,以及運行的唯一目的 ,你的程序[...] {補充許可條款,(B)}

我讀它這樣的:您只能分發完整(Sun)JRE 6(或JDK 6)。

+2

這不是100%準確。首先,許可證允許在JRE中重新分配時忽略一些文件,但不是最大的文件。其次,有開源實現:OpenJDK,Apache Harmony,GCJ。最後,還有一個商業Java實現,它允許您在打包應用程序時以符合許可證的方式忽略Java庫的某些部分(請參閱下面的答案)。 – 2010-12-22 07:16:08

-1

對於絕大多數用戶(也就是說那些安裝了Java運行時的用戶),您不應該分發您自己的自定義執行環境,實際上這樣做違背了Java的"spirit"

Java代碼旨在可在任何環境中運行,您可以通過創建executable .jar輕鬆地複製.exe與Java程序的雙擊運行行爲。

這可能不是您正在尋找的答案,如果是的話,討論授權精簡JVM的答案就是您所需要的。但是大多數Java開發人員應該不需要跳過這樣的環節。簡單地分發你的Jars並讓用戶自己安裝Java運行時。

+0

正如本文所述:http://blog.vinceliu.com/2008/01/bundling-minimal-bare-bones-jvm-with.html「人們不喜歡Java作爲桌面應用程序的一個抱怨是這可能是因爲JVM的存在使得JVM有了額外的必要條件,而JVM通常不會與當前市場上的任何主流操作系統捆綁在一起,或者它可能是所需JVM的錯誤版本,這使得它對於最終用戶來說真的很煩人,如果他們只是想要一些「開箱即用」的東西。「 – 2015-10-19 08:03:04

+1

「開箱即用」是Java的主意。對於開發人員打算支持的每個平臺,都需要編譯沒有運行時需求的代碼,最終用戶需要知道他們需要哪個版本。終端用戶現在也擔心,如果出現錯誤和安全問題,他們需要保持這些程序的最新狀態。隨着Java開發人員獲得更簡單的開發過程,用戶可以獲得更簡單,更安全的應用程序我很欣賞單個.exe的吸引力,但它顯然簡單是一個誤用。 – dimo414 2015-10-19 09:58:11

相關問題