Native Development in BlackBerry 10 for Custom IxChariot Endpoint
An essential part of what makes IxChariot great is its ability to run the Performance Endpoints on almost any device, from servers to mobile and embedded devices. Porting the Endpoint (written in native C code) to all these platforms, operating systems, and CPU architectures is an interesting challenge for the IxChariot team.
Especially for mobiles, the development tools for iOS, Android, Windows RT, or Windows Phone 8 focus on UI reach applications and don’t always facilitate the development of native applications. The Endpoint is just a utility networking app that listens for test commands from the IxChariot Console, generates traffic, and reports statistics. On Linux, it runs from command line, while on Windows is installed as a service. The fact that it has a (minimal) UI for iOS and Android is mostly due to this being a requirement on the mobile platforms.
This year we received a request to port the Endpoint to the BlackBerry 10 platform. This was particularly interesting because traditionally we have been unable to support the older BlackBerry operating systems, as they were Java based and did not support native applications. By contrast, BlackBerry 10 is a completely new OS, based on QNX, following the acquisition of QNX by BlackBerry in 2010. QNX is a Unix-like OS, with full support for POSIX and native development. Although the OS itself was promising, I was still unsure of how useful the development tools would be for native apps. Also, as the request was coming directly from BlackBerry, I was free to build just a native binary, with no UI, as long as the platform supported this.
My first interaction with the development tools was quite positive. BlackBerry has a dedicated website for native development on BlackBerry 10 (http://developer.blackberry.com/native/). The IDE is called Momentics, is based on Eclipse, and can be installed on either Windows, Linux, or Mac OS. A plug-in for Visual Studio 2012 and 2013 is also available, but I haven’t tried it. I found the Simulator slightly less straightforward than the Android or iOS ones, as it requires VMware Player to be installed.
The nice surprise came when I started playing with Momentics. Alongside the options to create a BlackBerry UI project, the IDE has the options to create a plain QNX C or C++ project. Even better, the output of printf commands is displayed in the Console view in Momentics. From that point on, adding the Endpoint code to the project and compiling it was pretty straightforward. Even though it has no UI, the native application can be run on the Simulator, with the networking stack enabled. Debugging can be performed either with printfs, or directly from the IDE.
After the iOS and Android experience, I was impressed to find a mobile platform that readily exposes its underlying Unix-like OS and allows building command-line native applications, without a UI. Most likely this is not intentional and it’s a leftover from previous QNX tools, as running a command-line app on an actual device is most likely not possible. However, for our particular requirements, the BlackBerry native tools proved to be amazing for a mobile platform.
This is just one example of how custom endpoints can be created to extend IxChariot reach.