我知道我可以将Swing应用程序转换为Applet或Java Web Start应用程序。是不是可以对不是Swing的应用程序做同样的事情,比如Qt使用Java?
我真正想要的是使用Java的UI框架,它尽可能地跨平台,并且还具有丰富的UI功能。能够将应用程序作为桌面或Web应用程序运行是更可取的。
答案 0 :(得分:2)
我真正想要的是使用Java的UI框架,它尽可能地跨平台,并且还具有丰富的UI功能。
假设桌面部署,三个主要框架是Swing,SWT和JavaFX。
尝试使用JavaFX Ensemble sample查看该技术是否符合您的需求。
我知道我可以将Swing应用程序转换为Applet或Java Web Start应用程序。是不是可以对不是Swing的应用程序做同样的事情,比如Qt使用Java?
QT是不在JVM上运行的本机代码 - 它不是Java UI框架。 Applet和Web Start程序需要Java类作为其入口点。任何使用QT的情况都需要Java< =>。 QT适应层并且我不知道存在任何此类事物 - 您可能需要基于JNI等技术自行构建它。
最好能够将应用程序作为桌面应用程序或Web应用程序运行。
有关各种JavaFX部署选项,请参阅JavaFX deployment guide,有关各种Swing部署选项,请参阅Swing deployment guide。
Web应用程序的定义非常模糊。以下是一些不同的场景:
嵌入java应用程序有很多陷阱是网页(只是使用谷歌来发现其中一些)。
答案 1 :(得分:0)
我在其中一个项目中所做的是将应用程序开发为Web应用程序,然后生成可安装程序以分发我的应用程序。这有很大的好处:
我使用“Jetty”将Web服务器嵌入到我的应用程序中,并能够在桌面环境中独立运行该应用程序。 Jetty的口号是“不要在Jetty中部署您的应用程序,在您的应用程序中部署Jetty。”
我还使用“IzPak”将我的应用程序打包到可执行的JAR中进行安装。如果您想让那些可能没有安装Java的人轻松安装JAR,您可以使用launch4j这是一个将JAR包装到EXE中的工具。因此,它可以首先验证计算机是否已经具有Java,如果没有通知用户他需要安装Java才能继续。这样做的唯一缺点是,如果您将应用程序包装在EXE中,则限制了其他平台的可移植性,但这是您根据要求做出的决定。
答案 2 :(得分:0)
Java Web Start应用程序可以包含本机库,所以是的,您应该能够使用Qt(假设绑定存在)将应用程序转换为JWS应用程序。
另一方面,由于您无法控制顶级窗口的创建,因此小程序很难处理AWT / Swing以外的任何操作。答案 3 :(得分:0)
如果你想使用Qt,你首先必须为Java进行Qt绑定,因为它们目前无法正常运行。
如果您想使用Java Applet中的Qt绑定,您需要使绑定成为可安装的扩展,除非您知道自己在做什么,否则这将是一个潜在的安全风险。您还必须让用户安装您的扩展程序。 IcedTea-web也是Linux附带的FOSS插件,不会加载扩展名。因此,如果您希望扩展程序在Linux上运行,则必须分叉IcedTea-web并制作自己的插件。
所以简短的回答:坚持摇摆。