1. Welchen Transportweg hätten Sie gern ?
Ein Http-Request kann über 5 verschiedene Transportwege übermittelt werden:
1. BIS (BlackBerry Internet Service)
2. BES (BlackBerry Enterprise Service)
3. WAP 2.0
4. Direct TCP – (Direkt über den APN des Netzbetreibers)
5. WiFi
Welcher Transportweg für eine Http-Verbindung genommen werden soll, muss der Entwickler selbst bestimmen und dabei gleichzeitig auch die Verfügbarkeit prüfen. Natürlich verhalten sich die Transportwege auch unterschiedlich: Beispielsweise wird man bei dem Transportweg BIS oder BES nie einen HTTP 301 oder 302 zu sehen bekommen, da die Redirects bereits in der BlackBerry-Infrastruktur aufgelöst werden.
Verschärfend kommt hinzu, dass dem Endkunden je nach Datentarif und gewählten Transport unterschiedliche Kosten entstehen können. Somit muss der Kunde in den Einstellungen der App die Möglichkeit haben, den präferierten Transportweg auszuwählen. iPhone-User und Applikationsentwickler schütteln hier einfach den Kopf. Zwar stellt RIM seit der OS-Version 5.0 eine Network-API zur Verfügung, die das ganze vereinfacht, aber für ältere OS-Versionen muss dies selbst implementiert werden.
2. Jeder schreibt sich das Logging-Framework selbst
Es soll ja tatsächlich in der Java-SE Welt noch vereinzelt Leute geben, die sich eine eigene Logger-Implementierung schreiben. In der BlackBerry-Welt macht das jeder, da die mitgelieferte EventLogger-Klasse nur rudimentäre Funktionalität bietet und sehr unglücklich zu programmieren ist. Beispiel gefällig ?
// Register application for event logging with GUID
EventLogger.register(0x9c805919833654d6L, SampleApp);
// Log a numeric event.
EventLogger.logEvent(0x9c805919833654d6L, 12, EventLogger.INFORMATION);
Im Übrigen kann ein Log maximal 16kB umfassen.
3. Anzahl der Threads bei älteren Geräten auf 16 limitiert
Eine App kann auf älteren Geräten max. 16 Threads gleichzeitig laufen lassen. Wenn eine App überdurchschnittlich komplex ist, und viele Dinge im Hintergrund erledigt (Parsing, GPS- und CellId-Lokalisierung, Laden von Kartendaten), dann muss man aufpassen, dass diese Grenze nicht überschritten wird. Ansonsten wird die Applikation unschön mit einem TooManyThreadError beendet. Dies betrifft allerdings nur die älteren Geräte. Modernere Modelle wie der Torch oder Bold können weitaus mehr Threads parallel laufen lassen.
Aber wo Schatten ist, ist auch Licht. Der nächste Blogeintrag handelt von 3 Dingen, die das BlackBerry-SDK elegant löst.