4

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

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

我需要记住哪些其他问题?我希望您发表评论的一些内容是:

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

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

谢谢!

4

3 回答 3

5

图形用户界面工具包

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

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

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

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


部署

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

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

跨平台陷阱

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

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

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


时间表

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

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

于 2012-02-27T14:13:12.360 回答
1

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

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

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

于 2012-02-27T14:25:20.637 回答
0

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

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

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

于 2012-02-27T07:33:42.200 回答