簡體   English   中英

BKM向最終用戶交付基於Web的Java應用程序+ Jetty + JRE

[英]BKM to deliver a web-based java application + Jetty + JRE to end-user

我有一個帶有基於Web的UI(使用Vaadin框架)的Java應用程序。 我希望用戶獲得該應用程序並在其本地計算機上運行。 一些用戶可能不是很熟練,所以需要使他們盡可能簡單和簡單。

可能的解決方案:

  1. 使用webapp + Jetty +批處理和shell腳本創建一個發行版以啟動該應用程序。 也許也包括JRE。 用戶故事將是:下載一些ZIP文件,解壓縮並運行“ start.bat”或“ start.sh”。 該腳本將啟動Jetty,並可能啟動帶有“ http:// localhost:8080 / myapp” URL的Web瀏覽器。 “安裝JRE”或“ Java的家在哪里”或“您的JRE太舊了”,等等,應該沒有魔術。這會嚇到很多非技術人員。 這里的困難:如果計算機沒有JRE怎么辦? 我想避免使用JRE創建3個不同的發行版(對於Win / Linux / MacOS)。 將所有3個JRE打包到同一個發行版中似乎是過大了。

  2. 我看到的另一種方法是使用Java Web Start。 我的應用程序將通過Jetty JAR作為依賴通過JWS下載,並在這種情況下啟動嵌入式Jetty。 用戶故事:單擊某些網站上的按鈕以在本地啟動該應用程序。 我記得大約5年前從代理后面使用JWS時遇到問題:無法加載依賴項。 不知道這是否仍然是一個問題。 從那時起我就再沒有使用過JWS,因此我對此非常熟悉。 JWS的另一個問題是,它要求人們必須連接到互聯網才能啟動該應用程序(至少是第一次或每次),但這並非總是可能的(某些組織無法連接到Internet)。 AFAIK,最后一個JWS建議安裝JRE(如果尚未安裝),因此對於最終用戶來說應該很容易。 可能就是JWS(?)的潛在問題。

  3. 最后,最后一種方法是使用launch4j或InstallShield之類的東西打包所有東西。 希望那些程序能夠安裝JRE(如果尚不存在),並且還可以在無頭模式下運行(對於服務器)。

到目前為止,假設JWS可以滿足我的要求,那么對於大多數用戶來說,選項2看起來是最簡單的。

所以,我的問題是:

  • 您會發現這3個解決方案還有哪些陷阱?
  • 在我的情況下,您會選擇哪一個?

我更喜歡將解決方案1和3結合使用。我的意思是:

  • 首先,使用運行您的web應用程序的嵌入式Jetty構建一個jar。 該jar必須具有一個主類(啟動嵌入式Jetty)和一個配置有“ Main-Class”屬性的MANIFEST.MF,因此可以使用以下名稱運行該jar:“ java -jar myEmbeddedWebApp.jar ”。
  • 然后,使用launch4j為該jar創建一個exe包裝器,例如myEmbeddedWebApp.exe

暫無
暫無

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

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