【问题标题】:Which Windows GUI frameworks are currently worth learning? [closed]目前有哪些值得学习的 Windows GUI 框架? [关闭]
【发布时间】:2012-04-02 21:18:40
【问题描述】:

我正计划编写一个 Windows 应用程序来帮助自己完成一些探索性测试任务(记笔记、数据生成、缺陷记录),但我在选择框架/语言的早期阶段陷入困境。我唯一的经验是 Web 开发,据我所见,WinForms、WPF、Silverlight、Swing 等都同时过时和蓬勃发展,具体取决于您询问的对象。

虽然我的主要目标是创建应用程序,但显然我想在此过程中学习一些有用的东西,而不是学习在工作项目中永远不会看到的东西的技能。人们会推荐学习哪些 Java 或 C# 框架?

【问题讨论】:

  • WPF 已过时?
  • @pezcode:你没听说吗? Metro/WinRT 现在是很酷的新事物
  • @BoltClock 最终一切都会过时,我还在等待 Html 过时,但这可能不会在我的有生之年发生:) 至于 Wpf,它会在 Metro 之后持续一段时间应用程序并不意味着取代一切。很多人跳过了vista,这导致Xp的寿命很长。这可能会在 Win8 中发生很多,除非他们会开始放弃触摸屏:)

标签: c# java windows user-interface


【解决方案1】:

注意:请考虑发布此答案的时间(2012 年)。从那以后,事情发生了一些变化,例如 Silverlight 已被弃用。


本机应用程序

就业: 好吧,现在大多数公司(至少大多数来自我居住的阿曼和阿联酋的公司)都在慢慢迁移到云端。然而,原生应用程序开发仍有一些机会。现在最苛刻的框架是,(不是WPF),它是Windows Forms

为什么使用普通的旧 Windows 窗体而不是出色的 WPF?一个原因,遗留应用。现在大多数公司只启动小规模的 GUI 应用程序项目,主要是商业应用程序。为此,WPF 将非常昂贵,因为他们已经拥有在 Windows 窗体方面经验丰富的工作人员,以及许多遗留代码,但是对于 WPF,他们将不得不创建一个新的代码库,这是相当冒险的。因此,让您保持就业的最佳方式是 Windows 窗体。

对于新项目:但是,如果说“值得学习”,您的意思是新的、雄心勃勃的和迷人的。那么 WPF 可能是您的最佳选择。实际上,这取决于您的要求。

现在,对于云。 Java FX 和 Silverlight 目前都是正面交锋。然而,Java FX 可能具有优势,因为它支持更多的平台。但话又说回来,Silverlight 拥有 Microsoft 的所有力量和资源,它是 Windows Phone 开发的理想选择。

比较

为了进行比较,以下是您通过每个工具包获得的结果:

Windows Presentation Foundation

  • Microsoft 的力量和资源
  • 非常适合创建新的桌面应用程序
  • 眼睛糖果
  • 很棒的 AP​​I
  • XAML,将设计与逻辑分离的最佳方式
  • 为云创建应用程序(但它们只能在带有 .NET 的 Windows 上运行)
  • Windows Phone 可以运行 WPF 的子集

Windows 窗体

  • 曾经拥有微软的权力和资源,现在 WPF 拥有了
  • 非常适合维护旧版应用程序
  • 训练有素的员工队伍(如果您是企业家)
  • 相当成熟的API
  • 支持比 WPF 更多的平台(通过 Mono)

Java FX

  • 为云创建应用程序
  • 由 Oracle 提供支持
  • 相当不错的 API
  • 跨平台,可在大多数 PC、智能手机上运行。

银光

  • 为云创建应用程序
  • 微软支持
  • 非常棒的 AP​​I
  • XAML
  • 跨平台,在 Mac 和 PC 上运行,在 Windows Phone 上运行。

GTK#

  • 跨平台,可在大多数 PC 上运行,无需智能手机。
  • 由开源世界支持
  • Mono 支持
  • 非常适合为 Gnome 创建应用程序。

摇摆

  • 跨平台,在大多数 PC 上运行,智能手机是个问题。
  • 相当成熟
  • 非常适合使用 Java2D 创建 2D 游戏

结论

如你所说:

虽然我的主要目标是创建应用程序,但显然我想在此过程中学习一些有用的东西,而不是学习一些在工作项目中永远不会看到的技能。

嗯,你最有可能在工作中看到的框架(如果你不为微软、甲骨文、谷歌等主流公司服务的话)是 Windows 窗体和 WPF。至少这是大多数公司在这里使用的。所以这些是我推荐的。 JavaFX 和 Silverlight 看起来也很有潜力,可能会在不久的将来使用。

【讨论】:

  • 您应该提到 MoonlightDesktop,它不再受支持,但具有 WPF 功能的一个很好的子集,并且可以在浏览器之外运行。我没有调查它,但它似乎工作。
  • 更新。与此同时,Silverlight 已死
【解决方案2】:

WPF。对 Windows 的最佳支持。顺便说一句,它并没有过时。

【讨论】:

  • 它也非常类似于 Metro 的东西。即使您想稍后创建 Metro 风格的应用程序,您也可以重复使用您从 WPF 中获得的 xaml 和大多数架构知识。
  • MoonlightDesktop 是mono 项目的版本。虽然它不受支持,但它可能有一个合适的 WPF 子集,并且它可以在浏览器之外工作。可悲的是,Mono 并没有意识到他们手上的金矿。他们可以轻松地将其变成事实上的图形引擎,即使它不如 WPF 强大。
【解决方案3】:

您的一个选择可能是将应用程序创建为 HTML+Javascript 并通过嵌入浏览器引擎(IE 或其他东西)在桌面应用程序中运行它。如果您需要原生 API,可以通过一些机制使这些 API 可用于浏览器的 Javascript 代码。

【讨论】:

  • 这几乎永远不会奏效。一次写入到处运行通常会在所有支持的平台上提供糟糕的用户体验。 HTML/JS 开发起来太麻烦了。
  • 你完全误解了。我不建议在每个浏览器上运行它。我建议嵌入一个特定的浏览器引擎(例如 IE)并专门为此编写。开发是否繁琐,是个人喜好问题。
  • 考虑到我们现在生活的节点和电子世界,我只想指出这句话的讽刺意味。呵呵
【解决方案4】:

Java FX 2.0 看起来很有前途,如果 Swing 对你来说已经过时了,它现在已经上线了。请注意,它与以前的版本几乎没有共同之处。参见例如this short comparison with swing。而甲骨文表示他们打算开源。

现在它相当新,不太可能在现有应用程序中使用。

【讨论】:

  • 鉴于桌面上的 Java FX 似乎是基于/使用 Swing 构建的,如果 Swing 已过时,那就有麻烦了。 (如果有人对此事感到困惑,Swing 并没有过时。)
  • @AndrewThompson 据我了解,Javafx 2.0 不是基于 swing 构建的。它们可以(有点)互操作,但又是不同的。例如,Javafx2 不使用 EDT,而是使用另一个特定线程。以前的版本可能一直在使用swing,我不知道。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-01
  • 2011-05-03
  • 2010-10-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多