Nach dem kurzen Überblick zu Möglichkeiten der mobilen App-Entwicklung werden in den kommenden Beiträgen die Varianten Nativ, Web und Hybrid genauer beleuchtet. Los geht es in diesem Artikel mit nativen Apps, der wohl gängigsten Form der App-Entwicklung.
Begriffsklärung
Wie im Artikel Überblick beschrieben, handelt es sich bei nativen Apps um Apps, die mit den jeweils für die Plattform vorgesehenen Technologien entwickelt wurden. “Nativ” bedeutet dabei, dass Code in den unterstützten Sprachen direkt von einer Laufzeitumgebung des Zielsystems ausgeführt wird und Entwickler direkten Zugriff auf native Funktionen des Betriebssystems (Geräte-Zugriff, Betriebssystem-Integration, Multitasking, …) haben.
Für bekannte Plattformen findet native App-Entwicklung primär mit folgenden Technologien statt:
Primäre Sprachen | Entwicklungsumgebung | |
iOS | Objective-C | Xcode unter Mac OS |
Android | Java (+ Android SDK), C/C++ (+ Android NDK) |
Eclipse + Android Developer Tools oder Android Studio |
Windows Phone | C#/XAML, C/C++/XAML | Visual Studio |
Windows 8 | C#/XAML, C/C++/XAML, HTML/JavaScript |
Visual Studio |
Vorteile
Den größten Vorteil beziehen native Apps daraus, dass Entwickler direkten Zugriff auf alle Komponenten der Programmierplattform erhalten. Die Verwendung der bereitgestellten UI-Controls erlaubt hierbei die einfache Erstellung von Benutzeroberflächen, die dem Design der jeweiligen Plattform entsprechen. Damit einher gehen eine bestmögliche User Experience und Performance der entwickelten Apps. Gleichzeitig gestaltet sich die Nutzung von Hardware-Features als sehr einfach und native Apps lassen sich leicht in das Betriebssystem integrieren (Beispiele: Notifications, Live Tiles, Aufruf anderer Apps, …). Zudem können Eigenheiten der Plattform wie der App Lifecycle oder das Vorhandensein von Hardware-Buttons leicht berücksichtigt werden.
Im Gegensatz zu Web Apps lassen sich native Apps in den typischerweise vorhandenen App Stores der jeweiligen Plattform einstellen und darüber monetarisieren.
Neben der Nutzung bestehender Features einer Plattform können Entwickler bei nativer Entwicklung auch sehr schnell auf neue Betriebssystem-Versionen und damit einhergehende Features reagieren. In der nativen Entwicklung haben sie über die vom Hersteller bereitgestellten SDKs als Erste Zugriff auf neue Komponenten.
Last but not least werden Entwickler bei der Entwicklung nativer Apps durch eine sehr gute Dokumentation, ausgereifte Entwicklungsumgebungen und Entwickler-Tools (Debugger, Profiler, …) unterstützt.
Nachteile
Die Adressierung unterschiedlicher Plattformen (Cross-Plattform) ist bei Einsatz nativer App-Entwicklung mit hohen Kosten und einem hohen Zeitaufwand verbunden. Der Grund ist einfach: Für jede zu unterstützende Plattform muss eine komplett neue App entwickelt werden, in der Regel mit ganz anderen Sprachen, SDKs und Tools, evtl. auch mit einem angepassten UI-Design, um der jeweiligen Plattform gerecht zu werden. Mit zunehmender Fragmentierung der Plattformen verstärkt sich das Problem. Ist morgen eine neue Plattform hip und soll adressiert werden, so ist eine weitere App zu entwickeln. Der entstehende Zeitaufwand kann hier zum echten Wettbewerbsnachteil werden, die Flexibilität ist gering.
Native Entwicklung für mehrere Plattformen ist natürlich auch mit hohen Know-How-Kosten verbunden. Entweder sind eigene Entwickler intensiv zu schulen oder es sind externe Entwickler zu beauftragen.
Auch die Aufwände zur Wartung sind hoch, wenn mehrere Plattformen nativ adressiert werden sollen. Für Bugfixing und neue Features ist der Sourcecode jeder App gesondert anzupassen, was unter Umständen teuer werden kann.
Einsatzgebiete
Native App-Entwicklung sollte dann zum Einsatz kommen, wenn eine App das beste Benutzererlebnis auf einer Plattform bieten soll. Nativ entwickelte Apps bieten das beste Look&Feel und die beste Performance auf einer unterstützten Plattform, zudem können sich diese Apps tief in die Plattform integrieren und auf Besonderheiten wie UI-Design und spezielle Features (Hardware-Buttons, etc.) Rücksicht nehmen. Auch wenn umfangreicher nativer Gerätezugriff notwendig ist, eignen sich native Apps am besten.
Trotz der hohen Kosten nativer Apps bei Cross-Plattform-Entwicklung kann es sinnvoll sein, für mehrere Plattformen nativ zu entwickeln. Gerade bei Consumer-Apps ist es häufig wichtig, dass Apps für die jeweilige Plattform maßgeschneidert sind und das beste Erlebnis bieten. Dies lässt sich in der Regel nur mit nativer Entwicklung erreichen.
Sollen Apps unternehmensintern bereitgestellt werden, so machen native Apps am meisten Sinn, wenn eine kontrollierte Device-Umgebung vorhanden ist, in der sich ein Unternehmen auf eine Plattform festgelegt hat.
Szenarien für native Apps umfassen aufwendig gestaltete und animierte Consumer-Apps, Entertainment-Apps, Spiele, Apps mit komplexen Ansichten sowie vielen Daten und grafiklastige/performancelastige Apps.
Fazit und Ausblick
Die Schaffung eines kompromisslosen Benutzererlebnisses macht native App-Entwicklung in vielen Szenarien noch immer zum Standard. Dennoch sind die Nachteile in Bezug auf die Kosten bei Cross-Plattform-Entwicklung groß. Hier kann vor allem im Business-Umfeld die Wahl auf Web Apps oder Hybrid-Apps fallen, was Inhalt der nächsten beiden Blogbeiträge sein wird.