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

ser*_*man 4 java user-interface desktop swing thick-client

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

将合理大小的简单Web应用程序转换为基于Java桌面的PC和Mac客户端的最快方法是什么?不幸的是,由于各种原因,我无法在这里分享关于应用程序的大量细节.应用程序中最复杂的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. 格里芬基于这里的一篇文章.这个框架使用Groovy(我不知道Groovy,btw)Adobe Air flex.任何开源框架?

我需要记住的其他一些问题是什么?我希望你发表评论的一些是:

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

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

谢谢!

And*_*son 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没有经验.

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

注1)如果SwingX有任何容易出现线程对话的groovy组件,请添加SwingX,但我怀疑JTextPane是否足够.


部署

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

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

跨平台的问题

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

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

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


时间表

显然我不能代表你,但我可以告诉你,我将无法在两个月内从"哪种技术"转向"可部署的应用程序".

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