At the end of last year, I received for the personal use of the Blackberry 10 Alpha, a prototype, then not yet released, Z10. Naturally, I had a desire to write something for the new platform, especially since it looked very interesting.
Now the application is ready, and I can share my development experience in comparison with Android / iOS.
IDE
This is the familiar Eclipse with a set of extensions from Blackberry. Plus - nothing needs to be learned anew, the environment is familiar, a minus - the IDE is delivered only as a set, and not as a set of extensions, it is a little uncomfortable to keep several eclipses for each vendor on one machine. However, all this applies only to the development of native applications on the new
Cascades framework, Android / AIR developers may not abandon the usual tools.
Cascades SDK
In fact, this is Qt4 + QML, and if everything is simple with Qt4, then in QML, the regular elements are replaced with the components of the Blackberry UI, only the syntax remains. This is a plus - all programs will behave in the same way, but there is also a minus - in terms of functionality and flexibility, new components are inferior to the standard ones, especially in terms of ease of layout and “flexible” layout. Getting used to the layout was generally a bit difficult, especially to the fact that the properties of the margin and padding, although they are present in all elements, but do not always affect the result (it depends on what lies in the container - the control, or another container) .
')
Native sdk
This is a pure Sishny API and looks alien in front of object Qt code. You can't do without it completely (for example, if you need Bluetooth), but in the examples there are ready-made wrappers that you can take to not write your own.
Existing problems
- The QML editor depends on hardware acceleration and does not start at all and not always, for me, for example, it worked with SDK v10.0, but it disconnected in beta 10.1. You can work without a preview, but time is spent more. The preview mechanism for various resolutions and screen orientations, as well as in Android is also not present, you have to check everything on the device.
- The simulator works extremely slowly, in terms of speed, it falls short of not only the iOS simulator, but also the full-fledged Android emulator. In addition, since the simulator has a different architecture from ARM, the application for it should be assembled separately, switching the Build target before launch.
- To activate the development mode, it is necessary to put the password on the device, at least six characters that are not consecutive, you have to enter this password every time after a long device downtime, as well as each time you connect to the computer for debugging. The development mode itself is turned off after a reboot, and it needs to be re-enabled.
- The certificate that is created for applications in debug mode is issued only for a couple of weeks, then you have to recreate it, it is not difficult, but again it takes time.
- The SDK and API are being actively developed and updated, as a result, some examples (including those from the official website) do not work correctly due to irrelevance.
- There is no normal way to load your fonts into Cascades.
- The mechanism for supporting multiple configurations is inferior to what Android has. Even despite the fact that there are only three options for permissions (dev alpha it is not the same as the z10), this drawback is already felt.
- C ++. I really love this language, but after C # / Java, each compiler error stream, caused by one wrong point, enters into a stupor.
- At StackOverflow, there are still very few questions on the new platform.
pros
- Site for developers. It is very convenient, contains a lot of information on the API, and on GitHub a rich rep is uploaded with a bunch of examples for all occasions. And examples are full-fledged test programs from which you can take a code and process it in place. For each topic there is a series of small articles that allow you to quickly begin development without studying the documentation up and down.
- Qt. One of the best cross-platform frameworks with excellent documentation, a solid community and a base of ready-made solutions.
- The standard export mechanism does not allow to sign an application with a number that has already been signed once. No more assemblies that have mistakenly forgot to change the version number.
- Blackberry 10 is sufficient open (in terms of API) platform. A lot of things are available to the developer, but there is also a “permissions” mechanism that does not allow programs to access important subsystems or data without the user's permission.
- There is a regular program interaction mechanism, similar to Intents in Android. In power, it is slightly inferior to the latter, but for the most common tasks it suffices with a head.
- Easy porting from Android. I translated two applications without a single error in half an hour. This is a great result. Of course, only Android 2.3 is supported and the ports received do not look native (but this can be corrected if you take care of users). It is only necessary to disable Notifications before porting, since there is no similar mechanism in Blackberry 10, and messages will pour in the Hub, annoying the user.
- Support J2ME, AIR, HTML5
Market
The store has not changed at all and looks the same as it was in the days of the old J2ME Blackberry devices. Against the background of a great site for developers, he is like a pensioner on the basketball court. User experience is also below average. To top it off, my first application has been “under consideration” for more than two weeks (a period that even iOS programmers are already annoying).
Summarizing, I will say that, despite the platform’s youth and a number of obvious flaws, it makes a good impression, both by the device itself and the main developer tools. In addition, the list of these tools is regularly expanded, and they themselves are updated. For example,
Exporter for PSD graphics was recently released, a
plug-in for Visual Studio is under development.