我发现了同样的问题,但它已经7年了,所以我想得到一个“更新”的答案,如果可能的话。谢谢。
发布于 2020-04-11 14:55:03
旧日
作为TrogDor评论,以前有两种方法可以通过网络部署Swing应用程序:
这两种情况都正在逐步取消。
有关详细信息,请参阅甲骨文发布的白皮书https://www.oracle.com/technetwork/java/javase/javaclientroadmapupdatev2020may-6548840.pdf,更新时间为2020-05-11.
时下
现代方法是构建一个秋千和/或JavaFX应用程序,然后通过使用打包工具来包含JVM来进行部署。最后,您将得到一个完整的自带自启动应用程序。
这意味着您需要多个构建,每个用户可以在其上部署一个应用程序(macOS、Linux、BSD、Windows等等)。虽然这对你来说是一个额外的负担,但另一方面是,你可以精确地控制Java的哪个版本来运行你的应用程序。
由于Java9中的https://en.wikipedia.org/wiki/Java_Platform_Module_System (JSR 376)以及更高版本,您现在可以去掉捆绑的JVM和库,只包括特定应用程序实际使用的部分。
最近几年,用于打包应用程序的构建工具正在迅速发展。因此,一定要做您的研究,以找到最强大和现代的工具。
备选方案
您可能会考虑以下任何一种选择:
OpenWebStart
您可能对Java技术的单独实现感兴趣。
虽然甲骨文正在逐步淘汰Java,但有一个名为http://www.jcp.org/en/jsr/detail?id=56的开源实现,称为https://openwebstart.com/。见GitHub。该项目目前由卡拉昆公司维护,基于https://adoptopenjdk.net/开发的https://github.com/AdoptOpenJDK/IcedTea-Web核心功能。
GraalVM
最先进的选择是使用提前编制构建一个完全原生代码的GraalVM版本的应用程序。
Vaadin流
使用Java构建web应用程序的一种完全不同的方法是https://en.wikipedia.org/wiki/Vaadin#Vaadin_Flow框架。
您可以使用类似于秋千的方式指定具有小部件的用户界面布局,指定小部件的排列(按钮、字段、标签等)。您可以通过选择直接的Java代码、基于XML的描述语言或可视化设计工具来做到这一点。
在运行时,Vaadin自动生成必要的HTML、CSS和JavaScript,以便在web浏览器中在客户端用户的机器上远程呈现应用程序。所以,服务器端有纯Java,客户端没有Java,只有内置于所有现代浏览器中的Web标准技术。
更多信息
所有这些都已经在堆栈溢出中被多次覆盖了。所以,搜索,了解更多。
有关获得JVM与应用程序捆绑的技巧,请参见https://stackoverflow.com/q/53111921/642706。
发布于 2020-06-11 11:02:01
现在,您可以在服务器上运行Swing应用程序,在浏览器中使用UI。您可以在这里找到例子:https://github.com/JetBrains/projector-demo。
https://stackoverflow.com/questions/61164047
复制