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



我发现了和我刚做的问题完全一样的问题,但它已经7岁了;所以如果可能的话,我想得到一个"更新"的答案。谢谢

过去的日子

正如TrogDor所评论的,以前有两种方法可以通过网络部署Swing应用程序:

  • Java Applet技术
    您的应用程序将出现在浏览器中网页上的一个矩形中
  • Java Web Start技术
    单击网页上的链接会将Swing应用程序的副本下载到用户的本地机器上,然后使用本地安装的JVM在本地启动您的应用程序。因此,您的应用程序独立于web浏览器运行。这个点击下载和运行过程由Java网络启动协议(JNLP(定义

这两者都在逐步淘汰。

➥有关详细信息,请参阅Oracle发布的白皮书Java Client Roadmap Update,更新于2020-05-11。

如今

现代方法是构建一个Swing和/或JavaFX应用程序,然后使用打包工具进行部署,以包含JVM。您最终得到了一个完整的自包含、可自启动的应用程序。

这意味着您需要多个构建,每个用户可能部署的平台(macOS、Linux、BSD、Windows等(都需要一个应用程序。虽然这对你来说是一个额外的负担,但另一方面,你可以准确地控制运行应用程序所使用的Java版本。

由于Java 9及更高版本中的Java平台模块系统(JSR376(,您现在可以剥离捆绑的JVM和库,只包括特定应用程序实际使用的部分。

近年来,用于打包应用程序的构建工具发展迅速。因此,一定要进行研究,找到最坚固、最现代的工具。

备选方案

你可以考虑以下任何一种选择:

  • 远程执行
  • OpenWebStart
    Java Web Start的重新实现
  • GraalVM
    提前编译Java应用程序的本机代码
  • Vaadin Flow
    使用Java构建作为web应用程序交付的桌面式应用程序

远程执行

一些供应商可能会提供一种产品或服务来远程执行您的Swing应用程序,同时在web浏览器中显示用户界面。

其中一家公司是WEBSWING有限公司,其WEBSWING产品。

OpenWebStart

您可能对JavaWebStart技术的单独实现感兴趣。

虽然Oracle正在逐步淘汰Java Web Start,但有一个名为OpenWebStartJSR56:Java Network Launching Protocol和API开源实现。请参阅GitHub。该项目目前由Karakun公司维护,基于Adoptium(née AdoptOpenJDK(开发的IcedTeaWeb核心功能。

GraalVM

一个前沿的替代方案是使用GraalVM提前构建应用程序的完全本地代码编译版本。

瓦丁流

使用Java构建web应用程序的一种完全不同的方法是VaadinFlow框架。

使用小部件指定用户界面布局的方式与Swing非常相似,指定小部件的排列(按钮、字段、标签等(。您可以使用直接的Java代码、基于XML的描述语言或可视化设计工具来实现这一点。

在运行时,Vaadin会自动生成必要的HTML、CSS和JavaScript,以便在web浏览器内的客户端用户机器上远程呈现您的应用程序。因此,服务器端有纯Java,客户端没有Java,只有内置在所有现代浏览器中的Web标准技术。

更多信息

所有这些都已经在Stack Overflow上进行了多次介绍。因此,搜索以了解更多信息。

有关获得JVM与应用程序捆绑的提示,请参阅由于没有更多的jre 11可供下载,如何使java 11运行时环境正常工作

如今,您可以在浏览器中使用UI在服务器上运行Swing应用程序。您可以在此处找到示例:https://github.com/JetBrains/projector-demo.

更新:JetBrains停止了投影仪作为单独产品的开发。请参阅他们的通知。他们在Gateway产品中引入了自己使用的技术,用于IDE产品的远程执行。

在浏览器中运行Java Swing应用程序,无需更改应用程序源代码即可使用Webswing-www.Webswing.org这里还有一个例子:https://prototype.webswing.org/webswing-demo/

最佳ig

相关内容

  • 没有找到相关文章

最新更新