我发现了和我刚才问的完全一样的问题,但它是7年前的;所以如果可能的话,我想得到一个“更新”的答案。谢谢。
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 System(JSR 376),您现在可以剥离捆绑的JVM和库,只包含特定应用程序实际使用的部分。近年来,用于打包应用的构建工具发展迅速,所以一定要做好研究,找到最强大、最现代的工具。
您可以考虑以下任何替代方案:
提前编译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构建应用的完全原生代码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?。
v64noz0r2#
现在你可以在服务器上运行Swing应用程序,用户界面在浏览器中。你可以在这里找到示例:https://github.com/JetBrains/projector-demo.
2条答案
按热度按时间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 System(JSR 376),您现在可以剥离捆绑的JVM和库,只包含特定应用程序实际使用的部分。
近年来,用于打包应用的构建工具发展迅速,所以一定要做好研究,找到最强大、最现代的工具。
替代品
您可以考虑以下任何替代方案:
提前编译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?。
v64noz0r2#
现在你可以在服务器上运行Swing应用程序,用户界面在浏览器中。你可以在这里找到示例:https://github.com/JetBrains/projector-demo.