簡體   English   中英

如何分發 Java 應用程序

[英]How to distribute Java Application

我想了解分發 Java 應用程序的各種選項。

我知道你可以

  • 分發源碼讓用戶自己編譯,或者提供make文件等。
  • 將其打包成 JAR,並具有自解壓檔案
  • 和(我敢肯定,還有無數其他方式)

我希望對最常見的選項(以及我沒有想到的選項)有一些解釋,特別是它們是否需要用戶擁有 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 實現

其次,獲取許可條款滿足您需求的 Java 實現。 條款各不相同。 有些是免費的,有些是商業產品。

這是我制作的流程圖以幫助您選擇。

在此處輸入圖片說明

構建最終應用

第三,使用jlinkjpackage等工具構建獨立應用程序。

此過程的工具正在迅速發展。 因此,可能會有其他工具進入市場。

您捆綁的 JDK 具有針對特定主機操作系統的本機代碼。 因此,您需要為您選擇支持的每個部署平台單獨構建應用程序。

順便說一句,請務必檢查您的應用程序中包含的每個庫的許可條款。

替代方案: GraalVM

使用GraalVM提前編譯為本機代碼的另一種方法。 這是最前沿的技術,所以要小心,但很有前途。

暫無
暫無

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

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