我在这里看到了一些关于这个主题的其他类似问题,但它们没有太大帮助,所以我提出了这个问题。
将一个大小合理、简单的网络应用程序转换为面向pc和mac的基于Java桌面的客户端的最快方法是什么?不幸的是,由于各种原因,我无法在这里分享有关该应用程序的大量细节。不过,该应用程序中最复杂的UI是一个包含多级线程讨论的页面(请参阅此处以获取我所说的示例。)当前的web应用程序基于python,因此我不能重复使用服务器端代码中的任何内容(不要认为这是个问题)
我从未做过任何swing、awt或任何其他基于Java的厚客户端GUI工作。我的想法或多或少是由基于web的应用程序定义的。我能够使用Java或python进行端到端的web应用程序开发(包括使用HTML、CSS和JS的后端和体面的UI)。对于您的答案,请仅关注Java解决方案。
以下是我的问题我应该使用的最佳框架或工具是什么?作为研究的一部分,我在网上找到了以下一些工具。
- 看起来这不是一个好的选择
- Swing,我相信它与常规Java SDK/JRE捆绑在一起。-这可能是我最好的打赌
- SWT似乎在某种程度上称赞了Swing
- 格里芬根据这里的一篇文章。这个框架使用Groovy(I对Groovy一无所知,顺便说一句)Adobe Air flex。任何开放源代码框架
我还需要记住哪些其他问题?我想让你评论的是:
- 它需要部署在客户端这一事实是如何使事情复杂化的?由于我们使用的是Java,我认为这不是一个问题。我知道基于网络的应用程序和桌面应用程序之间的常见权衡(例如易于部署和升级等)
- 创建一个一键安装程序并捆绑应用程序和所需的环境(例如JRE等)有多容易
- 该产品需要在Mac和Windows上运行。这会以任何方式使事情复杂化吗(同样,由于是Java,我假设没有gotchas,但如果有,我希望得到警告)
- 作为一种技能,简历上有什么框架或技术可能是好的
我的截止日期最长是2个月——考虑到我需要学习所有这些技术,这对于一个相当简单的网络应用程序来说足够了吗?我只是想了解一下——我知道很可能不可能给出准确的答案——只要假设我足够聪明,能够足够快地掌握任何不熟悉的技术。
谢谢!
GUI工具包
考虑到"Mac和Windows",我认为我的推荐是"Swing"(也许是SwingX1)。
- 我同意你对AWT的评价。它不支持任何现成组件中的格式化文本。它还缺少树、表(和其他组件)&最近使用过它的人。不过,请注意,它也和Swing一样"与常规Java SDK/JRE捆绑在一起",只是它比Swing更旧,而且通常启用的更少
- 如果说Swing有什么补充的话,那就是SwingX。SwingX构建在Swing之上,提供了J2SE中无法"开箱即用"的高级控件
- Swing和SWT是相互不兼容的——使用其中之一
- 我对格里芬没有任何经验
Swing是列出的选项中使用最多的,因此对于获得帮助(忽略决策中其他潜在的重要因素)来说,这将是一个不错的选择。
注意1)如果SwingX有任何可以轻松呈现线程对话的groovy组件,请添加SwingX,但我怀疑JTextPane
就足够了。
部署
就部署而言,这比看起来要棘手一些。许多台式电脑并没有将Java作为标准配置。那些已经拥有它的人,可能有一个旧版本。
- 确保JRE具有运行应用程序所需的最低版本。如果可用,请使用
deployJava.js
(在下面的JWS页面中通过链接提到) - 要为用户提供"一键"启动体验,请参阅Java Web Start
跨平台gotcha
不幸的是,尽管Java是x平台,但程序员可以做很多事情。例如
- 不计入平台默认值:
- 文件编码(
file.encoding
2) - 断线(
line.separator
2) - 文件分隔符(
file.separator
2)
- 文件编码(
- 编码固定大小("绝对布局")的应用程序。将显示为不同大小的应用程序。在其他操作系统上
注2。这显示了每个要使用的属性。
时间表
显然,我不能代表你说话,但我可以告诉你,我没有机会在两个月内从"哪种技术"变成"可部署的应用程序"。
希望你比我更有能力!)
您说过您想要一个Java解决方案,但要注意Python中有很多Gui选项,而且您已经用Python编写了web应用程序。
Groovy是一种不同于Java的编程语言,但Groovy运行在JVM上。您想要Java解决方案还是JVM解决方案?我问是因为你提到格里芬。
假设您想要Java,我认为您的主要选项是Swing、SWT、JavaFX2和ApachePivot。甲骨文表示,他们打算让JavaFX取代Swing成为首选的GUI平台。也就是说,JavaFX2还处于起步阶段,目前只有Mac版的预览版。JavaFX和ApachePivot的结果是,您可以为web应用程序使用与桌面应用程序相同的代码。
您可以尝试分几个小步骤进行操作:*作为第一步,您可以使用SWT创建应用程序,并将您的应用程序嵌入到浏览器控件中。*然后,您应该将网页和一些控件从web应用程序一个接一个地移动到桌面。
通过这种方式,您可以在数小时内获得最低限度的应用程序:)
附言:如果你想要一款采用这种方法的iOS应用程序,那么值得一看这个开源项目:http://en.wikipedia.org/wiki/PhoneGap