[X] C++ und mobile Plattformen



  • C++ und mobile Plattformen

    Mit diesem Artikel möchte ich euch einen kurzen Überblick über die verschiedenen Plattformen für mobile Endgeräte (aka Smartphone, oder altmodisch Handy) geben.
    Der Artikel basiert auf einem Blogbeitrag von mir.

    Sehr vielfältig ist die Landschaft der Betriebsysteme und Plattformen für Smartphones geworden:

    • Nokia (Symbian/S60,Maemo)
    • Android
    • Windows Mobile/CE
    • IPhone OS
    • WebOS (Palm)
    • Blackberry
    • LiMo
    • Moblin

    Auf vielen dieser Plattformen lässt sich mit C++ Software entwickeln, wenn auch zum Teil nur eingeschränkt. So gibt es für Android zur Zeit nur ein NDK, welches in eine Android Applikation mittels JNI eingebunden werden kann. Auch sei gesagt, das nicht alle diese Plattformen offen sind, so das bei einer Applikationsentwicklung der Hersteller evtl. dann das letzte Wort hat. Palm machte hier gerade Schlagzeilen, und Apple ist ja für seine restriktive Politik im Appstore bekannt.
    Auch ist teilweise die Version des Betriebsystems wichtig, weil häufig damit weitere Neuerungen kommen, und evtl. ältere Handsets nicht mehr unterstützt werden.

    Ein Überlick über die derzeitige Marktsituation

    Ein Überblick über die derzeitigen Marktanteile und eine Prognose über ihre Verteilung in 2012 hat Gartner gerade veröffentlicht:

    Wenn man dies nun zusammenzählt, dann sieht es so aus:

    Laut Gartners Prognose wird also der Anteil von voll C++ unterstützenden OS um 7% abnehmen, allerdings nehmen die teilweise unterstützenden OS um 12.9% zu, was dazu führt das der Marktanteil für C++ im mobilen Bereich von möglichen 79% auf 84.9% steigen könnte. Auch ist die Frage, wie Nokia sich entwickelt, und ob weitere OS in den Markt kommen. Nokia hat mit Qt ein spannendes Konzept (und Gartner listet weder Maemo, noch LiMo oder Moblin auf), auch ist die Frage, ob sich Android so stark durchsetzen kann. Auch gibt es Prognosen, die eine andere Entwicklung sehen.

    Aber zum wichtigen, wie sieht es jetzt mit der Programmierung für diese Plattformen mit C++ aus?

    Qt

    Trolltech, der Hersteller von Qt, wurde vor einiger Zeit von Nokia übernommen. Nokia hat hier das Ziel, Qt für verschiedene Plattformen umzusetzen, zur Zeit befinden sich unter anderem Qt Versionen für S60/Symbian, Maemo 5, und Windows CE in Entwicklung. Für Maemo 6 hat Nokia schon angekündigt das es komplett Qt basiert sein soll, bisher war Maemo GTK basierend. Alles in allem macht dies Qt zu einem interessanten Kandidaten für die Entwicklung von mobilen Applikationen, gerade wenn man bedenkt, das man mit einem unabhängigen Backend auch einfach auf weitere Systeme portieren kann, für die es noch keine Qt Unterstützung gibt. Da es einen Port für Qt nach Java gibt, kann man auch spekulieren, ob es nicht einmal eine Qt Version für Android geben könnte.
    Generell möchte Nokia seine Mobil Plattform in Qt integrieren, so wird aus Qtopia wohl Qt Mobility werden.

    Weitere Informationen zu Qt auf mobilen Plattformen:

    Android

    Android ist ein von der Open Handset Alliance entwickeltes Betriebsystem für mobile Endgeräte. Wie schon erwähnt, bietet Android die Möglichkeit über JNI auf C++ zu zugreifen, bzw. vor ein C++ Backend kommt hier ein Java Frontend. Da Google das NDK noch nicht zu lange anbietet, sind auch die Informationen hierüber spärlich. So wird die Portierung des mobilen Mozillabrowsers Fennec auf Android wohl auch auf dem NDK basieren. Auch ist Android linuxbasiert, so das man auch einen Weg finden kann, Anwendungen in C++ direkt laufenzulassen, wie z.b. dieser Eintrag beweist.

    Windows Mobile

    Viele Möglichkeiten gibt es für WindowsCE/Mobile in C++ zu programmieren. Microsoft selber bietet einen MFC Port an, dann gibt es von wxWidgets einen WindowsCE Port, und auch Qt hat Support für Windows Mobile. Jedoch gibt es Unterschiede in den unterstützten Betriebssystemversionen. Es ist also eine Entwicklung von Frontend und Backend Applikationen in C++ möglich. Einen weiterführenden Podcast zu diesem Thema finden man hier.

    IPhone OS

    Viele Applikationen für das IPhone sind nativ in Objective C geschrieben, welches sich mit C++ kombinieren lässt. Ähnlich wie bei Android ist also eine Kombination aus systemspezifischen Frontend und C++ Backend möglich. Auch benutzt Apple für die ObjC Kompilierung bei XCode den GCC, welcher auch C++ Code übersetzen kann. Für die Oberflächen empfiehlt sich aber ObjC, auch wegen der IPhone SDK Schnittstellen. Jedoch sollte auch ohne ObjC eine C++ Applikation auf dem IPhone möglich sein. Einen Einblick in die Möglichkeiten von C++ auf dem IPhone bietet diese Artikelserie.

    WebOS

    Palm hat ein neues Betriebssystem für seine Smartphones entwickelt, welches den Namen WebOS trägt. Dabei setzt Palm bei der Applikationsentwicklung auf Webtechniken und Javascript. Zur Zeit ist nicht absehbar, wann und ob C++ von Palm für WebOS unterstützt wird, evtl. in Form eines NDKs wie es Google getan hat. Auch WebOS basiert auf einem Linuxkernel, so dass eine volle Unterstützung ebenfalls möglich wäre.

    Blackberry

    Blackberry hat früher für seine Modelle ein SDK für C++ herausgebracht, aber unterstützt zur Zeit auf neueren Modellen nur Java. Es ist also möglich, für ältere Blackberrys C++ Applikationen zu portieren und zu pflegen. Eine JNI/NDK Lösung ist allerdings zur Zeit nicht in Sicht.

    LiMo

    LiMo (Linux Mobile) ist ein Betriebssystem für mobile Endgeräte welches auf Linux basiert, wie ebenfalls Maemo und Android. Im Gegensatz zu Android ist LiMo jedoch eine komplett offene Plattform. Zur Zeit existieren schon einige Endgeräte, auch ist LiMo als Plattform für mobile Endgeräte zu verstehen. Viele Firmen aus dem Telekommunikationssektor haben sich hier in der LiMo Foundation zusammen geschlossen, um eine auf Linux basierende Plattform für die Entwicklung von mobilen Endgeräten zu schaffen. Zur Zeit ist die Entwicklung für LiMo nur auf C/C++ Basis möglich, jedoch ist ein Java SDK für Ende dieses Jahres geplant, die technischen Spezifikationen finden sich hier. Da schon Trolltech in der Foundation Mitglied war, kann man auch auf eine Qt Version für LiMo spekulieren.

    Moblin

    Moblin ("mobiles Linux") ist ein von Intel initiertes Projekt, welches eine mobile, linuxbasierte Plattform entwickelt, unter anderem für Intels Atomprozessor. In der aktuellen 2.0 Version zielt Moblin erstmal auf Netbooks, mit der Version 2.1 sind aber auch weitere Funktionen für Smartphones gedacht, schon jetzt gibt es eine Unterstützung für UMTS. Als UI Framework kommt hier Hildon zum Einsatz, welches GTK basiert ist. Hildon ist eine Nokia Entwicklung, und wurde u.a. für Maemo entwickelt, wird dort jedoch ab Maemo 6 wohl durch Qt abgelöst. So könnte es sein das Qt auch auf Moblin eines Tages lauffähig sein wird. Intel bietet ein eigenes SDK für Moblin an, welches auch Tools für die C++ Entwicklung enthält.

    Fazit

    C++ hat durchaus seine Vorteile in der Softwareentwicklung, gerade wenn es um Resourcen und Performance geht. Auch auf mobilen Plattformen ist C++ immer noch ausreichend vertreten. Und mit Nokia wird zumindest Qt ein bedeutendes Framework für mobile Entwicklung werden, welches auf C++ basiert. Auch deckt Qt zur Zeit von den 9 Betriebssystemen ca. 66% ab (Symbian, Maemo, Windows Mobile und linuxbasierte, offene Systeme wie LiMo oder Moblin), wenn man die Marktanteile betrachtet sind es sogar deutlich mehr als 50%. Auch kann man weitere Plattformen mit C++ abdecken, in dem man die Applikation in ein Frontend und ein (möglichst unabhängiges) Backend aufteilt.

    phlox



  • So, das ist zur Zeit ein working Draft, die Links muss ich noch kopieren, und wie kann ich tabellen Inhalte gescheit darstellen?

    phlox



  • phlox81 schrieb:

    So, das ist zur Zeit ein working Draft, die Links muss ich noch kopieren, und wie kann ich tabellen Inhalte gescheit darstellen?

    phlox

    Entweder man fuchtelt mit dem code-tag rum oder man macht es kurz in einer Tabellenkalkulationssoftware und macht 'n screenshot 😉



  • Jo. habe mich jetzt mal für die Bildervariante entschieden, ist irgendwie übersichtlicher 😉
    Links sind jetzt auch eingebaut, Feedback bitte 🙂



  • Symbian hat doch auch noch eine (sehr hässliche) native API. Und was ist mit Moblin?

    Ich würde den Artikel vielleicht "C++ und mobile Plattformen: Eine Übersicht" oder so ähnlich nennen (": Stand der Dinge" etc. :)).

    Einen weiterführenden Potcast zu diesem Thema finden man hier.

    Podcast! 🙂



  • rüdiger schrieb:

    Symbian hat doch auch noch eine (sehr hässliche) native API. Und was ist mit Moblin?

    Ich würde den Artikel vielleicht "C++ und mobile Plattformen: Eine Übersicht" oder so ähnlich nennen (": Stand der Dinge" etc. :)).

    Einen weiterführenden Potcast zu diesem Thema finden man hier.

    Podcast! 🙂

    War mir bei Moblin nicht sicher, da es eher für Netbooks gedacht ist (vorallem für geräte mit Atomprozessor).
    Da Moblin von hause aus aber auch UMTS unterstützt, werde ich wohl es noch hinzufügen.

    phlox



  • Netbooks sind doch auch mobile Geräte 😉 :p. Aber die wollen wohl auch Mobiltelefonfeatures in Version 2.1 einbauen.

    http://www.youtube.com/watch?v=YZmkuuFKz5s



  • So Moblin ist jetzt auch dabei. Setz das nächste Woche dann mal auf das was nach T kommt, wenn keine weiteren Punkte sind.



  • Ein sehr schönes Thema! Als erste Übersicht auch schon sehr hilfreich.

    Achja, kannst du bitte Qt (Cute) auch Qt schreiben? Ich finde das einfach nur ekelig, wenn man Namen falsch schreibt. Und das sage ich als Nicht-Qt-Fan! 😉 QT ist QuickTime, hat nichts mit Cute zu tun. Folgendes hat zwar nichts mit deinem Artikel zu tun, aber trotzdem interessant: Ist genauso wie manche die eine Scriptsprache Lua als LUA schreiben, wird von den Lua-Machern ausdrücklich um die richtige Schreibweise gebeten:

    http://www.lua.org/about.html schrieb:

    Like most names, it should be written in lower case with an initial capital, that is, "Lua". Please do not write it as "LUA", which is both ugly and confusing, because then it becomes an acronym with different meanings for different people. So, please, write "Lua" right!

    Sie haben da einfach nur Recht. 🙂



  • Danke für den Hinweis, ist korrigiert.



  • So, hab den Artikel jetzt mal auf R gesetzt, technisch ist er jetzt erstmal fertig.



  • Du meinst, du hast ihn auf R gesetzt, oder? 😉
    Na ja, ich werd ihn mir über's WE vornehmen, wenn mir keiner zuvorkommt 😉



  • GPC schrieb:

    Du meinst, du hast ihn auf R gesetzt, oder? 😉
    Na ja, ich werd ihn mir über's WE vornehmen, wenn mir keiner zuvorkommt 😉

    R fängt auch mit E an :p



  • C++ und mobile Plattformen

    Mit diesem Artikel möchte ich euch einen kurzen Überblick über die verschiedenen Plattformen für mobile Endgeräte (aka Smartphone, oder altmodisch: Handy) geben.
    Der Artikel basiert auf einem Blogbeitrag von mir.

    Sehr vielfältig ist die Landschaft der Betriebsysteme und Plattformen für Smartphones geworden:

    • Nokia (Symbian/S60,Maemo)
    • Android
    • Windows Mobile/CE
    • IPhone OS
    • WebOS (Palm)
    • Blackberry
    • LiMo
    • Moblin

    Auf vielen dieser Plattformen lässt sich mit C++ Software entwickeln, wenn auch zum Teil nur eingeschränkt. So gibt es für Android zur Zeit nur ein NDK, welches in eine Android Applikation mittels JNI eingebunden werden kann. Auch sei gesagt, dass nicht alle diese Plattformen offen sind, so dass bei einer Applikationsentwicklung der Hersteller eventuell dann das letzte Wort hat. Palm machte hier gerade Schlagzeilen und Apple ist ja für seine restriktive Politik im Appstore bekannt.
    Auch ist teilweise die Version des Betriebsystems wichtig, weil häufig damit weitere Neuerungen kommen und eventuell ältere Handsets nicht mehr unterstützt werden.

    Ein Überlick über die derzeitige Marktsituation

    Ein Überblick über die derzeitigen Marktanteile und eine Prognose über ihre Verteilung in 2012 hat Gartner gerade veröffentlicht:

    Wenn man dies nun zusammenzählt, dann sieht es so aus:

    Laut Gartners Prognose wird also der Anteil von voll C++ unterstützenden OS um 7% abnehmen, allerdings nehmen die teilweise unterstützenden OS um 12.9% zu, was dazu führt dass der Marktanteil für C++ im mobilen Bereich von möglichen 79% auf 84.9% steigen könnte. Auch ist die Frage, wie Nokia sich entwickelt und ob weitere OS in den Markt kommen. Nokia hat mit Qt ein spannendes Konzept (und Gartner listet weder Maemo, noch LiMo oder Moblin auf), auch ist die Frage, ob sich Android so stark durchsetzen kann. Auch gibt es Prognosen, die eine andere Entwicklung sehen.

    Aber zum wichtigen, wie sieht es jetzt mit der Programmierung für diese Plattformen mit C++ aus?

    Qt

    Trolltech, der Hersteller von Qt, wurde vor einiger Zeit von Nokia übernommen. Nokia hat hier das Ziel, Qt für verschiedene Plattformen umzusetzen. Zur Zeit befinden sich unter anderem Qt-Versionen für S60/Symbian, Maemo 5, und Windows CE in Entwicklung. Für Maemo 6 hat Nokia schon angekündigt, dass es komplett Qt-basiert sein soll (bisher war Maemo GTK-basierend). Alles in allem macht dies Qt zu einem interessanten Kandidaten für die Entwicklung von mobilen Applikationen, gerade wenn man bedenkt, dass man mit einem unabhängigen Backend auch einfach auf weitere Systeme portieren kann, für die es noch keine Qt-Unterstützung gibt. Da es einen Port für Qt nach Java gibt, kann man auch spekulieren, ob es nicht einmal eine Qt-Version für Android geben könnte.
    Generell möchte Nokia seine Mobil Plattform in Qt integrieren, so wird aus Qtopia wohl Qt Mobility werden.

    Weitere Informationen zu Qt auf mobilen Plattformen:

    Android

    Android ist ein von der Open Handset Alliance entwickeltes Betriebsystem für mobile Endgeräte. Wie schon erwähnt, bietet Android die Möglichkeit über JNI auf C++ zu zugreifen, bzw. vor ein C++ Backend kommt hier ein Java Frontend. Da Google das NDK noch nicht zu lange anbietet, sind auch die Informationen hierüber spärlich. So wird die Portierung des mobilen Mozillabrowsers Fennec auf Android wohl auch auf dem NDK basieren. Auch ist Android linuxbasiert, so dass man auch einen Weg finden kann, Anwendungen direkt in C++ laufenzulassen, wie z.b. dieser Eintrag beweist.

    Windows Mobile

    Viele Möglichkeiten gibt es für WindowsCE/Mobile in C++ zu programmieren. Microsoft selbst bietet einen MFC Port an, dann gibt es von wxWidgets einen WindowsCE Port und auch Qt hat Support für Windows Mobile. Jedoch gibt es Unterschiede in den unterstützten Betriebssystemversionen. Es ist also eine Entwicklung von Frontend und Backend Applikationen in C++ möglich. Einen weiterführenden Podcast zu diesem Thema finden man hier.

    IPhone OS

    Viele Applikationen für das IPhone sind nativ in Objective C geschrieben, welches sich mit C++ kombinieren lässt. Ähnlich wie bei Android ist also eine Kombination aus systemspezifischen Frontend und C++ Backend möglich. Auch benutzt Apple für die ObjC Kompilierung bei XCode den GCC, welcher auch C++ Code übersetzen kann. Für die Oberflächen empfiehlt sich aber ObjC, auch wegen der IPhone SDK Schnittstellen. Jedoch sollte auch ohne ObjC eine C++ Applikation auf dem IPhone möglich sein. Einen Einblick in die Möglichkeiten von C++ auf dem IPhone bietet diese Artikelserie.

    WebOS

    Palm hat ein neues Betriebssystem für seine Smartphones entwickelt, welches den Namen WebOS trägt. Dabei setzt Palm bei der Applikationsentwicklung auf Webtechniken und Javascript. Zur Zeit ist nicht absehbar, wann und ob C++ von Palm für WebOS unterstützt wird, eventuelle in Form eines NDKs wie es Google getan hat. Auch WebOS basiert auf einem Linuxkernel, so dass eine volle Unterstützung ebenfalls möglich wäre.

    Blackberry

    Blackberry hat früher für seine Modelle ein SDK für C++ herausgebracht, unterstützt aber zur Zeit auf neueren Modellen nur Java. Es ist also möglich, für ältere Blackberrys C++ Applikationen zu portieren und zu pflegen. Eine JNI/NDK Lösung ist allerdings im Moment nicht in Sicht.

    LiMo

    LiMo (Linux Mobile) ist ein Betriebssystem für mobile Endgeräte welches, wie Maemo und Android, auf Linux basiert. Im Gegensatz zu Android ist LiMo jedoch eine komplett offene Plattform. Zur Zeit existieren schon einige Endgeräte, auch ist LiMo als Plattform für mobile Endgeräte zu verstehen. Viele Firmen aus dem Telekommunikationssektor haben sich hier in der LiMo Foundation zusammengeschlossen, um eine auf Linux basierende Plattform für die Entwicklung von mobilen Endgeräten zu schaffen. Zur Zeit ist die Entwicklung für LiMo nur auf C/C++ Basis möglich, jedoch ist ein Java SDK für Ende dieses Jahres geplant. Die technischen Spezifikationen finden sich hier. Da schon Trolltech in der Foundation Mitglied war, kann man davon ausgehen dass es eventuell auch eine Qt Version für LiMo geben kann.

    Moblin

    Moblin ("mobiles Linux") ist ein von Intel initiertes Projekt, welches eine mobile, linuxbasierte Plattform entwickelt, unter anderem für Intels Atomprozessor. In der aktuellen 2.0 Version zielt Moblin erstmal auf Netbooks, mit der Version 2.1 sind aber auch weitere Funktionen für Smartphones gedacht. Schon jetzt gibt es Unterstützung für UMTS. Als UI Framework kommt hier Hildon zum Einsatz, welches GTK-basiert ist. Hildon ist eine Entwicklung von Nokia und wurde u.a. für Maemo entwickelt, wird dort jedoch ab Maemo 6 wohl durch Qt abgelöst. So könnte es sein das Qt auch auf Moblin eines Tages lauffähig sein wird. Intel bietet ein eigenes SDK für Moblin an, welches auch Tools für die C++ Entwicklung enthält.

    Fazit

    C++ hat durchaus seine Vorteile in der Softwareentwicklung, gerade wenn es um Resourcen und Performance geht. Auch auf mobilen Plattformen ist C++ immer noch ausreichend vertreten. Und mit Nokia wird zumindest Qt ein bedeutendes Framework für mobile Entwicklung werden, welches auf C++ basiert. Auch deckt Qt zur Zeit von den 9 Betriebssystemen ca. 66% ab (Symbian, Maemo, Windows Mobile und linuxbasierte, offene Systeme wie LiMo oder Moblin), wenn man die Marktanteile betrachtet sind es sogar deutlich mehr als 50%. Auch kann man weitere Plattformen mit C++ abdecken, in dem man die Applikation in ein Frontend und ein (möglichst unabhängiges) Backend aufteilt.

    phlox



  • So, korrigiert... nur eins noch:

    Da schon Trolltech in der Foundation Mitglied war, kann man davon ausgehen dass es eventuell auch eine Qt Version für LiMo geben kann.

    Der Satz ist imo ungünstig... man kann davon ausgehen, dass es eventuell mal was gibt?
    Würd's eher so formulieren:
    "Da schon Trolltech in der Foundation Mitglied war, kann man auch auf eine Qt Version für LiMo spekulieren"

    Aber nur so als Anregung 😉



  • Jo. Is ne Idee. Hab noch nen Link zum Android NDK eingebaut, damit die Begrifflichkeit klar ist.



  • GPC schrieb:

    So, korrigiert... nur eins noch:

    Da schon Trolltech in der Foundation Mitglied war, kann man davon ausgehen dass es eventuell auch eine Qt Version für LiMo geben kann.

    Ohne den Artikel gelesen zu haben: Genau da fehlt ein Komma.



  • Michael E. schrieb:

    GPC schrieb:

    So, korrigiert... nur eins noch:

    Da schon Trolltech in der Foundation Mitglied war, kann man davon ausgehen dass es eventuell auch eine Qt Version für LiMo geben kann.

    Ohne den Artikel gelesen zu haben: Genau da fehlt ein Komma.

    Danke für den Hinweis 😉 Aber der Satz fliegt sowieso raus 😉



  • So hab den Artikel mal auf E gesetzt, da ja offensichtlich keine weiteren Einwände sind.



  • phlox81 schrieb:

    So hab den Artikel mal auf E gesetzt, da ja offensichtlich keine weiteren Einwände sind.

    Gut, dann postest die fertige Version nochmal hier rein, damit ich die dann wegsplitten kann.


Log in to reply