Mobile · 15. Oktober 2016 0

Arten von Mobile Apps

Standardmäßig liefern Hersteller ihre Geräte mit vorinstallierten Apps für unterschiedliche Anwendungsmöglichkeiten an Kunden aus, die jedoch nicht jeder Anforderung gerecht werden. Abgesehen davon, dass in den jeweiligen App Stores der unterschiedlichen Plattformen eine große Auswahl an Apps bereitsteht und auch viele Dienstleister eigene Apps anbieten, kann es dennoch der Fall sein, das Unternehmen für interne Anwendungen eigene Apps bereitstellen. Nachfolgenden werden Softwareentwicklungswerkzeuge für die zwei größten am Markt befindlichen Pattformen Android und iOS sowie unterschiedliche Arten von Apps vorgestellt und deren Vor- und Nachteile erörtert.

SDK
Für die Entwicklung von Apps bieten Hersteller SDKs an, welche Werkzeuge, Dokumentationen und Bibliotheken beinhalten. Die Werkzeuge werden dazu verwendet, um u.a. Quellcode für Apps zu schreiben und zu testen, Versionen von Apps zu verwalten oder grafische Benutzeroberflächen für Apps zu erstellen.  Über eine Integrated Development Environment (IDE), also einer Entwicklungsumgebung in Form eines Programms, werden diese Werkzeuge zusammengefasst. Dies ermöglicht Entwicklern eine einfachere Interaktion und ist zudem zeitsparend.  Doch zwischen den Herstellern mobiler Plattformen gibt es reichlich Unterschiede zwischen den verfügbaren IDEs oder den zu verwendenden Programmiersprachen.

Apple stellt Entwicklern mit Xcode nur eine einzige IDE zur Verfügung, welche nur zur Programmierung von Apps auf iOS bzw. Mac OS X-Geräten zur Verfügung steht. Xcode steht im Mac App Store kostenlos zum freien Download zur Verfügung und setzt zwingend ein Apple Gerät, auf dem Mac OS X läuft, voraus.  Um eine App zu testen, gibt es in Xcode zwar einen Simulator für iPhone und iPad, welcher auf die lokalen Systemressourcen zurückgreift, ersetzt jedoch nicht den Test auf einem echten Gerät, da u.a. die Prozessorarchitektur eine andere ist. Die Hardware-Eigenschaften, in Form eines Beschleunigungs- oder Gyrosensors sowie der Kamera, stehen in einer Simulation nicht zur Auswahl. Der Test einer App auf einem Gerät ist an eine Mitgliedschaft im Apple Developer Programm gekoppelt. Über dieses können Testgeräte registriert und ein Entwicklerzertifikat für die Signierung von Apps beantragt werden Dabei unterscheidet Apple verschiedene Programme für freie Entwickler, Firmen und Hochschulen, die je nachdem mit unterschiedlichen jährlichen Kosten verbunden sind. Um eine App im App Store zu veröffentlichen, kommt man ohnehin nicht um eine Mitgliedschaft drum herum.  Zudem behält Apple 30 % des Verkaufserlöses einer kostenpflichtigen App ein.  Als Programmiersprachen kommen Objective-C oder Swift zum Einsatz, aber auch C oder C++ sind möglich.

Unter Android sehen die Möglichkeiten für Entwickler anders aus. Android Geräte besitzen eine Java Laufzeitumgebung namens Android Runtime (ART), bis Android Version 4.4 noch als Dalvik VM bekannt, welche eine abgeleitete Version der Laufzeitumgebung für PCs ist. Diese wird benutzt, um die überwiegend in Java geschriebenen Android Apps in ein ausführbares Programm umzuwandeln.  Im SDK für Android steht Entwicklern, für die Erstellung von Apps, eine IDE namens Android Studio zur Verfügung. Diese ist, anders als Xcode für iOS, jedoch nicht nur für ein Betriebssystem erhältlich, sondern unterstützt zudem Windows, Linux und Mac OS X. Diese noch recht junge IDE wurde erst am 08. Dezember 2014 veröffentlicht.  Bis zu diesem Zeitpunkt gab es für Entwickler keine offizielle IDE. Da es aber genügend andere Java IDEs, wie Eclipse oder NetBeans gibt, für die das Android SDK sowie verschiedene Plug-Ins bereitstehen, konnten Entwickler so auf bekannte oder präferierte Werkzeuge zurückgreifen. Zudem stellt Google für Eclipse die Android Developer Tools (ADT) als fertiges Plug-In bereit.  Als Programmiersprache wird hauptsächlich Java verwendet, aber auch C oder C++ sind über das Android Native Development Kit (NDK) möglich.  Die Veröffentlichung von Apps erfordert eine Registrierung bei Google, welche einmalig 25 US-Dollar kostet, jedoch zum testen von Apps nicht zwingend erforderlich ist.

Native Anwendungen
Native Anwendungen werden speziell für Mobile Plattformen, für speziellen Versionen mobiler Plattformen oder für bestimmte Gerätetypen entwickelt, wodurch der Funktionsumfang erweitert wird. Durch die Installation von nativen Anwendungen stehend diese in Abhängigkeit mit der Plattform bzw. dem Gerät, ähnlich wie Apps auf einem PC oder Mac. Für die Entwicklung können die vorhandenen SDKs, wie bspw. das iOS oder Android SDK, benutzt werden und bieten somit den vollen Funktionsumfang einer Plattform an. Sie erlauben den Zugriff auf verschiedene Bibliotheken, die Sicherheitsfunktionen bereitstellen, oder verwenden das „Look and Feel“ von plattformtypischen Designelementen. Um die Verfügbarkeit einer App auf verschiedenen Plattformen zu gewährleisten, ist ein erhöhter Entwicklungsaufwand nötig, da mobile Plattformen unterschiedliche SDKs sowie verschiedene Programmiersprachen verwenden. Die Programmierung von iOS Apps erfolgt überwiegend in Objective-C, mittlerweile aber auch in Swift, wohin gegen Android Apps in Java programmiert werden. Für die Portierung einer App auf eine andere Plattform bedeutet dies unter Umständen eine Neuentwicklung, was voraussetzt, dass ein Entwickler verschiedene Programmiersprachen beherrscht und die Gegebenheiten einer Plattform kennt.  Anwender können die veröffentlichten Apps über den eigenen Vertriebsweg der Plattformen erwerben, wie bspw. der Apple App Store oder dem Google Play Store. Um die Bezahlmöglichkeiten oder Vermarktung der App brauchen sich Entwickler nicht weiter kümmern. Zudem ist eine bessere Vergleichbarkeit der Apps untereinander gegeben.  Nachfolgend werden die Vor- und Nachteile einer nativen App dargestellt:

Vorteile von nativen Apps
Zugriff auf die Hardware: Eine native App kann direkt auf die Gerätehardware zugreifen und so den Bewegungssensor, die Position, aber auch das Mikrofon, die Kamera oder den NFC-Chip verwenden.
Performance: Gerade für Spiele oder rechenintensive Apps ist es von Vorteil, dass sie auf einer Plattform installiert sind und somit über bessere 3D-Animationen verfügen bzw. der Benutzer nicht zwingend auf die Bandbreite der Internetverbindung angewiesen ist.
Vermarktung: App Stores, auf die alle Plattformbenutzer zugreifen können, sind vorteilhaft, da bereits sämtliche Zahlungsinformationen hinterlegt sind und der Kaufvorgang einfach gestaltet ist. Die Betreiber hingegen kümmern sich um die komplette Kaufabwicklung. Des Weiteren besteht die Möglichkeit von sog. In-App Käufen, die Apps um bestimmte Zusatzleistungen erweitern.
SDK: Mittels der SDKs werden nicht nur Entwicklerwerkzeuge angeboten, sondern auch Bibliotheken, die den Zugriff auf plattformspezifische Funktionen ermöglichen.

Nachteile von nativen Apps
Plattformabhängigkeit: Eine native App läuft nur auf der Plattform, für die sie entwickelt wurde. Damit diese auch auf anderen Plattformen funktionsfähig bleibt, ist eine entsprechende Anpassung nötig. Nicht von Vorteil ist die Fragmentierung von Plattformversionen oder unterschiedlicher Hardware.
Regularien der Vertriebswege: Die Zulassung für eine App unterliegt den App Store-Betreibern. Wird eine App nicht zugelassen, gibt es ggf. keine andere Möglichkeit des Vertriebs.
Verteilungszyklen: Die Veröffentlichung neuer App-Versionen ist mit deren Einreichung unter Umständen zeitaufwendig, da sie bestimmten Regularien der App Store-Betreiber unterliegt. Zudem muss sich der Nutzer das Update herunterladen und installieren.
Programmiersprachen: Während Web-App Entwickler mit den üblichen Programmiersprachen vertraut sind, müssen Entwickler für native Apps die Programmiersprache für die jeweilige Plattform beherrschen und zudem mit neuen Entwicklungsumgebungen zurechtkommen.
Entwicklerkosten: Die Publikation einer App ist mit Gebühren verbunden, die teilweise jährlich anfallen. Zuvor werden Geräte zum Entwickeln und Testen benötigt.
Nutzerverhalten: Aufwendig ist die Analyse des Nutzerverhaltens innerhalb einer App, wobei für Web-Apps genügend Tools zur Verfügung stehen.

Web Anwendungen
Web Anwendungen laufen gegenüber einer nativen Anwendung auf einem Webserver. Der Aufruf erfolgt hierbei mittels Browser auf einem mobilen Gerät über das Hypertext Transfer Protokoll (HTTP). Dadurch sind Web Apps plattformunabhängig und können von jedem beliebigen Gerät abgerufen werden, sie benötigen jedoch eine Internetverbindung. Ist der Programmcode einmal erstellt, muss er lediglich die unterschiedlichen Displaygrößen unterstützen, umso die Vereinfachung der Bedienung zu gewährleisten. Web Apps bestehen aus grafischen Webseiten, welche vom Server als Antwort an einen Browser geschickt werden und durch die Benutzer navigieren um bspw. Videos, Text und Bilder abzurufen.  Durch die Geschwindigkeiten heutiger Mobilfunkstandards, wie UMTS oder auch LTE, sind Web Apps allgemein komfortabler geworden. Auf Benutzer kommen ggf. zusätzliche Kosten zu, wenn bspw. deren Datenvolumen aufgebraucht ist. Die Entwicklung von Web Apps gestaltet sich einfacherer, da u.a. keine der plattformspezifischen Programmiersprachen zum Einsatz kommen sowie die Verwendung unterschiedlicher IDE´s erlernt werden muss. 3D-Animationen sind jedoch viel aufwändiger oder gar unmöglich. Die Verteilung von Updates erfolgt zeitnah, da Web Apps nicht den Regularien von App Stores unterliegen und auch nicht auf dem Gerät installiert sind. Die Provision für App Store-Betreiber entfällt zudem.  Zusammengefasst werden folgende Vor- und Nachteile aufgezeigt:

Vorteile von Web Apps
Programmiersprachen: Für unterschiedliche Plattformen kommen einheitliche Programmiersprachen oder Entwicklungswerkzeige zum Einsatz. Eine Plattformabhängigkeit entfällt somit.
Plattformunabhängig: Web Apps können leichter an mobile Geräte angepasst werden, so dass sie wie eine native App aussehen.
Verteilungszyklen: Die Entwicklungszyklen sind kürzer, Updates können beliebig oft zentral verteilt werden und unterliegen keinen Regularien von App Stores.
Entwicklerkosten: Für die Entwickler besteht kein Registrierungszwang und somit auch keine wiederkehrenden Kosten. Zum Testen können beliebige Geräte zum Einsatz kommen.
Nutzerverhalten: Die Auswertung des Nutzerverhaltens ist einfacher als bei einer nativen App und lässt sich individuell anpassen.

Nachteile von Web Apps
Browser-Kompatibilität: Die breite Auswahl an Browsern, auch auf mobilen Geräten, ist nicht gering. Zudem ist ihr Verhalten unterschiedlich und es kann zu Problemen mit der Darstellung kommen.
Internetverbindung: Voraussetzung für das Abrufen einer Web App ist die Internetverbindung. Dies kann unter Umständen zu zusätzlichen Kosten auf Benutzerseite führen bzw. ist eine Verfügbarkeit nicht immer gegeben.
Zugriff auf die Hardware: Der Zugriff auf hardwarespezifische Funktionen, wie bspw. die Kamera oder verschiedene Sensoren, steht nicht zur Verfügung. Auch komplexe 3D-Animationen sind nicht im vollen Umfang möglich.
Vermarktung: Für die Vermarktung oder die Abrechnung ist der Entwickler selbst verantwortlich und kann nicht auf die App Store-Funktionen und Benutzer zugreifen.

Hybride Anwendungen
Hybride Anwendungen sind eine Kombination aus nativen und Web-Anwendungen. Mit der Hilfe von Frameworks, wie z.B. PhoneGap, ist es möglich Apps, ähnlich wie Web-Apps, in HTML5, CSS3 oder JavaScript zu erstellen ohne dabei auf plattformspezifischen Programmiersprachen, wie sie mit Java oder Objective-C gegeben sind, zurückzugreifen. Die Verteilung solcher Apps erfolgt, wie bei einer nativen App, über einen App Store. Beim Aufruf wird der plattformspezifischen Browser verwendet, daher ist die Performance nicht mit einer nativen App zu vergleichen. Zusätzlich können hybride Apps mittels plattformspezifischen Plug-Ins auf verschiedene hardwarespezifische Funktionen, wie z.B. die Kamera, Kontakte oder Sensoren, zugreifen. Soll eine hybride App für eine weitere mobile Plattform angeboten werden, begrenzt sich die Portierung lediglich auf die Anpassung der Plug-Ins.  Eine Anpassung an das plattformtypische „Look and Feel“ ist jedoch noch nicht möglich. Prinzipiell kann eine solche App zudem Offline betrieben werden, also ohne bestehende Internetverbindung.