簡體   English   中英

如何在Web瀏覽器上部署Java Swing應用程序?

[英]How to deploy Java Swing Application on Web Browser?

我發現了我剛剛提出的完全相同的問題,但它已經 7 歲了; 所以如果可能的話,我想有一個“更新”的答案。 謝謝。

過去

正如TrogDor 所評論的,以前有兩種方法可以通過 web 部署 Swing 應用程序:

  • Java小程序技術
    您的應用程序將出現在瀏覽器中 web 頁面上的一個矩形內。
  • Java Web 啟動技術
    單擊 web 頁面上的鏈接會將您的 Swing 應用程序的副本下載到用戶的本地計算機,然后您的應用程序將使用本地安裝的Z18B5A217C4DAD25639D7D3A05EDB0E在本地啟動。 因此,您的應用程序與 web 瀏覽器分開運行。 這個點擊下載並運行的過程由Java 網絡啟動協議 (JNLP)定義。

這兩種都將被淘汰。

➥ 詳見Oracle發布的白皮書Java Client Roadmap Update ,更新於2020-05-11。

如今

現代方法是構建Swing和/或JavaFX應用程序,然后使用打包工具進行部署以包含 JVM。 您最終會得到一個完整的、獨立的、可自啟動的應用程序。

這意味着您需要多個構建,一個應用程序用於您的用戶可能部署的每個平台(macOS、Linux、BSD、Windows 等)。 雖然這對您來說是一個額外的負擔,但另一方面是您可以准確控制正在使用哪個版本的 Java 來運行您的應用程序。

由於 Java 9 和更高版本中的Java 平台模塊系統( JSR 376 ) 和更高版本,您現在可以剝離捆綁的 Z18B5A217C4DAD25662D3A05EDB0E39DZ 實際使用的部件和庫以僅包含特定應用程序。

近年來,用於打包應用程序的構建工具發展迅速。 因此,請務必進行研究以找到最強大和最現代的工具。

備擇方案

您可以考慮以下任何一種選擇:

  • OpenWebStart
    重新實現Java Web 開始
  • 虛擬機
    Java 應用程序的提前本機代碼編譯
  • 瓦丁流
    使用 Java 構建作為 web 應用程序交付的桌面式應用程序

OpenWebStart

您可能對Java Web Start技術的單獨實現感興趣。

While Oracle is phasing out Java Web Start , there is an open-source implementation of JSR 56: Java Network Launching Protocol and API called OpenWebStart . GitHub 該項目目前由Karakun公司維護,基於Adoptium (née AdoptOpenJDK)開發的IcedTea-Web核心功能。

虛擬機

一個前沿的替代方案是使用GraalVM構建一個完全原生代碼提前編譯的應用程序版本。

瓦丁流

使用 Java 構建 web 應用程序的一種完全不同的方法是Vaadin Flow框架。

您使用小部件指定用戶界面布局的方式與Swing非常相似,指定小部件的排列(按鈕、字段、標簽等)。 您可以使用您選擇的直接 Java 代碼、基於 XML 的描述語言或可視化設計工具來執行此操作。

At run-time, Vaadin automatically automatically generates the HTML, CSS, and JavaScript necessary to render your app remotely on the client user's machine within a web browser. 因此,您在服務器端有純 Java,在客戶端沒有 Java,只有Web 標准技術內置於所有現代瀏覽器中。

更多信息

所有這些都已經在 Stack Overflow 上多次介紹過。 因此,搜索以了解更多信息。

有關獲取 JVM 以與您的應用程序捆綁的提示,請參閱如何讓 java 11 運行時環境正常工作,因為沒有更多的 jre 11 可供下載? .

現在,您可以在瀏覽器中使用 UI 在服務器上運行 Swing 應用程序。 您可以在此處找到示例: https://github.com/JetBrains/projector-demo

暫無
暫無

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

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