[英]How to distribute Java Application
我想了解分發 Java 應用程序的各種選項。
我知道你可以
我希望對最常見的選項(以及我沒有想到的選項)有一些解釋,特別是它們是否需要用戶擁有 JVM,或者是否可以與一個 JVM 捆綁在一起 - 就我個人而言,我不是太喜歡由於缺乏 JVM 而停止的安裝程序。 誰說應用程序需要安裝程序,獨立解決方案也不錯。
另外,值得詢問的是如何處理跨平台分發、exe 與 dmg 等...
我對這個問題的主要動機(我認為這與其他問題類似)是找到不需要用戶已經安裝 JVM 的解決方案 - 但為了完整性,我一般都會問。
非常感謝
分發源碼讓用戶自己編譯,或者提供make文件等。
這對於開源項目來說可能沒問題,但對於任何商業項目來說都非常不尋常。 我建議為技術人員提供它作為一個選項,但也分發 JAR
打包成JAR
我稱之為最佳實踐
並有自解壓檔案
使 jar 可執行文件怎么樣?
我希望對最常見的選項(以及我沒有想到的選項)有一些解釋,特別是它們是否需要用戶擁有 JVM,或者是否可以與一個 JVM 捆綁在一起 - 就我個人而言,我不是太喜歡由於缺乏 JVM 而停止的安裝程序。
我認為捆綁 JRE 是不合法的。 也就是說,很明顯,如果沒有 Java,基於 Java 的解決方案將無法工作。 如果未安裝 JRE,OpenOffice 和許多其他軟件將無法安裝。 我會說這是可以理解的。
IzPack似乎是創建基於 Java 的安裝程序的一個很好的解決方案。
我對這個問題的主要動機(我認為這與其他問題類似)是找到不需要用戶已經安裝 JVM 的解決方案
正如我所寫,我認為捆綁 JRE [更新:這是合法的,請閱讀此文檔以供參考](這也不是一個好的選擇,因為您必須捆綁許多不同的操作系統/架構組合)是不合法的。 所以唯一的另一種方法是本機編譯(無法幫助你,抱歉)。
InstallBuilder允許您輕松分發 Java 應用程序並捆綁一個 JVM(盡管它本身不需要 Java,所以正如您提到的,您永遠不會出錯,因為最終用戶在機器中沒有 JVM)。 它是一種商業產品(免責聲明,我是原始開發人員)但我們對小型 ISV 和開源項目的免費許可證有折扣。 它被 MySQL/Oracle、Jaspersoft、Alfresco、Pentaho 和一堆其他具有基於 Java 的工具的 ISV 使用,這些應用程序已經被下載了數百萬次,沒有出現重大問題。 試一試 :)
一般來說,你有幾個選擇:
1) Java Web Start
2) Run it as an applet
3) download and install.
您主要對選項 3 感興趣。您有多種安裝程序(InstallJammer 是其中之一,但您還有其他)可以為其創建安裝包。 由於您正在考慮分發 JVM(您可以這樣做),因此您正在為您所針對的每個平台尋找不同的安裝程序。
對於簡單的產品,我喜歡獲得一個可執行的 jar。 見http://one-jar.sourceforge.net/
對於任何大型產品,都需要安裝程序。 (InstallAnywhere、Install4J、LzPack 等將幫助您創建一個)
在現代 Java 中,您可以為特定的主機操作系統生成一個帶有捆綁 JVM 的獨立應用程序。
有關背景信息,請閱讀 Oracle 白皮書Java 客戶端路線圖更新,更新於 2020 年 5 月。
首先,模塊化您的應用程序以支持Java 平台模塊系統。 您可以在書籍、演示視頻和許多博客文章中了解這一點。
模塊化的好處之一是可以將捆綁的 JDK 精簡為僅包含您在應用程序中實際使用的部分。 這導致使用更少的存儲和更少的內存。
其次,獲取許可條款滿足您需求的 Java 實現。 條款各不相同。 有些是免費的,有些是商業產品。
這是我制作的流程圖以幫助您選擇。
第三,使用jlink和jpackage等工具構建獨立應用程序。
此過程的工具正在迅速發展。 因此,可能會有其他工具進入市場。
您捆綁的 JDK 具有針對特定主機操作系統的本機代碼。 因此,您需要為您選擇支持的每個部署平台單獨構建應用程序。
順便說一句,請務必檢查您的應用程序中包含的每個庫的許可條款。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.