zurück zum Artikel

BlackBerry: Comeback mit neuer Ausrichtung

Tam Hanna

Lange hat es gedauert, bis ein neues BlackBerry-System vorlag. Wo es nun draußen ist, stehen die Chancen aufgrund der neuen C++-Nähe und der einfachen Portierbarkeit von Android-Apps gar nicht so schlecht, dass Entwickler das BlackBerry 10 mögen werden – auch weil BlackBerry-Anwender bislang als zahlungsfreudig galten.

BlackBerry: Comeback mit neuer Ausrichtung

Lange hat es gedauert, bis ein neues BlackBerry-System vorlag. Wo es nun draußen ist, stehen die Chancen aufgrund der neuen C++-Nähe und der einfachen Portierbarkeit von Android-Apps gar nicht so schlecht, dass Entwickler das BlackBerry 10 mögen werden – auch weil BlackBerry-Anwender bislang als zahlungsfreudig galten.

Die BlackBerry-Geräte waren trotz großen Marketings immer vorrangig im Business-Segment zu Hause. Professionellen Anwendern ist die Medienvielfalt ihres Telefons nicht wichtig, sie legen vor allem Wert darauf, die diversen Geschäftsapplikationen so effizient wie möglich zu nutzen. Hier spielt BlackBerry seine Stärke aus: Der Server im Hintergrund arbeitet mit einem Protokoll, das von Grund auf an die Gegebenheiten im Mobilcomputerbereich angepasst ist. Das bedeutet, dass ihm Verbindungsabbrüche nichts ausmachen – bei Fahrten im Zug ist das ein nicht zu unterschätzender Vorteil. Hinzu kommen ausgetüftelte Möglichkeiten der zentralen Geräteverwaltung.

Aufgrund dieser Fähigkeit waren Endanwender gewillt, dem Unternehmen das teilweise nicht mehr zeitgemäße Betriebssystem zu verzeihen. Der Marktanteilsverlust der Plattform ist – nach Meinung des Autors – nicht auf User-Abwanderung zurückzuführen. Stattdessen sprach der Hersteller die nach dem iPhone in den Markt drängenden "unsophisticated users" nicht an und konnte so vom Wachstum des Gesamtmarkts nicht profitieren.

Im Laufe der letzten Jahre hat sich die Bildschirmauflösung der Mobilgeräte permanent gesteigert. Mittlerweile sind einige Anbieter bei Full-HD-Handys angekommen. Auch RIM war nicht untätig – unter BlackBerry 7 gibt es deshalb eine Vielzahl an Hardwarekonfigurationen. Mit BlackBerry 10 beseitigt der Hersteller das Problem. In Zukunft sind die Geräte nur noch in einer von drei Bildschirmauflösungen verfügbar. Dadurch entfällt das zeitaufwendige Erstellen mehrerer Versionen:

Zuerst müssen Entwickler mit zwei Geräten vorliebnehmen. Das BlackBerry Z10 erinnert verdächtig an den Dev Alpha [1] – er hat eine Bildschirmauflösung von 1280 x 768 Pixel, die auf 4,2 Zoll Bildschirmdiagonale verteilt ist. Eine QWERTY-Tastatur gibt es nicht, der Zweikernprozessor arbeitet mit 1,5 GHz.

Für Tastaturjunkies gibt es den BlackBerry Q10, der erst in einigen Wochen verfügbar ist. Das Gerät hat einen 3,1 Zoll großen quadratischen Bildschirm, der eine Auflösung von 720 x 720 Pixel aufweist.

Das Java-Betriebssystem des BlackBerry 7 ist zeitgemäßen Ansprüchen nicht mehr gewachsen. Anwender heutiger Smartphones verlangen unter anderem perfektes Multitasking, was schon zu Zeiten von J2ME immense Probleme verursachte. Mit dem PlayBook testeten die Kanadier erstmals den Austausch des zugrunde liegenden Kerns. Dazu setzten sie auf ein Echtzeitbetriebssystem. QNX ist ein im Embedded-Bereich seit Jahren verbreitetes und stabiles Unix-Derivat. Aufgrund der hohen Zuverlässigkeit entschied man sich dafür, das System auch im Handy einzusetzen.

Durch den Unix-Unterbau akzeptiert QNX in C++ geschriebene Applikationen. Das ist insbesondere für Spieleprogrammierer attraktiv, deren Produkte in der Regel ihre eigene GUI-Engine mitbringen. BlackBerry 10 bedient C++-Entwickler mit einer komplett eigenen Rubrik auf der Webseite samt eigener Dokumentation [2]. Zum Entwickeln steht neben der für Cascades (dazu unten mehr) vorgesehenen und sich in Eclipse integrierenden Arbeitsumgebung Momentics ein Plug-in für Visual Studio zur Verfügung.

Native C++-Anwendungen haben eine vergleichsweise einfache Grundstruktur, die der Projekt-Wizard auf Wunsch automatisch generiert. Im Prinzip handelt es sich dabei nur um eine Ereignisschleife, die die eingehenden Events vom System einsammelt und weiterverarbeitet.

Wer Anwendungen für Unix erstellt, kennt sicherlich das Cross-Plattform-Framework Qt. BlackBerry setzt voll auf dessen JavaScript-basierte Sprache QML und erweitert die Sprache sogar noch um einen vom neuen Qt-Maintainer Digia nicht standardisierten Dialekt namens Cascades. Er ermöglicht wunderbar aussehende Effekte samt Animationen und ist für die Realisierung der kompletten Benutzerschnittstelle des Betriebssystems verantwortlich. Interessant ist, dass Cascades komplett "bilingual" aufgebaut ist. Es ist also (theoretisch) möglich, eine Cascades-Anwendung ausschließlich in C++ zu realisieren.

Weitaus häufiger ist der Einsatz im "Kombinationsmodus". Dabei realisieren Entwickler die Benutzerschnittstelle in Cascades, die Geschäftslogik entsteht hingegen in C++. Diese Struktur hat mehrere Vorteile, die insbesondere in komplexeren Workflows mit mehreren Entwicklern und Grafikern zu Tage treten. Die strenge Aufteilung zwischen Logik und Benutzerschnittstelle ermöglicht es, dass die beiden Teams parallel arbeiten. Änderungen in der GUI lassen sich ohne Meldung an das Entwicklerteam realisieren – zumindest dann, wenn eine gewisse Übereinkunft über die Benennung der Steuerelemente besteht. Der Grund dafür liegt im Signal-Slot-System von Qt, das Cascades aus der QML-Implementierung übernimmt.

Da das erstmalige Einrichten einer Signal-Slot-Verbindung für Einsteiger schwierig ist, zeigt der Artikel die ersten Schritte. Dazu ist ein neues Projektskelett für eine Cascades-Applikation zu erstellen und der QML-Quellcode von main.qml folgendermaßen zu adaptieren:

// Default empty project template
import bb.cascades 1.0

// creates one page with a label
Page {
signal aButtonClicked()
Container {
layout: DockLayout {}
Label
{
objectName: "txtTestText"
verticalAlignment: VerticalAlignment.Top
horizontalAlignment: HorizontalAlignment.Center
text: "Test-Text"
}
Button
{
id: cmdChangeText
verticalAlignment: VerticalAlignment.Center
horizontalAlignment: HorizontalAlignment.Center
text: "Text ändern!"
onClicked:
{
aButtonClicked();
}
}
}
}

Mehrere Stellen sind wichtig. Erstens deklariert der Entwickler alle zu sendenden Signale als erste Eigenschaft des Root-Objekts. Das ist wichtig, da sie sonst nicht beim Empfänger ankommen. Der Container enthält die eigentlichen Steuerelemente. Das Label wird aus dem C++-Code heraus angesprochen und bekommt deshalb einen Objektnamen zugewiesen. Der Button hat die Aufgabe, das Signal auszugeben. Deshalb weist der Entwickler der onClicked-Eigenschaft eine Funktion zu, die die Emission des Signals durchführt.

Übrigens ist Cascades in der Lage, beliebige JavaScript-Funktionen auszuführen. Es wäre also möglich, die hier in C++ realisierte Änderung des Label-Texts direkt in JavaScript umzusetzen.

Im Header des C++-Objekts erstellt man einen Slot und eine neue Member-Variable:

class HeiseSample2 : public QObject
{
Q_OBJECT
public:
HeiseSample2(bb::cascades::Application *app);
virtual ~HeiseSample2() {};

public slots:
void handleButtonClick();

private:
QObject* myObject;
};

Im Konstruktor des Objekts wird der sogleich besprochene Slot durch das Aufrufen der Connect-Methode mit dem vom QML-Dokument emittierten Signal verdrahtet. Außerdem ist findChild aufzurufen, um einen Pointer auf das Label zu erhalten.

HeiseSample2::HeiseSample2(bb::cascades::Application *app)
: QObject(app)
{
// create scene document from main.qml asset
// set parent to created document to ensure it exists for the
// whole application lifetime
QmlDocument *qml = QmlDocument::create("asset:///main.qml").parent(this);

// create root object for the UI
AbstractPane *root = qml->createRootObject<AbstractPane>();
// set created root object as a scene
app->setScene(root);
connect(root, SIGNAL(aButtonClicked()), this, SLOT(handleButtonClick()));

QString myName="txtTestText";
myObject=root->findChild<QObject*>(myName);
if(myObject==NULL)
{
myName="abc";

}
}

Im Slot wird setProperty aufgerufen, die Texteigenschaft des Labels anzupassen:

void HeiseSample2::handleButtonClick()
{
myObject->setProperty("text", "Hallo Welt!");
}

Damit ist das Programm ausführbereit. Die Abbildung 1 zeigt es in Aktion.

Die Textänderung funktioniert (Abb. 1).

Die Textänderung funktioniert (Abb. 1).

In der Vergangenheit gab es keine klare Aussage von RIM zur Verfügbarkeit von Qt-Widgets. BlackBerry 10 enthält nun eine voll funktionsfähige Implementierung der von Symbian und MeeGo bekannten Widgets. Beim Einsatz der QtGui-Bibliothek gilt es, eine wichtige (und in der Dokumentation nicht besprochene) Besonderheit der Qt-Implementierung zu beachten. Die Basisklassen bb::application und bb::cascades::application können keine QtGui nutzende Widgets hosten. Stattdessen ist der gesamte Einsprungpunkt des Cascades-Projektskeletts nach folgendem Schema zu ersetzen:

Q_DECL_EXPORT int main(int argc, char *argv[])
{
QApplication a(argc, argv);

QtMainWindow w;
w.showFullScreen();

return a.exec();
}

Auf der Basis baut man den Rest der Anwendung nach dem von Qt unter Symbian gewohnten Schema auf. Auch die Struktur der .pro-Datei ist identisch – der User Interface Compiler (uic) ist Teil des Frameworks.

Die Formulare sehen durchaus brauchbar aus (s. Abb. 2 und 3), erreichen aber nicht das Look & Feel nativer Steuerelemente.

Die Buttons erinnern stark an Cascades-Applikationen (Abb. 2).

Die Buttons erinnern stark an Cascades-Applikationen (Abb. 2).
Leider hört die Ähnlichkeit schon bei den Checkboxen auf (Abb. 3).

Leider hört die Ähnlichkeit schon bei den Checkboxen auf (Abb. 3).

Eine wesentliche Verbesserung der Darstellung lässt sich durch das Aktivieren des BB10-Style Plug-ins erreichen – die auf der BlackBerry Jam enstandene Abbildung 4 zeigt die Vorgehensweise, den zu verwendenden Code und die erreichbaren Resultate. Aufgrund der verschiedenen Renderingpfade schließt das Verwenden von QApplication (und/oder von normalem QML) den Einsatz von Cascades-Komponenten aus. Das hat zur Konsequenz, dass die Anwendungen unter Umständen nicht zum "Built For Blackberry"-Programm (dazu später mehr) zugelassen werden.

Vorgehensweise, den zu verwendenden Code und die erreichbaren Resultate durch Aktivieren des BB10-Style-Plugins (Abb. 4)

Vorgehensweise, den zu verwendenden Code und die erreichbaren Resultate durch Aktivieren des BB10-Style-Plugins (Abb. 4)


Für viele Marktbeobachter kam die Entscheidung überraschend, dass es für Entwickler klassischer, mit Java erstellter BlackBerry-Applikationen keinen direkten Weg auf die neue Plattform gibt. Wenn sie für ihr BB7-Produkt eine voll native User Experience haben möchten, ist die Portierung auf C++ erforderlich. Unter Umständen lässt sich ein Teil der Geschäftslogik retten, indem das Produkt auf Android portiert und dann über den Packager auf BB10 "übersiedelt" wird – "Built for Blackberry" ist auf diese Weise nicht zu erreichen. Über die Gründe für diese Vorgehensweise ist nichts bekannt.

Durch den Verzicht auf klassische BlackBerry-Applikationen hätte die Plattform mit einem leeren Store starten müssen. Allerdings basiert BB10 ja auf Unix. Deshalb ist es naheliegend, dass die Kanadier einen Blick auf das einzig wirklich erfolgreiche mobile Linux warfen. Aufgrund der Architektur des Betriebssystems ist Android geradezu ideal für "feindliche Portierungen" geeignet. Die meisten Applikationen sind nämlich ausschließlich in Java realisiert und haben keinerlei Beziehung zum darunter liegenden Kernel. Daraus folgt, dass die Anwendungen im Prinzip durch das Portieren der virtuellen Maschine zufriedenzustellen sind.

Sowohl das PlayBook OS als auch BB10 enthalten eine derartige VM, über deren Provenienz nicht wirklich viel bekannt ist. Sie emuliert Android 2.3.3 relativ komplett, natürlich ohne Unterstützung für native Elemente (PDK) und ohne Google-Dienste. Überprüft man seine Anwendung auf Kompatibilität und will sie für die App World verpacken, empfiehlt sich die Verwendung des Online Packager. Dabei handelt es sich um ein im Browser lauffähiges Applet, das unter der URL hier [3] auf Arbeit wartet.

In der Praxis ist es oft sinnvoll, die eigene Anwendung genauer an die BlackBerry-Plattform anzupassen. Dazu gibt es ein Plug-in für Eclipse, das die unter Android-Entwicklern weit verbreitete IDE um die Fähigkeit zum Debuggen von Android-Apps auf BlackBerry-Hardware erweitert. Es lässt sich direkt über die "Add Software"-Funktion und die Paket-URL [4] nachinstallieren.

BlackBerry 10 sieht sich als Integrationsplattform. Deshalb unterstützen die Kanadier sowohl in HTML5 als auch in AIR erstellte Applikationen und Spiele. Dafür stehen zwei spezielle SDKs bereit, die die Entwicklung und das Verpacken derartiger Anwendungen erleichtern.

Klassische BlackBerry-Smartphones akzeptierten beliebige Applikationen, sofern sie nur ausreichend und korrekt signiert waren. Seit dem PlayBook OS ist diese als Sideloading bezeichnete Vorgehensweise für Geräte von Endkunden nicht mehr erlaubt. Die Beschränkung besteht auch unter BB10 weiter. Die Installation neuer Programme und Inhalte erfolgt ausschließlich über eine von BlackBerry betriebene Plattform namens App World. Sie entspricht weitgehend den bekannten App-Stores von Google und Apple, weist aber eine für Einsteiger verwirrende Besonderheit auf.

Ihr Betreiber trennt – die Vorgehensweise erinnert an Nokias Ovi Store – Applikationsbeschreibung und Binärdatei. Das bedeutet, dass die Beschreibung eines Programms von den ausführbaren Dateien unabhängig sein kann. Wenn Entwickler also ein Programm unter BB7 und BB10 anbieten möchten, brauchen sie die Beschreibung nicht zweimal zu erstellen. Insbesondere für die Nutzer von Cross-Plattform-Frameworks ist das ein nicht zu unterschätzender Aspekt.

Beim Erstellen der Produkteinträge zahlt es sich aus, etwas Zeit mit dem der Such- und Detektions-Engine zugrunde liegenden Algorithmus zu verbringen. Er bestimmt, in welcher Reihenfolge die Programme bei einer Suchanfrage eines Benutzers erscheinen. Je weiter oben ein Programm sitzt, desto besser.

Anders als die meisten anderen Anbieter legen die Kanadier ihre Suchmethode für die Entwickler offen, um so für "Waffengleichheit" zwischen großen und kleinen Anbietern zu sorgen. Weitere Informationen dazu finden sich im BlackBerry-Entwickler-Blog [5].

RIM/BlackBerry ist seit jeher für seine sichere Plattform bekannt. Analog zu Nokia ist das BlackBerry OS durch ein Signatursystem abgesichert, das jeder Anwendung eine eindeutig zuweisbare "Herkunftsquelle" angibt. Die Beschaffung der Schlüssel war früher eine teure und komplizierte Prozedur. Mittlerweile geht es einfacher, außerdem verzichtet BlackBerry auf den ehemals zur Identitätsprüfung obligatorischen Obolus.

Um Schlüsseldateien anzufordern, müssen Entwickler das hier [6] auffindbare Formular ausfüllen. Einige Stunden später erhalten sie die Schlüsseldateien per E-Mail. Die diversen IDEs enthalten Wizards, die bei der Einrichtung helfen und die fertige Signierumgebung nach der Registrierung bei RIM in eine ZIP-Datei extrahieren.

Wichtig ist, dass man dieses Archiv (und das dazugehörige Passwort) keinesfalls verliert. Es lässt sich nämlich – auch beim Vorliegen der ursprünglichen Schlüsseldateien – nicht mehr wiederherstellen. Die Konsequenzen des Verlusts sind eklatant: Erstens ist es nicht mehr möglich, Updates für ausgelieferte Applikationen zu erstellen. Zweitens sperrt die App World das Hochladen neuer Builds in existierende Produkte. Zum Entsperren ist ein manueller Prozess bei BlackBerry erforderlich, der einige Tage in Anspruch nimmt.

Leider hört die Ähnlichkeit schon bei den Checkboxen auf (Abb. 3).

Leider hört die Ähnlichkeit schon bei den Checkboxen auf (Abb. 3).

Das angesprochene Sicherheitsproblem schließt das Verwenden von BlackBerry-Endgeräten zum Testen von Applikationen nicht aus. Das liegt daran, dass die Telefone in den Systemeinstellungen einen Regler zur Aktivierung des "Development Mode" enthalten. Er ermöglicht das Aktivieren eines Sonderregimes, das die Installation von Anwendungen über ein auf der Workstation laufendes Kommunikationsprogramm gewährt. Dazu ist ein Developer Token erforderlich, der sich bei Internetverbindung ohne Aufwand erstellen lässt. Ist das Token erst installiert, hat der Entwickler für eine Woche Ruhe. Alternativ gibt es einen VMware-Emulator. Leider ist er auch auf hochleistungsfähigen Rechnern langsam, was auch auf dem BlackBerry Jam von BlackBerry bestätigt wurde.

Zum Hervorheben von Produkten besonderer Qualität gibt es seit einiger Zeit eine Zertifizierung namens "Built for BlackBerry". Insider beschreiben sie als "extrem hart". Sie setzt das Bestehen eines komplexen Kriterienkatalogs [7] voraus. Besonders kritisch ist, dass das Erreichen der Zertifizierung zwangsweise die Verwendung eines BlackBerry-exklusiven Diensts voraussetzt. Spezifisch sind die folgenden Services legitim:

Übrigens ist das Entwickeln zertifizierbarer Applikationen nicht mit jedem Werkzeug möglich. BlackBerry erlaubt nur die Verwendung von Adobes AIR SDK, des nativen SDKs oder von WebWorks.

BlackBerry 10 kämpft mit Microsoft um den dritten Platz im Smartphone-Markt. Beide Plattformen haben ihre individuellen Stärken und Schwächen: Microsoft ist finanzstärker, BlackBerry hat die größere "installierte User-Basis". Für Uneingeweihte mag die geringe Anzahl der verfügbaren Applikationen abschreckend wirken. Allerdings bezeugen Insider immer wieder, dass die Mehrheit der während der diversen Portathons hochgeladenen Anwendungen reiner Abfall sei. Android-Apps erreichen niemals den "Built for BlackBerry"-Status, die klassischen BB7-Qualitätsanwendungen sind "dank" des Binary Break nicht mehr lauffähig.

Da die BlackBerry-Smartphones im Business-Bereich weit verbreitet sind, erfreuen sie sich einer zahlungswilligen User-Schicht. Allein aus dem Blickwinkel erscheinen Portierungen und Neuentwicklungen lohnend – auf keiner anderen Plattform sind die User so gerne bereit, einen Obolus an ihnen nützliche Entwickler zu leisten. Kurz gesagt spricht nichts dagegen – auch weil BlackBerry anders als Apple oder Google aktiv nach Entwicklern sucht –, dem neuen Betriebssystem eine Chance zu geben.

Tam Hanna
befasst sich seit der Zeit des Palm IIIc mit Programmierung und Anwendung von Handheldcomputern. Er entwickelt Programme für diverse Plattformen, betreibt Onlinenews-Dienste zum Thema und steht für Fragen, Trainings und Vorträge gern zur Verfügung.
(ane [8])


URL dieses Artikels:
https://www.heise.de/-1800615

Links in diesem Artikel:
[1] https://developer.blackberry.com/blackberry10devalpha/
[2] http://developer.blackberry.com/native/documentation/bb10/create_simple_apps.html
[3] https://bdsc.webapps.blackberry.com/android/bpaa/
[4] https://developer.blackberry.com/android/downloads/eclipseplugin/
[5] http://devblog.blackberry.com/2013/01/marketing-your-app-blackberry-world/
[6] https://www.blackberry.com/SignedKeys/codesigning.html
[7] https://developer.blackberry.com/builtforblackberry/documentation/criteria.html
[8] mailto:ane@heise.de