使用Applet或Java Web Start将Java桌面应用程序转换为Web

时间:2013-01-24 18:07:06

标签: java qt applet javafx jnlp

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

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

4 个答案:

答案 0 :(得分:2)

  

我真正想要的是使用Java的UI框架,它尽可能地跨平台,并且还具有丰富的UI功能。

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

尝试使用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应用程序的定义非常模糊。以下是一些不同的场景:

  • 您仅限于html5 =>在服务器上生成html 分发给客户。
  • 您希望html启动Java application =>然后像WebStart这样的东西组合起来 可以使用Java Deployment Toolkit
  • 你将渲染一个 浏览器窗口中的JavaFX应用程序=>然后使用browser embedded app

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

答案 1 :(得分:0)

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

  1. 它可以安装在服务器中并公开提供。就像普通的Web应用程序一样。
  2. 它也可以安装在桌面上。
  3. 我使用“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并制作自己的插件。

所以简短的回答:坚持摇摆。