【问题标题】:Converting Java Desktop Application to Web using Applet or Java Web Start使用 Applet 或 Java Web Start 将 Java 桌面应用程序转换为 Web
【发布时间】:2014-03-15 04:50:25
【问题描述】:

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

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

【问题讨论】:

  • Java Web Start 应该可以了,你试过了吗?

标签: java qt applet javafx jnlp


【解决方案1】:

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

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

试试JavaFX Ensemble sample,看看该技术是否适合您的需求。

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

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

最好能够将应用程序作为桌面或 Web 应用程序运行。

请参阅 JavaFX deployment guide 了解各种 JavaFX 部署选项和 Swing deployment guide 了解各种 Swing 部署选项。

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

  • 您只能使用 html5 => 在服务器上生成 html 以 分发给客户端。
  • 您希望 html 启动 Java 应用程序 => 然后像 WebStart 与 可以使用Java Deployment Toolkit
  • 您将渲染一个 浏览器窗口中的 JavaFX 应用程序 => 然后使用 browser embedded app

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

【讨论】:

  • 反对者愿意分享他们的理由吗?这是这里唯一值得投票的答案。
【解决方案2】:

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

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

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

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

【讨论】:

  • 那么作为已安装的应用程序,您的 Web 应用程序将使用浏览器和 localhost URL 访问?
  • @user994165 是的,我有一些代码可以启动默认浏览器并打开应用程序所在的 URL (localhost)。
【解决方案3】:

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

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

【讨论】:

    【解决方案4】:

    如果您想使用 Qt,您首先必须为 Java 进行 Qt 绑定,因为它们目前无法正常工作。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多