Macht ne Welle: bada ist da.
Monday, February 15, 2010 0:46
Nicht ganz ein halbes Jahr nach Ankündigung des neuen Betriebssystems stellt Samsung Mobile auf dem Mobile World Congress 2010 sein erstes Smartphone mit bada als Betriebssystem vor. Das Samsung Wave, Kryptoname S8500, ein mit neuartiger Displaytechnologie, starkem Prozessor und leistungsfähigem Akku ausgestattetes Handy wird ab April 2010 und damit etwas später als das erste Android Handy und etwas früher als das erste iPhone nach deren Ankündigung erhältlich sein.
Schade, dass es Samsung Mobile bis heute nicht geschafft hat, ein SDK für das neue Betriebssystem öffentlich zugänglich zu machen. Selbst nach erfolgreicher Anmeldung mit dem mittlerweile als “Email-ID” genannten Single-Sign-On-Mechanismus auf der offiziellen bada-Entwicklerseite wird man darauf hingewiesen, dass man sich als offizieller Partner akkreditieren muss, um in den Genuss einer IDE (basierend auf Eclipse), eines Toolkits fürs Kompilieren oder gar eines Emulators zu kommen. Will man nicht gleich seine vollständigen Unternehmensinformationen nach Korea schicken und ein entsprechendes Konto anlegen, kann man sich weitere Informationen aus den bereits zugänglichen SDK-Dokumentationen, Tutorials und der Handvoll Blog-Beiträge zusammensammeln, die Samsung bereits seit Dezember öffentlich zur Verfügung stellt.
Grundlagen / Convention over Configuration
Bada-Applikationen entwickelt man in C++, immerhin eine deutlich verbreitetere Programmiersprache als Apples ObjectiveC mit Aussicht auf ein deutlich höheres Geschwindigkeitspotenzial als Apps für Androids Java-Derivat DalvikVM oder Palm’s HTML/JS-basiertes webOS. Die Entwickler haben beim Zusammenstellen der APIs viel Wert darauf gelegt, einen „modernen“ Klassendialekt in C++ zu entwerfen, mit dem sich auch weniger pointerarithmetisch versierte Programmierer anfreunden können. So macht bada intensiven Gebrauch von Namespaces, was zu vollständigen Klassennamen wie Osp::Ui::Controls::Form führen kann. Treu dem Motto „Conventions over Configuration“ stellt Samsung in einem gut 160-seitigen Einstiegsdokument einige Grundregeln für bada-Code auf.
So will man um jeden Preis die Verwendung von Konstruktoren vermeiden (vermutlich, um Buffer Overflows oder anderen Leaks durch nicht im Destruktor freigegebene Speicherbereiche vorzubeugen) und schlägt die Verwendung einer expliziten Konstruktionsmethode „Construct()“ vor, die gegenüber dem nativen Weg natürlich auch den Vorteil bietet, einen Rückgabewert anzubieten. Statt auf das in C++ längst etablierte Exception-Handling zu vertrauen, ahmt bada Ausnahmebehandlung mit Hilfe von Methoden(TryCatch(…), GetResult()) und Erfolgskonstanten („E_SUCCESS“) nach. Als Grund gibt Samsung dafür an, dass das „moderne“ Exception-Handling zu viel Overhead für Ressourcen-arme Endgeräte erzeugen würde. Ein Grund, den viele Programmierer Anfang der 2000er von traditionsverliebten ANSI-C-Hackern schon einmal frustriert kommentarlos entgegennehmen durften. Um persönlich zu werden: Freunde, das ist doch Quatsch! Android läuft auch nicht spürbar langsamer, weil es dort Sprachkonstrukte wie try und catch gibt.
Auch sonst nehmen es die Architekten von bada nicht allzu genau mit jahrzehntelang etablierten Standards der Softwareindustrie: da werden StringTokenizer, Collection-Datentypen wie HashMap, Stack, Queue und LinkedLists und gar ein vollständiges, Mutex- und Semaphore-basiertes Threading-System neu aufgebaut, als hätte es die STL nie gegeben. Gleichsam nennt man ganze GangOf4-Entwurfsmuster um: so werden aus Iteratoren jetzt Enumeratoren. Um nochmal persönlich zu werden: Freunde, es ist ja nett, dass Ihr diese gesamte Basisfunktionalität bereit stellt. Vermutlich wollt Ihr unter Weglassung von Templates (Generics) wieder mal Ressourcen sparen oder Bjarne Stoustrup und Co. auf diesem Wege mitteilen, dass Ihr die besseren Archtiekten von Standardbibliotheken seid, aber glaubt mir (oder der Geschichte, whatever comes first): Standards sind dafür da, um benutzt zu werden. Und C++ ist heutzutage (gerade in diesem Umfeld) so legacy, dass man den alten Hasen, dies noch können, wenigstens zugestehen könnte, ihre vertraute Umgebung wiederzufinden und sie nicht durch Weglassung von Exception-Handling, Templates oder Standardbibliotheken wieder zum Fluchen Neulernen zu zwingen.
Die meisten modernen Handy-Betriebssysteme nutzen zur individuellen Datenhaltung eine SQLite-Datenbank. Bada unterstützt den Quasi-Standard durch eine entsprechende Datenbankklasse („Database“), auf deren Basistechnologie in den vorliegenden Tutorials aber nicht eingegangen wird. Mit ihr ist es möglich, neue Datenbanken anzulegen („Construct(dbFileName)“), SQL-Statements zu instanziieren (CreateStatement(sql)), Parameter zu binden (BindString(Index, string) ), Statements auszuführen (ExecuteStatement( ? )) und im Resultset via Enumerator (gemeint ist ein Iterator bzw. DB-Cursor!) zu navigieren (MoveNext). Datenbankzugriffe werden asynchron ausgeführt, sodass eine Datenbank während einer Operation immer exklusiv für einen Thread geöffnet wird. Neben diesen rudimentären SQL-Tools bekommen Entwickler unter bada dafür auch die Möglichkeit, direkt auf dem Filesystem zu arbeiten. Jede Applikation erhält ein eigenes Home-Verzeichnis, in dem einige Unterverzeichnisse auch global lesbar markiert werden und so zum Datenaustausch mit anderen Applikationen herhalten können.
Service-Funktionen
Das aus meiner Sicht spannendste Feature für Endkunden ist bada’s „Social Hub“, den Samsung als „integrierten Messaging Service“ beschreibt. Er will als zentrale Anslaufstelle für alle Teilnehmer des mobilen Ökosystems vom Programmierer über Betreiber von Sozialen Netzwerken und Freemail-Anbietern bis zum Endkunden dienen und die Kommunikation vereinfachen. Für den Enkunden äußert sich der Social Hub als MOTOBLUR- oder Vodafone360-ähnliche Hauptansicht, auf der alle Interaktionen mit einem einzigen Kontakt sichtbar werden – ganz gleich, ob man ihn angerufen oder via Facebook kommuniziert hat, alle Nachrichtenströme laufen hier zusammen. Ein tiefer Blick in die Tutorial-Dokumentation von bada lässt dann erkennen: das ist nur die Spitze des Eisbergs!

Tatsächlich führt Samsung bei bada eine eigene Server-Infrastruktur ein, die Applikationsentwickler als ultimative Storage-Engine für Nutzerdaten heranziehen können. Im Wortlaut spricht man von einer Service-orientierten Infrastruktur für Soziale Netzwerke, Synchronisation, Content Management, Location Based- und Commerce-(Billing?-)Services, die von back-end bada-Servern unterstützt werden sollen. Jeder Nutzer eines bada-Geräts erhält eine eindeutige ID auf den bada-Servern, unter der persönliche Daten abgelegt werden können. Samsung versichert (Wortlaut): „The synchronization account in the bada DS Server is available exclusively to the device owner. Nobody else has access to, or can synchronize, your data“. Das klingt ein wenig nach der immer wieder hochkochenden Meldung von RIM, ihre Blackberry-Router, die ganz Europa von Großbritannien aus mit Push-Mails versorgen, würden garantiert keine persönlichen Daten preisgeben.
Dennoch haben solche Dienste für Entwickler etwas verlockendes, zum Beispiel die neue Profilierungsfunktion. Ein Nutzer kann elementare Profildaten auf dem bada-Server hinterlegen, darunter zum Beispiel seinen Geburtstag, Religionsangehörigkeit oder aktuelles Berufsverhältnis. Eine Applikation kann diese Daten mit Hilfe von sogenannten „Custom Profiles“ anreichern, deren Entitätsmodell im Rahmen der bada-Entwicklerwebseite gepflegt werden kann. Gestattet es ein Nutzer nun seinem Handy, sich in einem „Public Directory“ auffindbar zu machen, kann er auf Wunsch von allen anderen bada-Nutzern gefunden werden. Ein spezieller Dienst namens „Buddies“ sorgt dafür, dass Nutzer miteinander über die Public Directories in Verbindung treten können, im Namespace „Privacy“ findet man Klassen, die via ACL-Mechanismen den Zugriff auf Profildaten für bestimmte Nutzer oder Nutzergruppen erlauben. Sogar an Diskussionen hat Samsung gedacht: innerhalb von „Boards“ findet man Klassen, mit denen sich typische Forenfunktionen implementieren lassen, deren Content selbstverständlich ebenfalls auf den bada-Servern gespeichert werden soll. Gleichsam stellt Samsung einen SyncML-Service bereit, den Nutzer für den Backup und das Restoring ihrer Daten nutzen können.
Fazit daraus: Samsung transportiert nicht nur die Funktionen einzelner Sozialer Netzwerke oder Sharing-Plattformen aufs Handy (das können mittlerweile alle etablierten Plattformen), sondern schafft sich eine eigene Profildateninfratstruktur, indem man Entwickler dazu ermutigt, die serverbasierten Funktionen der öffentlichen Profilierungs-API zu nutzen. Das erinnert ein wenig an Android: auch hier ist man zur Nutzung elementarer Handy-Funktionen auf einen zentralen Login (und damit auch auf einen gewissen Grad an Profilierung) bei Google (Mail/Talk) angewiesen. Nur ist Samsung auf diesem Gebiet bei weitem noch nicht so erfahren wie Google, Microsoft oder Nokia, bietet dafür aber, gesetzt dass alle in den Tutorials beschriebeben Funktionen auch tatsächlich zum Launch-Termin ihren Dienst verrichten, eine deutlich höhere Funktionsdichte ab Werk an als die Konkurrenz. Wer sich schon davor scheute, Google Chrome als Webbrowser zu nutzen, weil der jede Eingabe zur Autocompletion via Google Suggest ins Silicon Valley schickte, dürfte bei bada schon Angst davor bekommen, auch nur einmal seinen Facebook-Account zu nutzen – dort hinterlegte Profildaten kann man sich dann im Zweifelsfall im Land der Morgenstille abholen.
Auch bereits bestehende soziale Netzwerke (SNS) werden von bada für Entwickler zugänglich gemacht. Statt lediglich einige Apps mit sozialen Netzwerkfunktionen vorzuinstallieren, schafft Samsung gleich eine gemeinsame API, die darauf abzielt, Daten verschiedener sozialer Netzwerke aggregieren zu können. Implementiert sind bereits die Authentifizierungsmethoden für OAuth und HTTP Basic, sodass sich eine Anwendung relativ unkompliziert an Diensten wie YouTube, Facebook, Flickr, Twitter oder bebo anmelden kann. Das SNS-Gateway dient weiterhin dazu, die Daten aus verschiedenen Netzwerken zu synchronisieren bzw. zu “normalisieren”, bietet beispielsweise Methoden an, um Fotos aus SNS zu extrahieren oder Freunde-Informationen abzurufen, die sich dann mit den system- bzw. bada-eigenen Profildaten zusammenführen lassen. Während Palm oder MOTOBLUR noch versuchten, soziale Netzwerkdienste proprietär mit den lokalen Kontakten abzugleichen, bietet Samsung bada eine vollwertige SNS-API an, die ein Entwickler beliebig erweitern kann.
Oberfläche
Die Benutzeroberfläche, die bei bada zum Einsatz kommt, bezeichnet Samsung als „TouchWIZ 3.0“. Bis zur Stunde ist es unklar, ob der Hersteller damit auch die Abwärtskompatibilität zu den bereits bestehenden Javascript-APIs für TouchWIZ-Widgets gewährleistet, die noch kein ganzes Jahr in der Öffentlichkeit auf dem Buckel hat. Ganz abstrakt spricht die Pressemitteilung von einem „großartigen Individualisierungserlebnis“, insbesondere für Liebhaber von sozialen Netzwerkfunktionen. Bada beschreitet damit einen entgegengesetzten Ansatz zur fixierten Mehrseitennavigation wie bei HTC’s Sense und orientiert sich eher an S60s WRT oder Android’s nativem Widget-Homescreen. Glaubt man der initialen Pressemitteilung zum bada-Launch vom 8.Dezember 2009, werden auch TouchWIZ(3.0)-Widgets Zugriff auf Systemfunktionen bekommen, um z.B. GPS-Daten oder Sensorfunktionen anzusprechen. Wie das ganze in der Praxis aussieht, wird man auf dem Mobile World Congress in der nächsten Woche bestaunen können.

Ein dickes Plus, zumindest aus Sicht vieler Kreativer, hat Samsung mit der nativen Unterstützung von Adobe’s Flash-Plattform. Mit Hilfe einiger weniger API-Funktionen lässt sich rasch ein SWF-Layer in eine App einbinden. Das System kommuniziert über die gut dokumentierte fscommand2-Schnittstelle, die auch JavaME- (Stichwort Capuchin) oder Javascript-Entwickler bereits gut kennen dürften.
Mein Fazit
Das Samsung Wave ist sicherlich ein tolles Gerät mit vielen schönen Vorzeigefunktionen, einem Datenblatt, das beim Handy-Memory zur Zeit alle anderen Karten aussticht und auch noch weniger als 11mm dick ist. Das neue Betriebssystem bada als überflüssig zu bezeichnen wäre angesichts der vielen neuen Funktionen, die sicherlich noch ein halbes Jahr brauchen werden, bis sie im Mainstream angekommen sind, fahrlässig. Doch muss man sich fragen, warum Samsung als Mitglied der OHA und Unterstützer von Android nicht einfach seine Kräfte auf das offene Betriebssystem konzentriert. Denn von „offen“ ist bada weit entfernt: zwar ist seine API schon vor dem Launch halbwegs gut dokumentiert, aber Einblick in die Implementierung oder gar direkte Änderungen kann man freilich nicht vornehmen – das mag die meisten Applikationsentwickler kalt lassen, setzt politisch aber ein klares koreanisches Ausrufungszeichen vor die Nase des noch im Buzz-Taumel derilierenden Suchmaschinenriesen aus Kalifornien. Auch ist fraglich, ob sich Samsung mit dem Ansatz eines zentralen Profilierungsservers viele Freunde macht – nur weil Facebook und Co. es geschafft haben, dass dort Nutzer digitale Intimitäten austauschen, muss das nicht auch für einen koreanischen Handy-Hersteller gelten; und die Finnen haben es bislang gar nicht erst versucht. Samsung probiert mit der fernöstlichen Brechstange eine Tür in die offene und kritische Nutzerschar des Web2.0 zu öffnen und achtet penibel darauf, dass die Nutzer des Eisens koreanische Muttersprachler sind. Ob das gut geht?

7mobile-blog sagt:
February 18th, 2010 um 19:25
Samsung Wave S8500 neues Flaggschiff von Samsung mit Bluetooth 3.0 und Bada Betriebssystem…
Das Samsung Wave S8500 wird gerade von Samsung beim “Mobile World Congress” in Barcelona vorgestellt und präsentiert. Bei Messen in solchen Größen ist es umso wichtiger, dass das Smartphone mit einer Besonderheit Konkurrenten…
admin sagt:
February 18th, 2010 um 19:36
Guerilla-Marketing unterstütz ich natürlich gerne
VIele Grüße nach Hamburg und natürlich auch persönlich an Hrn. Pion…