I’ve heard this many times. It just can’t be done, they say. Porting an application, a “real” application to a new and unfamiliar platform takes at least 3 to 6 months, numerous developers, designers, lots of QA testing, diligent software engineering practices, et cetera. This makes a lot of sense, right? It’s been the conventional wisdom for as long as I can remember. How, then, have developers been porting their applications to BlackBerry 10 so quickly? Let’s take a look.
It’s true that learning a new platform can take months. Luckily, those standard rules of learning time don’t apply in certain cases – and that often happens to be true for BlackBerry 10. I’ll explain what I mean later.
First, let me share with you some data from our Port-a-thons. In our “Got Game Port-a-thon”, we had over 4,000 gaming apps ported by developers to BlackBerry 10 from other platforms in 36 hours. A few weeks later, we ran another port-a-thon and had 15,000 apps ported. Only a week later, an additional 19,000 apps were ported in the 36 hour window (recap of port-a-thons here). So, you might be thinking, “How could this happen if it takes 3-6 months to learn a new platform?” The reason is simple: Developers don’t have to learn a new set of skills to get their app running on BlackBerry 10. We received games and apps written in all four of the runtimes BlackBerry 10 supports: Native C and C++, HTML5, Adobe AIR, and Android Java. Here’s why it was so easy in each of these cases:
Native C and C++ Apps
Our native platform is Posix-compliant C and C++, and supports a lot of libraries and gaming engines leveraged by game developers including Unity3D, Marmalade, Appcelerator, Shiva3D, NME, OpenGL ES, OpenAL, Cocos2D-X, Box2D, Skia, Lua, and so on. (Learn more about all the native library support options here.) For many developers, the majority of time spent porting their app to BlackBerry 10 was just setting up their tooling and getting their signing keys.
Now, if your app is full of custom, platform-specific APIs or if your app uses a lot of device specific UI, then of course it will take you longer than a day to port your app. But learning Cascades, the UI framework for native development on BlackBerry 10, doesn’t take very long – especially if you’re familiar with Qt and QML. What we’re finding is that most mobile developers today are designing their apps with portability in mind at the outset. They’re separating out platform specific stuff from the common stuff. Or, they’re leveraging a framework like Marmalade that does a lot of this platform abstraction work for them under their APIs. What’s left is pretty easy to port because you have a solid, standards-compliant platform like BlackBerry 10 on which to develop. Things just work.
One misconception I hear a lot is that the BlackBerry Android runtime is an “emulator”. This isn’t the case. Our Android runtime is a pure port of the open source Dalvik VM directly onto QNX. Other mobile vendors ported the same code to Linux, whereas we went straight to QNX – a real-time embedded OS about 1% the size of standard Linux and highly efficient. We don’t touch the byte codes or modify the programs in any way – all we do is re-package them into a different archive format that helps us maintain security for your protection. Either your app runs or it doesn’t. If it doesn’t, our tools will tell you why immediately and you can decide if it’s something you can work around. You can even check out your app using our online tool.
We don’t support apps that use proprietary Google APIs, and we don’t support native extensions. Also, for security reasons, BlackBerry 10 does not allow Android Java apps to run in the Enterprise partition; they may only run in the Personal partition (learn more about BlackBerry Balance). Visit our Android developer site for more info about the limitations of Android apps on BlackBerry. “Porting” Android apps to BlackBerry 10 is trivial. I regularly do this in less than 60 seconds per app – no lie. It literally takes me longer to copy someone’s apk from a USB drive than it does to port it.
BlackBerry 10 has maintained one of the highest HTML5 conformance scores in the industry for many months (see http://html5test.com/). BlackBerry 10 is not only first in the mobile rankings – it outscores all desktop browsers like Chrome, Safari, and Firefox, and it also outscores iPhone, iPad, Android, Firefox Mobile, Opera, etc. So, if you have a web app with all that silly Java or Objective-C wrapper business that Android and iOS make you put in there, you just have to strip that out all that nonsense and re-package for BlackBerry. Web apps on BlackBerry are first-class citizens on our platform; they have sensor APIs, payment capabilities and access to device camera, and they don’t need or require an Internet connection to run.
BlackBerry 10 also supports things like WebGL and WebSockets –functionality not found in many other mobile platforms. Check out all the API support for augmenting HTML5 on BlackBerry here. We also support the leading web frameworks like jQuery, Sencha, dojo, and of course Apache Cordova. For the same reasons that native C and C++ apps “port” very quickly to BlackBerry 10, so do HTML5 apps. The standards support is there. The frameworks are there.
Adobe AIR Apps
AIR is AIR; they just work. You can learn more about how to get your Adobe AIR apps on BlackBerry 10 here.
Hopefully, the question about whether you can “port” an app in a very short amount of time to BlackBerry 10 should be clear now. Through BlackBerry 10’s adherence to industry standards – and by developers’ common practice of architecting for cross platform deployment – mobile apps are, and have been, easily ported to BlackBerry 10. For more information, check out our new developer site: http://developer.blackberry.com