C ++ / Qt vs Adob​​e AIR

时间:2008-11-25 09:34:53

标签: c++ flex qt air

我必须为我们的产品选择一个平台。我必须在Qt框架和Adobe的AIR之间做出决定。我很熟悉Qt,因为我在过去的两年里工作过。我查看了Adobe的网站,但所有关于flex,flash,HTML / ActionScript编码能力的信息都令人难以置信。我无法理解有关Adobe生态系统的以下内容。

我在Adobe AIR上有以下问题:

  1. 我用什么语言编写应用程序代码? (不只是定义UI的外观)
    就像在Qt中一样,我使用C ++。是Actionscript吗?

  2. 我们可以说AIR仅用于制作应用程序的UI。

  3. 实用程序类和AIR的文档在哪里?
    例如Qt

  4. http://qt-project.org/doc/
  5. Qt附带了大量可以使用的预制小部件。 Adobe是否附带任何此类窗口小部件集,如果是这样,我在哪里可以看到它在URL中?

  6. 我理解flex SDK是开源的。我可以制作商业应用并发货吗? flex SDK是否包含所有内容(编译器,实用程序类/小部件)

  7. AIR在许可方面的成本是多少?

  8. AIR中有什么东西等同于QT的QGraphicsView吗?

7 个答案:

答案 0 :(得分:11)

如果您需要访问许多本地库,则需要保持在QT环境中。请记住,AIR是单线程的,并且在Flash Player上运行(最初设计用于基于帧的动画。) 但是,根据您正在构建的应用程序风格,AIR可能很适合您。

请注意,AIR可能会让人感到困惑,因为创建AIR应用程序有一些不同的开发人员路径:1)使用html / javascript和AIR SDK,2)使用Flash / Actionscript和3)使用Flex SDK和/或Flex构建器。就传统的桌面开发背景而言,最后一个是最强大的。

用于连接Web服务的Web 2.0小应用程序是AIR应用程序的理想选择。像IM客户端Digsby这样的事情会很棒。到目前为止,我最喜欢的AIR应用程序是Basamiq Mockups。其他有用的应用程序是TweetDeck。这些是很适合用AIR解决的事物类型的很好的例子。

您应该访问Adobe Showcase并查看一些应用程序:http://www.adobe.com/products/air/showcase/

另外,如果你想要退出C ++游戏,我相信QT现在有一些java绑定...我还记得一些python绑定,但我从不看那些。

就QGraphicsView而言,人们在Flex中做过类似的事情。我现在尝试使用谷歌搜索,但最初找不到它们,但人们已经采取了像大图像这样的东西,然后只在窗口中显示当前区域。此外,在Flex的下一个版本中,他们正在构建一个官方的ViewPort组件:
http://opensource.adobe.com/wiki/display/flexsdk/Gumbo+Viewport

答案 1 :(得分:5)

Go花一些时间使用这个AIR应用程序,然后问问自己Adobe Flex和AIR是否值得花时间掌握主题(准备好问问自己为什么C ++ / QT之类的东西不存在可比性): / p>

Tour de Flex

  

Tour de Flex是一款桌面应用程序   用于探索Flex功能和   资源,包括核心Flex   组件,Adobe AIR和数据   整合,以及各种各样的   第三方组件,效果,   皮肤等等。

您的一些问题:

  • Flex可以用MXML编码 ActionScript3的。另外还有AIR 支持HTML / DOM / JavaScript 编程为webkit HTML渲染引擎内置 AIR运行时。
  • MXML是一种XML声明性DSL 被编译成ActionScript3 命令式代码。这很好, 但是,对于声明性编码 UI的图形形式(即, 视图的MVC模式)。
  • ActionScript3有一个heratige 建立在JavaScript之上,但它有 更加强调了这一点 类似于Java或C#。它有包 命名空间,类和接口 继承,类成员 访问保护关键字, 构造函数,静态成员和 Java上的一些非常好的补充: 属性,事件,数据绑定, 和闭包。

Flex样式编程也是一种依赖于异步I / O交互的单线程模型。这是一个比多线程Java Swing或C#.NET Winform应用程序更简单的编程模型,但允许实现程序行为的相同净结果。我在这里详细说明:

Flex Async I/O vs Java and C# Explicit Threading

答案 2 :(得分:4)

Flex是开源的,您可以免费下载SDK,没有与之相关的许可成本。 (见他们的FAQ

他们确实提供了一个'flex builder',这是我认为的一些自定义Eclipse,它需要花钱,但如果没有它,你就可以完美地工作。

可以在adobe's livedoc页面找到文档。 (to some,这本身就足以让人不喜欢Adobe;))

我很怀疑,如果你精通QT,为什么还要考虑别的什么呢?您期望AIR有哪些优势可以让您超过QT?

我在QT和Flex方面都有一些经验,但不足以使一方与另一方相比。我知道QT / C ++比Flex / ActionScript要成熟得多。

如果您已经了解QT,我认为花在学习新框架(和编程语言)上的时间不会让您足够诚实......

答案 3 :(得分:3)

我使用过QT和Flex(虽然不是Air本身),并且发现Flex可以更快地启动和运行应用程序以及修改,而QT可以让您获得更多控制权 - 特别是在安装程序中。 Air应用程序安装程序非常笨拙,或者至少是在我尝试它的时候,尽管从那时起它可能已经有所改进。

Air的一大优势是它的大部分代码都可以在Flash内部运行。出于安全原因,您无法从Web访问本地文件系统等,但几乎所有其他内容都是可移植的。

答案 4 :(得分:2)

我做了相反的举动。我开始研究Adobe的东西并转向QT。这样做的主要原因是Adobe框架限制。当你使用Adobe的东西时,你只能使用它们生成的工具,如果不能用Adobe的东西做你想要的东西,很难引入外部框架或库。通常,执行此操作的解决方案是使用套接字,该套接字在客户端 - 服务器体系结构上转换所谓的“独立”应用程序。此外,如果您使用许多外部资源,那么很难管理这么多不同的客户。 使用QT,您可以使用C ++编写代码并添加所需的任何外部框架或库。尽管有时候编写代码并不容易,但是可行且没有“奇怪”的系统架构。

答案 5 :(得分:1)

如果您正在寻找使用Qt和SVG的“有趣”UI的一些示例,请查看KDEGames [1] [2]和KDEEdu [3] [4]项目。那里有很多很好的代码,它们使用QGraphicsView和SVG来创建可扩展的接口。当然请注意,这是GPL,所以如果您的应用不是“借”,请小心。

[1] http://games.kde.org/

[2] http://websvn.kde.org/trunk/KDE/kdegames/

[3] http://edu.kde.org/

[4] http://websvn.kde.org/trunk/KDE/kdeedu/

答案 6 :(得分:0)

我将第二次发表@ Pieter的评论 - 如果您已经了解QT,那么转移到一个全新的环境将需要更长的时间。

QT具有跨平台和非常成熟的优势:有适用于Windows,Linux和Mac OS X的库。除了知道它来自Adobe之外,我对AIR不是非常熟悉,但产品网站似乎表明它适用于富互联网应用(http://www.adobe.com/products/air/)。如果这是真的,那么如果您正在开发桌面应用程序,那么QT将是更好的选择。

相关问题