【问题标题】:Converting an existing web app to desktop application将现有 Web 应用程序转换为桌面应用程序
【发布时间】:2012-02-27 04:46:52
【问题描述】:

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

将合理大小、简单的 Web 应用程序转换为面向 pc 和 mac 的基于 Java 桌面的客户端的最快方法是什么?不幸的是,由于各种原因,我无法在此处分享有关该应用程序的大量详细信息。应用程序中最复杂的 UI 是一个包含多级线程讨论的页面(请参阅here 以获取我正在谈论的说明性示例。)当前的网络应用程序基于 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 ( I 不知道 Groovy,顺便说一句)Adobe Air flex。任何开源 框架?

我还需要注意哪些其他问题?我希望您的 cmets 使用的一些是:

  1. 需要在客户端上部署它这一事实如何使事情复杂化?由于我们使用的是 Java,我相信这不是问题。我知道基于 Web 的应用和桌面应用之间通常需要权衡取舍(例如,易于部署和升级等)
  2. 创建一键式安装程序并捆绑应用程序和所需的环境是多么容易 - 例如。 JRE 等?
  3. 该产品需要在 Mac 和 Windows 上运行。这是否会以任何方式使事情复杂化(同样,由于它是 Java,我假设没有任何问题,但如果有任何问题,我想预先警告)
  4. 什么框架或技术可以作为技能组合出现在简历中?

我的截止日期最多为 2 个月 - 考虑到我需要学习所有这些技术,这对于一个相当简单的网络应用程序是否足够?我只是想在这里了解一下——我知道很可能不可能给出准确的答案——假设我足够聪明并且可以足够快地掌握任何不熟悉的技术堆栈。

谢谢!

【问题讨论】:

  • 嗨 Andrew,抱歉打错了 - 我的意思是“Mac 和 Windows”。我已经纠正了错误。谢谢你的第二条评论。目前我倾向于 Swing。

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


【解决方案1】:

图形用户界面工具包

鉴于“Mac 和 Windows”,我会说我的推荐是“Swing”(可能使用 SwingX1)。

  1. 我同意您对 AWT 的评价。它不支持任何现成组件中的格式化文本。它还缺少树、表格(和其他组件)以及最近使用它的人。但请注意,它也像 Swing 一样“与常规 Java SDK/JRE 捆绑在一起”,只是它比 Swing 更旧且启用程度较低。
  2. 如果有任何东西可以补充 Swing,那就是 SwingX。 SwingX 建立在 Swing 之上,并提供了在 J2SE 中“开箱即用”不可用的高级控件。
  3. Swing 和 SWT 互不兼容 - 使用其中之一。
  4. 我没有使用 Griffon 的经验。

Swing 是列出的选项中最常用的选项,因此为了获得帮助(忽略决策中的其他潜在重要因素),这将是一个不错的选择。

注意 1) 如果 SwingX 有任何 groovy 组件可以轻松呈现线程对话,则添加,但我怀疑 JTextPane 就足够了。


部署

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

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

跨平台的陷阱

不幸的是,尽管 Java 是 x-plat,但程序员可以做很多事情。例如

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

注意 2。这是显示每个属性使用的属性。


时间表

显然我不能代表你说话,但我可以告诉你,我没有机会在两个月内从“哪种技术”转变为“可部署的应用程序”。

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

【讨论】:

  • 感谢安德鲁!我会看看 Swing 和 SwingX。获得帮助肯定很重要。谢谢!
  • 您好 Andrew,您对一键式安装程序有任何想法。一位朋友推荐了“izpack”。
  • 你好安德鲁,谢谢!我已将您的回答标记为正确答案。我知道您指出的一些问题 - 但最重要的评论是您对时间线的评论 - 谢谢!
【解决方案2】:

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

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

假设您想要 Java,我认为您的主要选择是 Swing、SWT、JavaFX 2 和 Apache Pivot。 Oracle 曾表示,他们打算将 JavaFX 以replace Swing 作为 GUI 平台的选择。也就是说,JavaFX 2 还处于起步阶段,目前仅适用于 Mac 的预览版。 JavaFX 和 Apache Pivot 的结果是,您可以在 Web 应用程序中使用与桌面应用程序相同的代码。

【讨论】:

  • 嗨 procrstiate_later(非常鼓舞人心的用户 ID:)-thanx!鉴于我没有看到用 python 编写的 web 应用程序和 python gui 之间有太多代码重用 - 我认为如果我在客户端上使用 Java 或 python 可能并不重要(即使我更喜欢 python,也有一些我使用 Java 的其他原因(维护可能外包。)
  • 我认为如果您使用 Pyjamas 和 Pyjamas-desktop,您可以在 Web 应用程序和桌面应用程序之间重用代码。我没用过,不知道好不好用。另外,我对外包几乎一无所知。如果您确实使用 Java 解决方案,我建议您查看 Java Web Start 进行部署。
【解决方案3】:

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

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

附:如果你想要一个采用这种方法的 iOS 应用程序,那么值得看看这个开源项目:http://en.wikipedia.org/wiki/PhoneGap

【讨论】:

  • 嗨康斯坦丁,我为这个错字道歉——我的意思是“Mac”——而不是 ios。是的,我知道 phonegap,但据我所知,它不包括桌面应用程序。
猜你喜欢
  • 2012-07-17
  • 1970-01-01
  • 1970-01-01
  • 2011-09-07
  • 2011-10-16
  • 2011-03-13
  • 2021-04-02
  • 1970-01-01
  • 2016-12-23
相关资源
最近更新 更多