如何在 Web 浏览器上部署 Java Swing 应用程序?
How to deploy Java Swing Application on Web Browser?
我发现了我刚刚提出的完全相同的问题,但它已有 7 年历史了;所以如果可能的话,我想得到一个 "updated" 的答案。谢谢。
旧时光
作为,以前有两种通过网络部署Swing应用程序的方法:
- Java Applet 技术
您的应用将出现在浏览器网页的矩形内。
- Java Web Start technology
Clicking a link on a web page would download a copy of your Swing app to the user’s local machine, where your app would then be launched locally using a locally-installed JVM. So your app runs separate from the web browser. This click-to-download-and-run process is defined by Java Network Launching Protocol (JNLP).
这两个都将被淘汰。
➥ 有关详细信息,请参阅 Oracle 发布的白皮书 Java Client Roadmap Update,更新于 2020-05-11。
如今
现代方法是构建一个 Swing and/or JavaFX 应用程序,然后使用包含 JVM 的打包工具进行部署。您最终会得到一个完整的自包含自启动应用程序。
这意味着您需要多个构建,一个应用程序适用于您的用户可能部署的每个平台(macOS、Linux、BSD、Windows,等等)。虽然这对您来说是一个额外的负担,但不利的一面是您可以准确控制 Java 用于 运行 您的应用程序的版本。
由于 Java 9 及更高版本中的 Java Platform Module System (JSR 376),您现在可以剥离捆绑的 JVM 和库,仅包含您的特定应用程序实际使用的部分。
近年来,用于打包应用的构建工具发展迅速。因此,请务必进行研究以找到最强大和最现代的工具。
备选方案
您可以考虑以下任何一种选择:
- OpenWebStart
JavaWeb Start 的重新实现
- GraalVM
Java 应用程序的提前本机代码编译
- Vaadin Flow
使用Java构建作为 Web 应用程序交付的桌面风格应用程序
OpenWebStart
您可能对 Java Web Start 技术的单独实现感兴趣。
虽然 Oracle 正在逐步淘汰 Java Web Start,但有一个 JSR 56: Java Network Launching Protocol and API called OpenWebStart. See GitHub. This project is currently maintained by the company Karakun, based on the IcedTea-Web core functionality developed at Adoptium (née AdoptOpenJDK).
的开源实现
GraalVM
一个前沿的替代方案是构建一个完全本地代码 ahead-of-time compiled version of your app using GraalVM。
Vaadin 流
使用 Java 构建 Web 应用程序的一种完全不同的方法是 Vaadin Flow 框架。
您使用小部件指定用户界面布局的方式与 Swing 非常相似,指定小部件(按钮、字段、标签等)的排列。您可以使用您选择的直接 Java 代码、基于 XML 的描述语言或可视化设计工具来实现。
在 运行 时,Vaadin 会自动自动生成 HTML、CSS 和 Java 脚本,以便在客户端用户的计算机上远程呈现您的应用程序网络浏览器。因此,您在服务器端有纯 Java,在客户端没有 Java,只有所有现代浏览器内置的 Web standards 技术。
更多信息
所有这些都已在 Stack Overflow 上多次提及。所以搜索以了解更多信息。
有关获取 JVM 以与您的应用捆绑的提示,请参阅 。
如今,您可以 运行 服务器上的 Swing 应用程序与 UI 在浏览器中。您可以在此处找到示例:https://github.com/JetBrains/projector-demo.
我发现了我刚刚提出的完全相同的问题,但它已有 7 年历史了;所以如果可能的话,我想得到一个 "updated" 的答案。谢谢。
旧时光
作为
- Java Applet 技术
您的应用将出现在浏览器网页的矩形内。 - Java Web Start technology
Clicking a link on a web page would download a copy of your Swing app to the user’s local machine, where your app would then be launched locally using a locally-installed JVM. So your app runs separate from the web browser. This click-to-download-and-run process is defined by Java Network Launching Protocol (JNLP).
这两个都将被淘汰。
➥ 有关详细信息,请参阅 Oracle 发布的白皮书 Java Client Roadmap Update,更新于 2020-05-11。
如今
现代方法是构建一个 Swing and/or JavaFX 应用程序,然后使用包含 JVM 的打包工具进行部署。您最终会得到一个完整的自包含自启动应用程序。
这意味着您需要多个构建,一个应用程序适用于您的用户可能部署的每个平台(macOS、Linux、BSD、Windows,等等)。虽然这对您来说是一个额外的负担,但不利的一面是您可以准确控制 Java 用于 运行 您的应用程序的版本。
由于 Java 9 及更高版本中的 Java Platform Module System (JSR 376),您现在可以剥离捆绑的 JVM 和库,仅包含您的特定应用程序实际使用的部分。
近年来,用于打包应用的构建工具发展迅速。因此,请务必进行研究以找到最强大和最现代的工具。
备选方案
您可以考虑以下任何一种选择:
- OpenWebStart
JavaWeb Start 的重新实现
- GraalVM
Java 应用程序的提前本机代码编译 - Vaadin Flow
使用Java构建作为 Web 应用程序交付的桌面风格应用程序
OpenWebStart
您可能对 Java Web Start 技术的单独实现感兴趣。
虽然 Oracle 正在逐步淘汰 Java Web Start,但有一个 JSR 56: Java Network Launching Protocol and API called OpenWebStart. See GitHub. This project is currently maintained by the company Karakun, based on the IcedTea-Web core functionality developed at Adoptium (née AdoptOpenJDK).
的开源实现GraalVM
一个前沿的替代方案是构建一个完全本地代码 ahead-of-time compiled version of your app using GraalVM。
Vaadin 流
使用 Java 构建 Web 应用程序的一种完全不同的方法是 Vaadin Flow 框架。
您使用小部件指定用户界面布局的方式与 Swing 非常相似,指定小部件(按钮、字段、标签等)的排列。您可以使用您选择的直接 Java 代码、基于 XML 的描述语言或可视化设计工具来实现。
在 运行 时,Vaadin 会自动自动生成 HTML、CSS 和 Java 脚本,以便在客户端用户的计算机上远程呈现您的应用程序网络浏览器。因此,您在服务器端有纯 Java,在客户端没有 Java,只有所有现代浏览器内置的 Web standards 技术。
更多信息
所有这些都已在 Stack Overflow 上多次提及。所以搜索以了解更多信息。
有关获取 JVM 以与您的应用捆绑的提示,请参阅
如今,您可以 运行 服务器上的 Swing 应用程序与 UI 在浏览器中。您可以在此处找到示例:https://github.com/JetBrains/projector-demo.