VisionMobile, one of the leading firms for programming related researches & surveys, just released an interesting article: Cross Platform Apps – Qt vs. HTML5. We’d like to add our thoughts about this article to help you choose the right framework for your project.
Qt and V-Play
We initially built V-Play to develop games with the power of Qt Quick. This declarative scripting language of Qt is so powerful that it saves up to 60% lines of code compared to other programming languages. Moreover, since the release of Qt 5 you can also build great cross-platform apps with Qt, both for mobile and desktop.
With the next release of V-Play (coming next week!), we will further simplify app development with Qt, just as we make programming games easier. So stay tuned for the update and enjoy this blog post about Qt vs. HTML 5.
Qt Benefits over HTML5
Let’s quickly cover the main pros Qt has over HTML5, in addition to the ones mentioned by VisionMobile:
Ease of Learning
Learning HTML5 has become trickier because you get overwhelmed with frameworks. Frameworks are actually a good thing, but to know which framework fits your project best can take up weeks.
The latest developer survey from research2Guidance of 2,188 developers also proves that learning Qt and V-Play is easier than PhoneGap for example. This image shows the result of comparing the complexity to learn a cross-platform tool:
Top 10 Cross-Platform Tools of Complexity to learn the tool (low complexity means easy to learn):
This is a big one. Qt is based on C++ and has a hardware accelerated scene graph which makes it even fast enough to power high-performance games, so you get great performance for apps too. In the last years, a lot of work has gone into further optimizations for mobile app use cases to get the most out of rendering performance. For example ListView optimizations or auto-batching of textures to minimize draw calls (see here for some benchmarks). You can even do crazy shader modifications simply from QML and apply video filters at runtime.
Qt Quick & QML were initially created to make animated user interfaces easier, not something that was added later on to it!
The declarative approach is a bit weird in the beginning to understand, but once you get the hang of it you will never want to let things such as property bindings go. Things like state machines and animation components makes transitioning between views and animating UIs just a matter of 1 or 2 code lines.
Qt originated as a C++ framework, with Qt Quick & QML added later as a declarative layer to simplify UI development & prototyping. So you get a solid and proven C++ framework which makes the integration between the scripting world and C++ easy and allows to define nice separations between application logic and UI. So if you have existing C++ logic you want to reuse in your mobile app, Qt is the way to go.
Similarly, calling Objective-C or Java code for Android is simple too (for example Qt 5.2 introduced some helper classes to simplify JNI communication for Android). This means you can integrate any native functionality that is not supported by the core framework and make it accessible from a scripting environment.
Native SDKs with Qt
We have worked on 30+ Qt apps and games in the past years, and often were in the situation where we needed a native functionality or 3rd party service not existing in the Qt framework.
To make these native SDKs available from QML across projects, we started the V-Play Plugins. These exist to integrate native services for multiple platforms with a single API call. You can for example use them to integrate monetization services like in-app purchases or mobile Ad frameworks like AdMob and Chartboost in your Qt 5 apps. Or to access the native Facebook SDK or Push Notifications from Qt.
You can find the Qt 5 plugins here: http://plugins.v-play.net/
To be fair, HTML5 also has its advantages, like not being developed by one major contributor. But there also are advantages with that, because you get bugs fixed faster as you don’t need to count on different browser vendors to fulfill the standard or to agree upon a new required feature.
As Mark Wilcox from VisionMobile puts it:
“Qt has a slight edge over HTML5. However, there are other metrics you could use that would give the opposite result. In practice the technology needs to be selected to fit the project.”
Because of the additional reasons given above, we do see Qt on a far better track than HTML5. What is also great is the rapid rate of improvements that are released with every Qt update, and we’re happy to be in the Qt community and to simplify Qt development as a Qt Technology Partner!
If you want to share your app or game development story with Qt too, hit the comment section below. 😉
There is also currently this year’s VisionMobile developer survey going on – vote for Qt and V-Play here:
Vote for Qt & V-Play in the Global Developer Survey
Just enter V-Play in the “Other” section for the question “Which cross-platform tools are you using?” and also select Qt.