1

我知道我可以将 Swing 应用程序转换为 Applet 或 Java Web Start 应用程序。是否可以对不是 Swing 的应用程序做同样的事情,比如使用 Java 的 Qt?

我真正在寻找的是一个使用 Java 的 UI 框架,它尽可能跨平台,并且还具有丰富的 UI 功能集。能够将应用程序作为桌面或 Web 应用程序运行会更可取。

4

4 回答 4

2

我真正在寻找的是一个使用 Java 的 UI 框架,它尽可能跨平台,并且还具有丰富的 UI 功能集。

假设桌面部署,三个主要框架是SwingSWTJavaFX

试试JavaFX Ensemble 示例,看看该技术是否适合您的需要。

我知道我可以将 Swing 应用程序转换为 Applet 或 Java Web Start 应用程序。是否可以对不是 Swing 的应用程序做同样的事情,比如使用 Java 的 Qt?

QT 是不在 JVM 上运行的本机代码 - 它不是 Java UI 框架。Applet 和 Web Start 程序需要一个 Java 类作为它们的入口点。在这种情况下,任何使用 QT 都需要 Java <=> QT 适配层,我不知道存在任何此类东西 - 您可能需要基于JNI等技术自己构建它。

能够将应用程序作为桌面或 Web 应用程序运行会更可取。

有关各种 JavaFX 部署选项的信息,请参阅JavaFX 部署指南,有关各种 Swing 部署选项的信息,请参阅Swing 部署指南

Web 应用程序的定义非常模糊。以下是一些不同的场景:

  • 您仅限于 html5 => 在服务器上生成 html 以分发给客户端。
  • 您希望 html 启动 Java 应用程序 => 然后可以使用 WebStartJava 部署工具包相结合的东西。
  • 您将在浏览器窗口中呈现 JavaFX 应用程序 => 然后使用浏览器嵌入式应用程序

嵌入java应用程序有很多陷阱是网页(只需使用google发现其中一些)。

于 2013-01-24T19:04:45.717 回答
0

如果您想使用 Qt,您首先必须为 Java 制作 Qt 绑定,因为它们当前无法使用。

如果您想使用 Java Applet 中的 Qt 绑定,您需要将您的绑定设置为可安装的扩展,除非您知道自己在做什么,否则这将是一个潜在的安全风险。您还必须让用户安装您的扩展程序。此外,Linux 附带的 FOSS 插件 IcedTea-web 也不会加载扩展。所以如果你想让你的扩展在 Linux 上工作,你将不得不 fork IcedTea-web 并制作你自己的插件。

所以简短的回答是:坚持使用 Swing。

于 2014-03-14T20:50:25.420 回答
0

我在其中一个项目中所做的是将应用程序开发为 Web 应用程序,然后生成可安装的应用程序来分发我的应用程序。这有很大的好处:

  1. 它可以安装在服务器中并公开可用。就像普通的 Web 应用程序一样。
  2. 它也可以安装在桌面上。

我使用“ Jetty ”将 Web 服务器嵌入到我的应用程序中,并且能够在桌面环境中作为独立的应用程序运行该应用程序。Jetty 的口号是“不要在 Jetty 中部署你的应用程序,在你的应用程序中部署 Jetty”。

我还使用“ IzPak ”将我的应用程序打包到可执行 JAR 中以进行安装。如果您想让可能没有安装 Java 的人轻松安装该 JAR,您可以使用launch4j,这是一个将 JAR 包装到 EXE 中的工具。因此,它可以首先验证计算机是否已经安装了 Java,如果没有,则通知用户他需要安装 Java 才能继续。唯一的缺点是,如果您将应用程序包装在 EXE 中,则会限制对其他平台的可移植性,但这是您根据要求做出的决定。

于 2013-01-24T18:21:01.220 回答
0

Java Web Start 应用程序可以包含本机库,所以是的,您应该能够将使用 Qt 的应用程序(假设存在绑定)转换为 JWS 应用程序。

另一方面,Applet 很难与 AWT/Swing 以外的任何东西一起工作,因为您无法控制顶级窗口的创建。

于 2013-01-24T23:25:00.463 回答