C++/Qt vs Adobe AIR


I have to choose a platform for our product. I have to decide between The Qt Framework and Adobe's AIR. I am well versed with Qt as I have worked for the last two years. I looked up at the Adobe's site but all the info about flex, flash, ability to coding in HTML/ActionScript is overwhelming and confusing. I cannot understand the following about the Adobe ecosystem.

I have the following questions on Adobe AIR:

  1. What language do I use for coding my application? (not just defining the looks of UI)
    Like in Qt I use C++. Is it Actionscript?

  2. Can we say AIR is only for making UI's for apps.

  3. Where is the doc for the utility classes along with AIR?
    e.g. http://qt-project.org/doc/ for Qt

  4. Qt ships with a huge set of premade widgets that one can use. Does Adobe ship with any such widget set and if so where can i see it as in url?

  5. I understand flex SDK is open source. Can I make commerical apps and ship them ? Does flex SDK ship everything (compiler, utility classes/widgets)

  6. How much does AIR cost in terms of licensing?

  7. Is there something in AIR that is equivalent to QGraphicsView of QT?

12/1/2014 8:49:10 AM

Accepted Answer

If you needs to access a lot of native libraries, you'll need to stay within your QT environment. Keep in mind that AIR is single-threaded and is run on the Flash Player (something that was originally designed for frame-based animations.) However, depending on the style of application you're building, AIR might suit you just fine.

Beware that AIR can get confusing because there's a few different developer paths to creating AIR applications: 1) using html/javascript and the AIR SDK, 2) using Flash/Actionscript and 3) using Flex SDK and/or Flex builder. The last one is the most capable as far as coming from traditional desktop development background.

Small apps that are Web 2.0 for hooking into web services are good candidates for AIR applications. Things like the IM client Digsby would be great. My favorite AIR app that I've seen thus far is Basamiq Mockups. Other useful apps are TweetDeck. These are good examples of the types of things that are well-suited to solve with AIR.

You should visit the Adobe Showcase and look at some applications: http://www.adobe.com/products/air/showcase/

Also, if you're looking to just get out of the C++ game, I believe QT has some java bindings now...also I remember some python bindings, but never look at those myself.

As far as QGraphicsView, people have done similar things in Flex. I tried Googling right now but couldn't find them initially, but people have taken things like A large image, and then only displayed a current region in the window. Also, in the next version of Flex, they're acutaly building an official ViewPort component:

11/25/2008 7:34:37 PM

Go spend some time with this AIR application and then ask yourself if Adobe Flex and AIR are worth investing your time in mastering (be prepared to ask yourself why something comparable doesn't exist for the likes of C++/QT):

Tour de Flex

Tour de Flex is a desktop application for exploring Flex capabilities and resources, including the core Flex components, Adobe AIR and data integration, as well as a variety of third-party components, effects, skins, and more.

Some of your questions:

  • Flex can be coded in MXML and ActionScript3. AIR additionally supports HTML/DOM/JavaScript programming as webkit HTML render engine is built into the AIR runtime.
  • MXML is an XML declarative DSL that gets compiled into ActionScript3 imperative code. It is quite good, though, for declaratively coding the graphical forms of the UI (i.e., the views of the MVC pattern).
  • ActionScript3 has a heratige that is founded on JavaScript, but it has been embelished to the point it more resembles Java or C#. It has package namespace, classes and interfaces with inheritance, class member access protection keywords, constructors, static members, and some very nice additions over Java: properties, events, data-binding, and closures.

Flex style programming is also a single-threaded model that relies on asynchronous I/O interactions. This is a simpler model to program than multi-threaded Java Swing or C# .NET Winform apps, yet permits achieving the same net results of program behavior. I elaborate on that here:

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

Licensed under: CC-BY-SA with attribution
Not affiliated with: Stack Overflow