如何在Web浏览器上部署Java Swing应用程序?

uinbv5nw  于 2023-02-18  发布在  Java
关注(0)|答案(2)|浏览(223)

我发现了和我刚才问的完全一样的问题,但它是7年前的;所以如果可能的话,我想得到一个“更新”的答案。谢谢。

bvjveswy

bvjveswy1#

∮旧时光∮
正如TrogDor所评论的,以前有两种方法可以通过Web部署Swing应用:

您的应用将显示在浏览器中网页上的一个矩形内。

点击网页上的链接会将Swing应用的副本下载到用户的本地计算机,然后使用本地安装的JVM在本地启动应用。因此,应用独立于Web浏览器运行。这个点击下载并运行的过程由 Java网络启动协议(JNLP) 定义。
这两种做法都正在逐步取消。
详细信息请参见甲骨文发布的白色Java Client Roadmap Update,更新日期为2020-05-11。
∮如今∮
现代的方法是构建一个Swing和/或JavaFX应用程序,然后使用打包工具将JVM包含在内进行部署,最终得到一个完整的自包含自启动应用程序。
这意味着您需要多个版本,每个用户可能部署的平台(macOS、Linux、BSD、Windows等)都需要一个应用。虽然这会给您带来额外负担,但另一方面,您可以准确控制运行应用所使用的Java版本。
由于Java 9和更高版本中的Java Platform Module SystemJSR 376),您现在可以剥离捆绑的JVM和库,只包含特定应用程序实际使用的部分。
近年来,用于打包应用的构建工具发展迅速,所以一定要做好研究,找到最强大、最现代的工具。

替代品

您可以考虑以下任何替代方案:

  • 远程执行
    • 开放网络起点 *
  • Java Web Start* 的重新实现
  • GraalVM

提前编译Java应用的本机代码

    • 瓦丁流量 *

使用Java构建作为Web应用程序交付的桌面样式应用程序

远程执行

某些供应商可能提供一种产品或服务,可以在Web浏览器中显示用户界面的同时远程执行Swing应用程序。
WEBSWING Ltd.就是这样一家公司,它推出了Webswing产品。

* 打开网络起点 *

您可能会对 Java Web Start 技术的单独实现感兴趣。
当Oracle逐步淘汰 Java Web Start 时,JSR 56: Java Network Launching Protocol and API有一个开源实现,称为OpenWebStart。请参阅GitHub。此项目目前由Karakun公司维护,基于Adoptium (née AdoptOpenJDK)开发的IcedTea-Web核心功能。

GraalVM

一个最前沿的替代方案是使用GraalVM构建应用的完全原生代码ahead-of-time compiled版本。

* 瓦丁流量 *

使用Java构建Web应用的另一种完全不同的方法是 Vaadin Flow 框架。
使用小部件指定用户界面布局的方式与Swing非常相似,指定小部件的排列(按钮、字段、标签等),可以使用直接的Java代码、基于XML的描述语言或可视化设计工具来完成。
在运行时,Vaadin会自动生成HTML、CSS和JavaScript,以便在客户端用户的机器上通过Web浏览器远程渲染应用。因此,您在服务器端使用纯Java,而在客户端没有Java,所有现代浏览器都内置了Web standards技术。

更多信息

所有这些都已经在堆栈溢出中被讨论过很多次了。所以搜索以了解更多。
有关获取JVM以与应用捆绑的提示,请参阅How to get java 11 run-time environment working since there is no more jre 11 for download?

v64noz0r

v64noz0r2#

现在你可以在服务器上运行Swing应用程序,用户界面在浏览器中。你可以在这里找到示例:https://github.com/JetBrains/projector-demo.

    • 更新:**JetBrains停止将 * Projector * 作为单独的产品进行开发。请参阅their notice。他们已将该技术整合到Gateway产品中供自己使用,以便远程执行IDE产品。

相关问题