将现有Web应用程序转换为桌面应用程序

时间:2012-02-27 04:46:53

标签: java swing user-interface desktop thick-client

我在这里看到了一些关于这个主题的其他类似问题,但是他们没有太大帮助,所以我提出了这个问题。

将尺寸合理,简单的Web应用程序转换为针对PC和Mac的基于Java桌面的客户端的最快方法是什么?不幸的是,由于各种原因,我无法在这里分享关于应用程序的大量细节。应用程序中最复杂的UI虽然是一个包含多级线程讨论的页面(请参阅here以获取我正在谈论的内容的说明性示例。)当前的Web应用程序基于python,所以我不能重新使用服务器端代码中的任何内容(不要认为这是一个问题)

我从未做过任何swing或awt或任何其他基于Java的胖客户端GUI工作。我的想法或多或少地由基于Web的应用程序定义。我能够使用Java或python进行端到端的Web应用程序开发(包括使用HTML,CSS和JS的后端和体面的UI)。对于您的答案,请仅关注Java解决方案。

所以这是我的问题 我应该使用的最佳框架或工具是什么?作为我研究的一部分,我在网上发现了以下一些工具。

  1. Awt - 看起来不是一个好选择。
  2. 我认为Swing与常规Java SDK / JRE捆绑在一起。 - 这可能是我最好的 打赌。
  3. SWT似乎以某种方式赞美Swing。
  4. Griffon基于这里的一篇文章。这个框架使用Groovy(我 不知道Groovy,顺便说一句Adobe Air flex。任何开源 框架?
  5. 我需要记住的其他一些问题是什么?我希望你评论的一些是:

    1. 需要在客户端部署它的事实如何使事情复杂化?由于我们使用Java,我认为这是一个非问题。我知道基于Web的应用程序和桌面应用程序之间通常的权衡(例如易于部署和升级等)。
    2. 创建一键安装程序并捆绑应用程序和所需的环境是多么容易 - 例如。 JRE等?
    3. 该产品需要在Mac和Windows上运行。这是否会以任何方式使事情复杂化(再次,因为它是Java,我假设没有陷阱,但如果有任何事情,我希望被预先警告)
    4. 作为技能组合,简历上可能有什么好处的框架或技术?
    5. 我的截止日期最长为2个月 - 考虑到我需要学习所有这些技术,这对于一个相当简单的网络应用程序是否足够?我只想在这里尝试一下 - 我知道很可能无法给出准确的答案 - 只要假设我足够聪明并且可以足够快地拿起任何不熟悉的技术堆栈。

      谢谢!

3 个答案:

答案 0 :(得分:5)

GUI工具包

考虑到“Mac和Windows”,我会说我的建议是“Swing”(可能是SwingX 1 )。

  1. 我同意你对AWT的评估。它不支持开箱即用的任何组件中的格式化文本。它还缺少树木,桌子(和其他组件)和最近有使用它的人。但请注意,它也像Swing一样“与常规Java SDK / JRE捆绑在一起”,它只是比Swing更老,更少启用。
  2. 如果有什么补充Swing,它将是SwingX。 SwingX构建于Swing之上,提供J2SE中“开箱即用”的高级控件。
  3. Swing和SWT是互不兼容的 - 使用其中一个。
  4. 我对Griffon没有经验。
  5. Swing是最常用的选项,所以为了获得帮助(忽略决策中其他可能重要的因素),这将是一个不错的选择。

    注1)如果SwingX有任何容易呈现线程对话的groovy组件,请添加SwingX,但我怀疑JTextPane就足够了。


    部署

    就部署而言,这比看起来更棘手。许多台式计算机没有标配Java。那些已经拥有它的人可能有旧版本。

    1. 确保运行应用程序的正确最低版本的JRE。如果可用,请使用deployJava.js(在下面的JWS页面中提及链接)。
    2. 要为用户提供“一键式”发布体验,请查看Java Web Start

    3. 跨平台的问题

      不幸的是,虽然Java是x-plat,但程序员可以做很多事情。 E.G。

      • 不考虑平台默认值:
        • 文件编码(file.encoding 2
        • 换行符(line.separator 2
        • 文件分隔符(file.separator 2
      • 编码固定大小('绝对布局')应用。这将显示为不同大小的应用程序。在其他操作系统上。
      • ...

      注意2.这表示要为每个使用的属性。


      时刻表

      显然我不能代表您,但我可以告诉您,我将无法在两个月内从“哪种技术”转变为“可部署的应用程序”。

      希望你比我更有能力! ;)

答案 1 :(得分:0)

您可以尝试小步骤: *作为第一步,您可以使用SWT创建应用程序并将您的应用程序嵌入浏览器控件中。 *然后,您应该逐页将页面和一些控件从Web应用程序移动到桌面。

通过这种方式,您可以在几小时内获得最少的应用程序:)

P.S。如果你想要一个使用这种方法的iOS应用程序,那么值得关注这个开源项目:http://en.wikipedia.org/wiki/PhoneGap

答案 2 :(得分:0)

你说你想要一个Java解决方案,但要注意有很多Gui options in Python,你已经用Python编写了你的​​Web应用程序。

Groovy是一种与Java不同的编程语言,但Groovy在JVM上运行。您想要Java解决方案还是JVM解决方案?我问,因为你提到格里芬。

假设您需要Java,我认为您的主要选项是Swing,SWT,JavaFX 2和Apache Pivot。 Oracle已经表示,他们打算将JavaFX作为replace Swing作为首选的GUI平台。也就是说,JavaFX 2还处于起步阶段,目前只有Mac的预览版本可用。 JavaFX和Apache Pivot的结果是,您可以将Web应用程序的相同代码用作桌面应用程序。

相关问题