Betrachtung verschiedener Methoden zur Entwicklung mobiler Apps mit Fokus auf Funktionsumfang und technischer Umsetzung

Die Seite wird erstellt Kristina Freund
 
WEITER LESEN
Betrachtung verschiedener Methoden zur Entwicklung mobiler Apps mit Fokus auf Funktionsumfang und technischer Umsetzung
FH Aachen

Fachbereich 9
Medizintechnik und Technomathematik

Seminararbeit im Studiengang
Scientific Programming

Betrachtung verschiedener Methoden zur
Entwicklung mobiler Apps mit Fokus auf
Funktionsumfang und technischer Umsetzung

Autor:
Joel Otte, 3158603

Betreuer:
Prof. Dr. rer. nat. Alexander Voß
Paul Mangartz, M.Sc.

Aachen, 05.01.2020
Betrachtung verschiedener Methoden zur Entwicklung mobiler Apps mit Fokus auf Funktionsumfang und technischer Umsetzung
Betrachtung verschiedener Methoden zur Entwicklung mobiler Apps mit Fokus auf Funktionsumfang und technischer Umsetzung
Abstract

Die Nutzung von Mobilgeräten hat mit der Zeit immer weiter zugenommen und
damit einhergehend ist auch die Relevanz mobiler Anwendungen gestiegen. Das
stellt viele Entwickler vor die Herausforderung zu entscheiden, welche der ver-
schiedenen Möglichkeiten, eine mobile App zu entwickeln, für ihren spezifischen
Anwendungsfall in Frage kommt.

In folgender Ausarbeitung werden die verschiedene Methoden für die Entwick-
lung mobiler Apps vorgestellt, wobei zwischen drei Entwicklungsansätzen unter-
schieden wird: Nativ, Hybrid und Cross-Platform. Bei der Betrachtung liegt der
Fokus jeweils auf Funktionsumfang und technischer Umsetzung der App. Zudem
werden die Plattformen iOS und Android tiefergehend behandelt, indem tech-
nische Konzepte erläutert werden und Einblick in den Entwicklungsprozess mit
xCode und Android Studio gegeben wird.

Neben der Darstellung und Bewertung verschiedener Entwicklungsansätze wird
im Rahmen dieser Seminararbeit das Ziel angestrebt, Bewertungskriterien zu
schaffen, mithilfe derer der Prozess vereinfacht wird, für ein bestimmtes App-
Projekt ein passendes technologisches Setup zu ermitteln.

                                      III
Betrachtung verschiedener Methoden zur Entwicklung mobiler Apps mit Fokus auf Funktionsumfang und technischer Umsetzung
Inhaltsverzeichnis

1   Einleitung ............................................................................................ 1
2   Native Apps ........................................................................................ 3
    2.1      iOS .......................................................................................................... 5
             2.1.1 Architektur .................................................................................. 6
             2.1.2 Voraussetzungen ....................................................................... 7
             2.1.3 Entwicklung mit xCode .............................................................. 8
             2.1.4 Bewertung ................................................................................. 11

    2.2      Android ............................................................................................... 13
             2.2.1 Architektur ................................................................................ 14
             2.2.2 Voraussetzungen ..................................................................... 16
             2.2.3 Entwicklung mit Android Studio IDE ..................................... 16
             2.2.4 Bewertung ................................................................................. 20

3   Hybride Apps ................................................................................... 21
4   Cross-Platform Apps ..................................................................... 23
5   Zusammenfassung und Fazit ..................................................... 25
6   Literaturverzeichnis ...................................................................... 27
7   Abbildungsverzeichnis ................................................................. 31

                                                        IV
Betrachtung verschiedener Methoden zur Entwicklung mobiler Apps mit Fokus auf Funktionsumfang und technischer Umsetzung
1         Einleitung

Das erste Smartphone, welches als solches bezeichnet werden könnte, wurde
1994 von IBM1 herausgebracht und kam lediglich mit fest installierten Apps wie
unter anderem einem Kalender und einem Taschenrechner daher.[1] Mit Ein-
führung des BlackBerry 5810 von RIM2 im Jahr 2002 erlebte das Smartphone
eine kleine Revolution. Die Kombination aus innovativer Benutzeroberfläche, über
die diverse Anwendungen angesteuert werden konnten, und integriertem Mobil-
telefon erfreute sich insbesondere bei Geschäftskunden großer Beliebtheit.[2]

Der große Durchbruch des Smartphones kam jedoch erst im Jahr 2007, als Apple
das erste iPhone vorstellte. Ein Jahr später sollte eine neue Ära der mobilen App-
Entwicklung eingeläutet werden. Apple brachte den hauseigenen App Store her-
aus und Konkurrent Google schaffte das Pendant Android Market 3. Nach Ver-
öffentlichung der Software Development Kits (SDKs) hatten externe Entwickler
erstmals die Möglichkeit, native Apps für die Plattformen Android (Google) und
iOS (Apple) zu entwickeln. Das führte in den darauffolgenden Jahren zu einem
starken Wachstum der App-Branche. Während in Apples App Store anfänglich
noch rund fünfhundert Apps verfügbar waren, umfasst dieser mittlerweile mehr
als 1,8 Millionen Apps. Der Google Play Store kommt sogar auf fast 2,5 Milli-
onen Apps4.[3][4][5]

Mit der Zeit wurde mobilen Apps immer mehr Relevanz zugesprochen und es
entwickelte sich eine neue Produkt-Philosophie unter dem Paradigma „Mobile
First“. Hier steht die Kompatibilität einer Anwendung mit Mobilgeräten (Smart-
phones, Tablets, etc.) im Vordergrund. Der damalige Google CEO Eric Schmidt
beschrieb im Jahr 2010 die Denkweise des Unternehmens bezüglich Produkt-
entwicklung mit den Worten: „We understand that the new rule is mobile first“
und weiter „Mobile first in everything. Mobile first in terms of applications.“[6] Vier
Jahre später bestätigt Schmidt diesen Standpunkt, als er sagt „The trend has
been that mobile was winning. It’s now won.”[7]

____________________________
1
    US-amerikanisches IT-Unternehmen („International Business Machines“)
2
    Kanadischer Softwarehersteller (seit 2013 „BlackBerry”)
3
    Seit 2012 „Google Play Store“
4
    Stand: Oktober 2019

                                                1
Betrachtung verschiedener Methoden zur Entwicklung mobiler Apps mit Fokus auf Funktionsumfang und technischer Umsetzung
Ein Anstieg der Smartphone-Nutzer und Downloads mobiler Apps lässt sich zu-
dem zahlenmäßig belegen und untermauert die Bedeutsamkeit dieses Ansatzes.
Während in Deutschland im Jahr 2010 noch rund 14 Millionen Menschen ein
Smartphone besaßen, überstieg diese Zahl im Jahr 2016 bereits die 50-Millionen-
Marke. Weltweit betrachtet liegt die Anzahl der Smartphone-Besitzer bei 3,3 Mill-
iarden5. Das entspricht, gemessen an der Weltbevölkerung, einem Prozentsatz
von fast 43%. Was die Downloads mobiler Apps angeht, lässt sich ebenfalls ein
Zuwachs verzeichnen: Im Jahr 2016 wurden weltweit in den App Stores etwa 144
Milliarden Apps heruntergeladen. Die Zahl der Downloads betrug im Jahr 2018
bereits 194 Milliarden.[3]

Die obigen Ergebnisse lassen durchaus die Feststellung zu, dass die Relevanz
mobiler Endgeräte und Anwendungen in den letzten Jahren immer größer ge-
worden ist und sich dieser Trend vermutlich auch fortsetzen wird. Laut einer
Vorhersage des Marktforschungsunternehmens Gartner werden im Jahr 2022
bereits 70% aller Interaktionen mit Software auf Mobilgeräten stattfinden.[8]

Aufgrund dieser Beobachtungen wird der Entwicklung mobiler Apps eine große
Bedeutung zuteil. Aus diesem Grund sind jedoch auch die Möglichkeiten zur Um-
setzung vielfältiger geworden. Während mobile Anwendungen damals nur unter
Verwendung eines entsprechenden SDKs im App Store einer Plattform verfügbar
gemacht werden konnten, stehen heutzutage weitaus mehr Methoden zur Ver-
fügung, die unter anderem auf eine plattformunabhängige Entwicklung ausgelegt
sind. Der Markt bietet zudem eine Vielzahl an Tools und Frameworks, welche
diesen Ansatz fördern und die Entwicklung mobiler Apps erleichtern. Dadurch
stehen Entwickler heutzutage vor der großen Herausforderung, einen Ansatz zu
wählen, der für ihren spezifischen Anwendungsfall geeignet ist, wobei Kriterien
wie Aufwand, Kosten und Funktionsumfang der App berücksichtigt werden müs-
sen. Im Folgenden werden verschiedene Entwicklungsansätze für die Umsetzung
mobiler Apps vorgestellt. Es werden die grundlegenden Konzepte aller Ansätze
erläutert und die jeweiligen Vor- und Nachteile herausgearbeitet. Dabei liegt der
Fokus auf jenen Apps, die über einen App Store bereitgestellt werden können.
Auf reine Webanwendungen, die lediglich für Mobilgeräte optimiert wurden, wird
somit nicht näher eingegangen.

____________________________
5
    Stand: November 2019

                                        2
Betrachtung verschiedener Methoden zur Entwicklung mobiler Apps mit Fokus auf Funktionsumfang und technischer Umsetzung
2     Native Apps

Native Apps bezeichnen jene Anwendungen, die für eine spezifische Plattform
unter Verwendung des jeweiligen Software Development Kits und in den dafür
vorgesehenen Programmiersprachen entwickelt werden. Das SDK eines Be-
triebssystems umfasst hierbei die notwendigen Werkzeuge für die Entwicklung.
In der Regel werden eine Entwicklungsumgebung und native Schnittstellen be-
reitgestellt. Letztere ermöglichen die Verwendung nativer Bedienelemente für
die grafische Oberfläche und den Zugriff auf verschiedene Systemfunktionen.
Eine native App für Apples Betriebssystem iOS wird beispielsweise in den Spra-
chen Objective-C oder Swift geschrieben, während xCode als Entwicklungs-
umgebung dient. Native Android-Apps werden hauptsächlich in Android Studio
IDE mit den Sprachen Java oder Kotlin umgesetzt.[9]

Aufgrund der Tatsache, dass hier für eine bestimmte Plattform entwickelt wird,
liegt es nahe, dass native Apps die beste Performance bieten. Die Programmier-
sprache und die verwendeten Bibliotheken sind optimal auf das System abge-
stimmt und bieten höchste Kompatibilität. Der Einsatz nativer Bedienelemente
sorgt zudem für ein gewohntes optisches Erscheinungsbild, da sie gewissen
„Style Guidelines“ folgen, die für das Betriebssystem festgelegt wurden. Das
könnte dem Anwender, der mit der Plattform vertraut ist, die Navigation durch
die App erleichtern und sich somit positiv auf die Usability1 auswirken. Des Wei-
teren ist der Entwickler durch die Anbindung an native Schnittstellen nahezu
uneingeschränkt, was die Nutzung von Systemfunktionen (z.B. Kamera, GPS oder
Bluetooth) angeht. Ein weiterer Vorteil liegt in der Unabhängigkeit von Drittan-
bietern. Durch die Nutzung eines nativen SDKs ist vollständiger Support aller
Updates und Features, die die Plattform bereitstellt, gewährleistet.[8][9]

Auch wenn eine native Entwicklung viele Vorteile bietet, müssen Einbußen be-
züglich Aufwand und Kosten hingenommen werden, vor allem dann, wenn man
sich dazu entscheidet, mit einer App mehrere Plattformen zu bedienen.

____________________________
1
  „Benutzerfreundlichkeit“

                                       3
Betrachtung verschiedener Methoden zur Entwicklung mobiler Apps mit Fokus auf Funktionsumfang und technischer Umsetzung
Für jedes Betriebssystem muss die App von Grund auf neu aufgesetzt werden,
was nicht nur einen zeitlichen Aufwand mit sich bringt, sondern auch deswegen
problematisch sein kann, weil verschiedene Entwickler für spezielle Program-
miersprachen benötigt werden. Darüber hinaus verlängert die Arbeit mit mehr-
eren Codebasen jeglichen Entwicklungsprozess. Das betrifft unter anderem das
Hinzufügen neuer Features und das Testing, aber auch die Wartung einer bereits
veröffentlichten App. Es kann zudem die Inkonsistenz der grafischen Benutzer-
oberfläche über verschiedene Plattformen hinweg kritisiert werden. Jede Platt-
form hat eigene Richtlinien für das Design und interpretiert unter Umständen be-
stimmte Bedienelemente anders. Dadurch kann ein einheitliches Verhalten der
App für Anwender unterschiedlicher Plattformen nicht immer gewährleistet wer-
den, was den oben genannten Vorteil des homogenen Designs innerhalb eines
Betriebssystems relativiert.[8]

Die native Entwicklung stellt ein bewährtes Vorgehen dar, eine mobile App um-
zusetzen und wird trotz nennenswerter Alternativen von vielen Entwicklern be-
vorzugt. Insbesondere für grafisch anspruchsvolle Apps wie 3D-Games oder all-
gemein rechenintensive Anwendungen empfiehlt sich der native Ansatz.[8] Für
den Fall, dass eine App ohnehin nur für eine Plattform vorgesehen ist, bietet es
sich ebenfalls an, nativ zu entwickeln, da hier der Aufwand eher gering ist und
der Fokus auf dem Endprodukt liegen sollte. Generell, wenn man den Entwick-
lungsprozess (inkl. Zeitaufwand, Kosten und Wartung) bei der Validierung aus-
schließt und nur das Endprodukt samt Funktionsumfang bewertet, schneidet die
native App womöglich am besten ab, weil sie die beste Performance und Zugriff
auf alle Gerätefunktionen bietet. Da erstere Faktoren aber nicht zu vernachläs-
sigen sind und darüber hinaus viele Apps keine „High-End Performance“ oder
Zugriff auf sämtliche Gerätefunktionen voraussetzen, ist es für jedes App-Projekt
eine Einzelfallentscheidung, die eine Abwägung von Ressourcen (finanziell und
personell) vorsieht.

In den nächsten Abschnitten liegt der Fokus auf den Betriebssystemen iOS und
Android. Es werden die verschiedenen Entwicklungsprozesse nativer Apps für
beide Plattformen genauer betrachtet, wobei die unterschiedlichen Konzepte
erläutert und Vor- bzw. Nachteile aus Entwicklersicht herausgestellt werden.

                                       4
2.1      iOS

Das Betriebssystem iOS2 ist seit Veröffentlichung des ersten Apple iPhones im
Jahr 2007 verfügbar. Ein Jahr später war es auch externen Entwicklern gestattet,
native Apps für iOS zu entwickeln. Damit brach Apple und in persona Steve Jobs3
mit der Konvention, dass Anwendungen von Drittanbietern ausschließlich in Form
von Web Apps über den Browser Einzug in die „Apple-Welt“ finden sollten.[4][10]
Heutzutage ist der App Store nicht nur für den Endanwender unabdingbar, son-
dern eine ebenso wichtige Einnahmequelle für das Unternehmen.[3] Häufig wird
jedoch die Tatsache kritisiert, dass Apps für iOS nur über diesen zentralen App
Store heruntergeladen werden können und es nicht möglich ist, Programme aus
anderen Quellen zu beziehen. Sicherlich kann hier auch das Gegenargument an-
gebracht werden, dass durch die Kontrolle der Software seitens Apple, Sicher-
heitslücken regulierbarer sind.

iOS-Apps wurden zunächst ausschließlich in Objective-C entwickelt. Objective-C
basiert auf der Programmiersprache C und erweitert diese um Eigenschaften der
Objektorientierung. Im September 2014 stellte Apple mit der Programmierspra-
che Swift erstmals eine alternative Möglichkeit vor, native iOS-Apps umzusetzen.
Nach anfänglicher Skepsis, was die Reife der Sprache anging, ist Swift mitt-
lerweile fast so weit verbreitet wie Objective-C und zählt zu den zehn belieb-
testen Programmiersprachen im Jahr 2019.[3] Beide Sprachen koexistieren
problemlos, da sie miteinander kompatibel sind. So können Swift-Module in
Objective-C Projekte eingebunden werden und andersherum.[11]

Swift steht unter der Apache 2.0 Lizenz und ist daher frei zugänglich. Es handelt
sich um eine objektorientierte Sprache, die über eine minimalistische Syntax ver-
fügt und „Safe by Design“ ist, also gewisse Fehlerquellen schon durch ihr Sprach-
konstrukt präventiv abdeckt. Laut eigenen Angaben ist Swift optimal auf Apples
Ökosystem abgestimmt und 2,6-mal schneller als Objective-C. Swift gilt damit als
sehr performante Programmiersprache.[11] Im Folgenden wird auf Objective-C
nicht weiter eingegangen, da Swift die modernere und zudem von Apple bevor-
zugte Sprache ist.

____________________________
2
    Bis 2010 „iPhone OS“
3
    Bis 2011 CEO von Apple

                                       5
2.1.1 Architektur

Der grundlegende Aufbau von iOS kann durch vier Abstraktionsschichten veran-
schaulicht werden. Dabei bildet das Framework Cocoa Touch die oberste
Schicht. Es ist die Ebene, auf der die direkte Interaktion mit dem Anwender
stattfindet und die somit für Erscheinungsbild und Verhalten der App zuständig
ist. Darunter befindet sich die Schicht Media, die Grafiken, Animationen und an-
dere Medieninhalte bereitstellt. Die nächste Ebene Core Services ermöglicht
den Zugriff auf das Dateisystem und umfasst Dienste zur Netzwerkkommuni-
kation und Speicherverwaltung. Core OS regelt als unterste Schicht die Kern-
Funktionalitäten des Betriebssystems, welche die Basis für alle Schichten darü-
ber bilden.[12]

Abb. 2.1 – iOS Architektur

In der Praxis arbeitet der Entwickler weitestgehend auf der obersten Ebene.
Cocoa Touch beinhaltet unter anderem das Framework UIKit, welches die UI-
Elemente4 bereitstellt, die Hierarchie dieser verwaltet und das Event-Handling
übernimmt. Da Cocoa Touch nach dem MVC-Pattern (Model-View-Controller)
implementiert wurde, verfolgen iOS-Apps ebenfalls diesen Ansatz. Hierbei ist
der View Layer lediglich für die grafische Darstellung der App zuständig, wäh-
rend die Programmlogik dahinter im Controller programmiert wird. Das Model
stellt alle notwendigen Daten für die App bereit. Diese können dann über Kom-
munikation mit dem Controller im View Layer dargestellt werden.[11]

____________________________
4
    Bedienelemente der grafischen Benutzeroberfläche

                                              6
Abb. 2.2 – Funktionsweise Model-View-Controller

2.1.2 Voraussetzungen

Die Entwicklung nativer iOS-Apps ist nur über macOS5 möglich, sodass Apple-
Hardware Voraussetzung für die Umsetzung ist. Als Entwicklungsumgebung
dient Xcode von Apple. Hier sind das iOS SDK, ein Geräte-Simulator und wei-
tere Werkzeuge zum Testen bereits integriert. Um eine fertiggestellte App auch
im App Store veröffentlichen zu können, ist die Teilnahme am Apple Developer
Program notwendig, für welches 99 US-Dollar jährlich investiert werden müssen.
Die Einrichtung empfiehlt sich bereits während der Entwicklung, da das Pro-
gramm einerseits den Zugriff auf diverse App-Technologien wie Siri oder Apple
Pay und die Nutzung der neuesten iOS Beta-Versionen ermöglicht und zum
anderen das Testing-Tool TestFlight bereitstellt, mit welchem schon vor Re-
lease bis zu zehntausend Nutzer eingeladen werden können, die App zu tes-
ten.[11]

Apple bietet Entwicklern neben einer ausführlichen Dokumentation sogenannte
Swift Playgrounds an, die den Einstieg in die Programmiersprache erleichtern.
Hierbei handelt es sich um kleine Test-Umgebungen, in denen Swift-Code ge-
schrieben werden kann, um die Sprache zu lernen, ohne direkt eine komplette
App aufsetzen zu müssen.[11]

____________________________
5
    Betriebssystem für Apples Mac-Computer

                                             7
Ist Apple-Hardware vorhanden und xCode installiert, steht der Entwicklung einer
iOS-App nichts mehr im Wege. xCode liefert bereits vorinstallierte Templates für
verschiedene App-Projekte, wobei unter anderem zwischen Single View App,
Game oder Tab-Based App ausgewählt werden kann. Der Entwickler legt sich
durch die Auswahl eines Templates jedoch nicht endgültig fest. Der Aufbau einer
App kann manuell geändert und ein gewünschtes Feature auch nachträglich
noch hinzugefügt werden. Die Templates sollen lediglich den Einstieg erleichtern,
indem eine gewisse Struktur für bestimmte Anwendungsfälle schon vorgegeben
ist.

Zudem muss eine Auswahl für die Erstellung der Benutzeroberfläche getroffen
werden. Ab xCode 11 gibt es dafür zwei verschiedene Möglichkeiten: Die Um-
setzung kann entweder mittels Storyboards erfolgen oder unter Verwendung
des Frameworks SwiftUI. Da Letzteres erst im Juni 2019 von Apple vorgestellt
wurde und somit noch wenige iOS-Apps auf SwiftUI basieren, wird sich im
Folgenden auf Storyboards beschränkt. Dennoch kann SwiftUI als eine vielver-
sprechende Alternative angesehen werden, die in ferner Zukunft Storyboards
ablösen könnte.[11]

2.1.3 Entwicklung mit xCode

Abb. 2.3 – xCode 11 - Aufbau

                                       8
Als offizielle Entwicklungsumgebung für iOS kommt xCode mit vielen Funktio-
nen daher, die dem Entwickler die Arbeit erleichtern. Das Interface von xCode
kann in vier grundlegende Bereiche eingeteilt werden (siehe Abb. 2.3). Ganz links
befindet sich die Navigator Area, welche hauptsächlich der Projektansicht dient.
Darüber hinaus werden hier beim Kompilieren der App alle Errors und Warnun-
gen aufgelistet. Die Editor Area in der Mitte ist der Hauptbestandteil von xCode.
Im vorliegenden Screenshot ist der Interface-Builder aktiv, welcher sich in die
Komponenten-Ansicht (2a) und in die Device-Ansicht (2b) unterteilt und für die
Erstellung der Benutzeroberfläche zuständig ist. Dort wird dem Entwickler die
Hierarchie der verwendeten UI-Komponenten und die Vorschau in einem Apple-
Device, welches beliebig geändert werden kann, angezeigt. Die Editor Area ist
allgemein der Bereich für die Bearbeitung der aktuellen Datei. An dieser Stelle
befindet sich somit auch der Code-Editor für die Swift-Dateien. Es ist möglich,
mehrere Editoren parallel zu öffnen, sodass beispielsweise der Interface-Builder
neben der zu bearbeitenden Swift-Datei angezeigt wird. Die Inspector Area auf
der rechten Seite gibt Auskunft über die aktuell in der Navigator Area aus-
gewählte Datei. Bei aktivem Interface-Builder werden hier die Attribute der UI-
Elemente (z.B. Größe oder Farbe) festgelegt. Die Debug-Area unten dient zum
Testen der App. Nach Start der Applikation werden hier alle Konsolen-Ausga-
ben sowie der Status verschiedener Variablen angezeigt. Über die Toolbar ganz
oben, welche in der Abbildung nicht als eigener Bereich gekennzeichnet ist, kann
das Programm gestartet, das Device für den Geräte-Simulator geändert und das
Interface von xCode durch Ein- oder Ausblenden beliebiger Bereiche angepasst
werden. Seit xCode 11 befindet sich hier außerdem der Button zum Hinzufügen
von UI-Elementen für die Benutzeroberfläche.[11]

Um zu verstehen, wie iOS-Apps entwickelt werden, muss zunächst das Konzept
der Storyboards erläutert werden. Ein Storyboard besteht aus mehreren Views,
also Bildschirmansichten, die abhängig von der Interaktion des Users angezeigt
werden. Navigiert ein User beispielsweise durch ein Menü, können ihm verschie-
dene Views ausgespielt werden. Eine View wird immer von einem zugehörigen
ViewController, welcher für die Programmlogik zuständig ist, verwaltet. Bei dem
ViewController handelt es sich um eine Swift-Datei, die vom Entwickler imple-
mentiert werden muss. Somit ist die Separation von View Layer und Controller
gemäß MVC-Pattern bereits durch die App-Struktur vorgegeben.[11]

                                       9
2.4 – xCode 11 - Storyboards

In Abb. 2.4 wird ein Storyboard, bestehend aus drei Views abgebildet. Startpunkt
des Storyboards ist hier eine Tab Bar Controller Scene, was durch den um-
randeten Pfeil neben der Screen-Ansicht verdeutlicht wird. Sie regelt die Über-
gänge (Segues) zu den anderen beiden Views, sodass in der fertigen App ein
User zwischen zwei Tabs wechseln kann und dementsprechend View 1 oder
View 2 angezeigt bekommt. Innerhalb eines Projektes können beliebig viele
Storyboards angelegt werden. So ist es nicht selten, dass für einen Login-Pro-
zess oder andere komplexere Abläufe eigene Storyboards designt werden. Es
kann aber genauso vorkommen, dass ein Storyboard, welches nur eine Scene
umfasst, ausreichend ist. Das ergibt sich aus der Komplexität der Anwendung.

Da die Programmlogik einer View innerhalb des zugehörigen ViewControllers
implementiert wird, ist noch zu klären, wie die Verbindung zwischen UI-Elemen-
ten und Programmcode erfolgt. Es gibt in Swift zwei verschiedene Arten von
Verbindungen: Outlets und Actions. Ein Outlet ist die Instanziierung eines UI-
Elements, während eine Action auf die Interaktion mit einem UI-Element reagiert.

                                      10
2.5 – xCode 11 – Outlets und Actions

Anhand von Abb. 2.5 kann die Funktionsweise von Outlets und Actions beispiel-
haft gezeigt werden. In der Abbildung ist links der Interface-Builder und rechts
der Code-Editor für den zugehörigen ViewController geöffnet. Diese Ansicht hat
den Vorteil, dass so in xCode Verbindungen via „Drag and Drop“ angelegt wer-
den können. Für den oberen blauen und den unteren roten Button wurde jeweils
eine Action erstellt, die den Text eines Labels bei Klick auf den Button entspre-
chend ändert. Um dieses Label verändern zu können, wurde zuvor ein Outlet für
das UI-Element erstellt, dessen Variablenname dann verwendet werden kann, um
es anzusprechen.

2.1.4 Bewertung

Apple stellt mit xCode, das nach jedem iOS-Update aktualisiert wird, und mit der
modernen Programmiersprache Swift ein innovatives Entwicklungsumfeld bereit.
Dadurch, dass nur Apple-Geräte berücksichtigt werden müssen, hält sich außer-
dem der Testing-Aufwand, verglichen mit der Entwicklung von Android-Apps, in
Grenzen. Ein weiterer positiver Aspekt ist die Tatsache, dass der Anteil der iOS-
Nutzer, die die neueste Version des Betriebssystems verwenden, deutlich höher
ist, als es bei Android-Nutzern der Fall ist.

                                       11
So verkündete Apple im Juni 2019, dass die damals neueste Version iOS 12
auf 85% aller Apple-Geräte installiert sei, während zum gleichen Zeitpunkt An-
droid 9 gerade mal 10% der Android-Geräte bediene.[13] Das hat für iOS-Ent-
wickler den Vorteil, dass Fehlerbehebungen und Updates schneller an die Nutzer
verteilt werden können. Zudem können modernere Features verwendet werden,
ohne dass befürchtet werden muss, dass nur ein geringer Anteil der Anwender
diese nutzen kann.

Der offensichtliche Nachteil nativer iOS-Apps ist der geringere Marktanteil von
aktuell 22%. Zum Vergleich: Mit einer nativen Android-App wäre der Markt be-
reits zu 76% abgedeckt.6 [3] Hinzu kommt, dass Apple-Hardware vorausgesetzt
wird und die Entwicklergebühren für die Veröffentlichung einer App vergleichs-
weise hoch sind. Der Entwickler ist außerdem, was den Verbreitungsweg angeht,
auf Apples hauseigenen App-Store beschränkt.

Eine native Entwicklung für iOS kann sich insbesondere dann empfehlen, wenn
die App auf Umsatzgenerierung abzielt. Trotz des deutlich geringeren Markt-
anteils von iOS, war der Umsatz von Apples App Store im ersten Halbjahr des
Jahres 2019 um ca. 80% höher als der des Google Play Stores, was womöglich
durch eine kaufkräftige Apple-Kundschaft zu begründen ist.[14]

____________________________
6
    Stand: Juli 2019

                                      12
2.2      Android

Der Name „Android“ meint sowohl das Betriebssystem als auch die Programm-
bibliothek zur Entwicklung mobiler Apps. Android ist seit dem Jahr 2008 verfüg-
bar und wurde von der Open Handset Alliance (OHA) entwickelt. Bei der OHA
handelt es sich um einen von Google gegründeten Zusammenschluss aus Un-
ternehmen für Soft- und Hardware. Die Gerätehersteller HTC, LG Electronics,
Samsung Electronics und Motorola waren Gründungsmitglieder und stellten die
ersten Mobilgeräte mit Android als Betriebssystem her. In den Jahren darauf
schlossen sich dem Konsortium weitere Hersteller an (u.a. Sony Ericsson, Huawei
Technologies und ZTE). Mit dem Ziel, einen Standard für Mobilgeräte zu schaffen,
der von vielen Geräteherstellern geteilt wird, verfolgt Android einen Ansatz, wel-
cher sich konträr zu Apples Philosophie mit iOS verhält, das ausschließlich Apple-
Hardware bedient.[15][16]

Nach Veröffentlichung des SDKs konnten Anwendungen für Android zunächst
nur in der Programmiersprache Java entwickelt werden. Ein Jahr später war es
mit dem Android NDK (Native Development Kit) auch möglich, die Sprachen C
bzw. C++ für die Einbindung spezieller Bibliotheken zu nutzen. Die Programmier-
sprache Kotlin, welche von JetBrains6 entwickelt wurde und unter der Apache 2.0
Lizenz frei verfügbar ist, wird seit 2017 für Android-Apps unterstützt. Kotlin
läuft in der JVM (Java Virtual Machine) und ist daher auch mit Java kompatibel.
Ähnlich zu Apples Programmiersprache Swift setzt Kotlin auf eine intuitive Syn-
tax und auf ein per Design sicheres Sprachkonstrukt.[17][18]

Aufgrund des höheren Bekanntheitsgrads wird sich in den folgenden Beispielen
auf Java beschränkt. Dennoch sei hier anzumerken, dass Kotlin, zumindest was
die Entwicklung für Android angeht, Java früher oder später ablösen könnte. Da-
für spricht einerseits die Tatsache, dass Kotlin seit 2019 die bevorzugte Sprache
für Android-Projekte ist und zudem, dass laut Googles Angaben fast 60% der
Top 1000 Android-Apps Kotlin Code verwenden.[5]

____________________________
6
    multinationales Software-Unternehmen mit Hauptsitz in Prag

                                              13
2.2.1 Architektur

Die Android-Plattform kann in vier Abstraktionsschichten eingeteilt werden. Die
oberste Komponente Applications umfasst jene Anwendungen, die Android
standardmäßig zur Verfügung stellt. Darunter fallen unter anderem Funktiona-
litäten wie Kamera, Browser oder SMS-Messenger. Die Schicht darunter bildet
das Application Framework, welches für die Entwicklung mobiler Android-Apps
von großer Bedeutung ist. Es stellt Entwicklern dieselben Schnittstellen zur
Verfügung, die von Androids System-Apps genutzt werden. Sie ermöglichen
beispielsweise die Nutzung des Notification Managers für Push-Benachrich-
tigungen oder den Zugriff auf Daten externer Apps mittels sogenannter Content
Provider. Zudem liefert das Application Framework viele wiederverwendbare
UI-Komponenten für die Benutzeroberfläche und verwaltet den Lebenszyklus
einer Anwendung.[17]

Abb. 2.6 – Android Plattform – Architektur

Die nächste Schicht setzt sich aus den Komponenten Libraries und Runtime zu-
sammen. Libraries umfasst native Bibliotheken, die auf C und C++ basieren und
dem Application Framework viele Funktionen (u.a. Graphic Rendering, Daten-
speicherung und Web Browsing) bereitstellen. Diese Bibliotheken können mittels
Android NDK, wie weiter oben erwähnt, auch direkt innerhalb eines Android-
Projektes angesprochen werden.

                                       14
Die Komponente Runtime, häufig auch Android Runtime (ART) genannt, verwal-
tet den laufenden Prozess einer App, wobei dieser innerhalb einer Dalvik Virtual
Machine (DVM) ausgeführt wird. Auf derselben Ebene befinden sich zudem die
Core Libraries, welche die Nutzung der Sprachen Java und Kotlin für die
Entwicklung von Android-Apps erst ermöglichen. Die gesamte Android Archi-
tektur stützt sich auf den Linux Kernel, der alle Hardware-Treiber verwaltet und
für die Netzwerkkommunikation und Speicherverwaltung zuständig ist. Außer-
dem wird der Hardware Abstraction Layer (HAL) bereitgestellt, der dem
Entwickler Zugriff auf Hardware-Komponenten gewährt.[17]

Abb. 2.7 – Android - App-Architektur

Die von Android empfohlene App-Architektur ähnelt dem Konzept des MVC-
Patterns, wobei in diesem Zusammenhang häufig vom MVVM-Pattern (Model-
View-ViewModel) die Rede ist. Der View Layer, bestehend aus einer Activity
oder einem Fragment, ist hier ebenfalls nur für die grafische Darstellung der
Oberfläche und das Event-Handling zuständig. Das ViewModel stellt UI-rele-
vante Daten, welche es über das Repository erhält, bereit.

                                       15
Das Repository hat die Aufgabe, Daten aus einer Datenquelle (Datenbank oder
Webservice) abzurufen und gilt als „Single Point of Truth“, also als der korrekte
Datenbestand, welcher die App mit Daten anreichert. Android bietet darüber
hinaus viele weitere Architektur-Komponenten an, die eine robuste App-Archi-
tektur fördern, jedoch hier thematisch nicht im Vordergrund stehen.[17]

2.2.2 Voraussetzungen

Als Entwicklungsumgebung für Android-Apps diente lange Zeit Eclipse in Ver-
bindung mit dem Plugin ADT (Android Development Tools). Offizielle Entwick-
lungsumgebung ist seit 2015 Googles Android Studio IDE, das auf IntelliJ IDEA
von Jetbrains basiert. Android Studio IDE ist für alle gängigen Betriebssysteme
verfügbar, sodass, anders als bei iOS-Apps, keine bestimmte Hardware voraus-
gesetzt wird. Für die Veröffentlichung einer App im Google Play Store muss ein
Google Publisher Account eingerichtet werden, der eine einmalige Registrie-
rungsgebühr von 25 US-Dollar verlangt. Die Bereitstellung einer App über den
Google Play Store ist zwar die empfohlene Variante, dennoch können Android-
Apps auch auf anderem Wege verbreitet werden. Nach Fertigstellung einer
Android-App kann die zugehörige AKP-Datei (Android Package) beispielsweise
auch über eine Webseite als Download angeboten werden.[17][19]

Android bietet Entwicklern eine umfangreiche Dokumentation mit ausführlichen
Anleitungen inklusive Codebeispiele für Kotlin und Java, die sowohl für den Start
als auch über den gesamten Entwicklungsprozess hinweg hilfreich sein können.
Wie xCode kommt Android Studio IDE mit vorinstallierten Templates für spezi-
fische App-Projekte daher. Ansonsten muss vor Entwicklungsbeginn nur die ge-
wünschte Programmiersprache (Java oder Kotlin) und das minimale API-Level für
die zu unterstützenden Android Versionen ausgewählt werden.

2.2.3 Entwicklung mit Android Studio IDE

Da Android Studio IDE auf dem Code von IntelliJ IDEA basiert, stellt es dieselben
Features bereit und bietet darüber hinaus spezielle Tools für die Entwicklung von
Android-Apps an.

                                       16
2.8 – Android Studio 3 – Aufbau

Das Interface von Android Studio ist ähnlich wie das von xCode aufgebaut. Es
lässt sich in drei Bereiche einteilen: Ganz links befindet sich die Projektansicht.
Von hier aus wird durch die Dateien des Projektes navigiert. Im Editor Window
in der Mitte kann zwischen Layout-Ansicht für das Design und Code-Editor für
hauptsächlich Java- oder XML-Dateien gewechselt werden. Dazu wird in der
oberen Menüleiste des Bereiches die entsprechende Datei ausgewählt, die
bearbeitet werden soll. Die Layout-Ansicht ist, was den Aufbau angeht, nahezu
identisch zu xCode. Es gibt eine Übersicht über alle verwendeten UI-Kompo-
nenten, eine Device-Ansicht, die konfiguriert werden kann und ein Fenster (2b)
für die Anpassung der Eigenschaften von UI-Elementen. Letzteres wird nur in der
Layout-Ansicht angezeigt, sodass sich der Code-Editor über die gesamte Breite
(2a und 2b) erstreckt. Die Debug-Area zum Testen befindet sich in Android Stu-
dio ebenfalls unten. Neben Konsolen-Ausgaben und einem Terminal bietet die-
ser Bereich auch die Möglichkeit zur Auflistung von anstehenden Aufgaben, die
das Projekt betreffen. Über die Toolbar oben kann der Run- bzw. Debug-Prozess
gestartet und das Android-Gerät für den Emulator (Geräte-Simulator) ausgewählt
werden.[17]

Während für die Erstellung einer Benutzeroberfläche von iOS-Apps Storyboards
genutzt werden, wird in Android Studio mit Activities gearbeitet. Eine Activity ist
eine Bildschirmansicht und besteht aus Layouts und Widgets.

                                        17
Layouts gehen auf die Basisklasse ViewGroup zurück und sind eine Art
unsichtbarer Container, der die Widgets enthält. Android bietet verschiedene
Typen von Layouts an, wobei LinearLayout, RelativeLayout und ConstraintLay-
out am weitesten verbreitet sind. Es wird hier nicht weiter auf die Eigenschaf-
ten dieser Typen eingegangen. Es sei nur festzuhalten, dass verschiedene Lay-
outs existieren, wobei sie die Bedingungen für Abstände und Position der Be-
dienelemente jeweils unterschiedlich festlegen. Widgets hingegen sind UI-
Elemente (Buttons, TextViews etc.), die Android zur Verfügung stellt und die alle
auf der Klasse View basieren. So setzt sich eine Benutzeroberfläche in Android
aus ViewGroups und Views zusammen (siehe Abb. 2.7). [17]

2.9 – Android – UI-Hierarchie

Das Design einer Activity wird innerhalb einer XML-Datei festgelegt. Wenn für
Anpassungen der grafischen Oberfläche der Layout-Editor genutzt wird, wie es
häufig der Fall ist, wird die XML-Datei automatisch erweitert. Theoretisch kann
das gesamte Design erstellt werden, ohne die XML-Datei direkt zu bearbeiten,
sondern nur unter Verwendung des Interfaces. Die Programmlogik einer Activity
wird in einer zugehörigen Java-Klasse implementiert. Innerhalb einer Manifest-
Datei kann festgelegt werden, welche Activity als Launchscreen, also als Start-
punkt der App dienen soll. Um zwischen verschiedenen Activities zu wechseln,
können sogenannte Intents verwendet werden, die in der Java-Klasse imple-
mentiert werden müssen.

                                       18
Mittels Intents kann nicht nur zwischen Activities innerhalb der Anwendung
gewechselt, sondern zudem mit externen Apps kommuniziert werden, um bei-
spielsweise ein Mail-Programm oder die Kamera zu öffnen.[17]

2.10 – Android Studio 3 – Zusammenspiel UI & Logik

Die obige Abbildung 2.8 veranschaulicht, wie für die grafische Oberfläche einer
Android-App Programmlogik implementiert werden kann. Die dargestellte Java-
Klasse verbindet sich zunächst mit der Activity, die es verwalten soll (rote Linie).
In diesem Fall hat sie den Namen „activity_main“. Über eine ID, die im Layout-
Editor für jedes UI-Element festgelegt werden kann, wird in der Zeile darunter die
TextView instanziiert, sodass auf dieses Element im Code zugegriffen werden
kann. In den grün umrandeten Funktionen wird der Text des TextView-Elements
je nach Aktion geändert. Um die Funktionen mit den entsprechenden Buttons zu
verbinden, werden die Funktionsnamen im Layout-Editor als onClick-Attribut der
jeweiligen Buttons angegeben.

                                        19
2.2.4 Bewertung

Wie xCode bietet Android Studio viele Werkzeuge, welche die Entwicklung
nativer Android-Apps erheblich erleichtern. Mit Java und Kotlin besteht zudem
die Möglichkeit, zwischen einer einerseits weit verbreiteten und einer anderer-
seits sehr modernen Programmiersprache zu wählen. Android Studio ist sowohl
für macOS als auch für Windows verfügbar, sodass es bezüglich der Hardware
keine Voraussetzungen gibt. Die Entwicklergebühren für die Veröffentlichung
einer App sind verglichen mit iOS niedrig und vor allem einmalig. Darüber
hinaus gibt es für Android-Apps neben dem Google Play Store viele weitere
Verbrei-tungswege. Die große Marktabdeckung von 76% [3] ist sicherlich
ebenfalls als großer Vorteil von Android anzusehen.

Jedoch bringt die Tatsache, dass viele verschiedene Gerätehersteller beteiligt
sind, aus Entwicklersicht auch Nachteile mit sich. Zum einen vergrößert sich der
Testing-Aufwand, wenn sichergestellt werden soll, dass die App auf verschie-
denen Android-Geräten unterschiedlicher Hersteller reibungslos funktioniert und
zum anderen wird die Bereitstellung von Updates und die Nutzung moderner
Features dadurch eingeschränkt, dass Androids Softwareupdates nicht zentral
ausgerollt werden, sondern abhängig vom jeweiligen Gerätehersteller sind.

Die Entwicklung einer nativen Android-App empfiehlt sich insbesondere dann,
wenn die App möglichst viele Anwender voraussetzt oder eine schnelle Ver-
öffentlichung über einen beliebigen Verbreitungsweg gewünscht ist.

                                      20
3        Hybride Apps

Hybride Apps stellen eine Mischung aus Webanwendung und nativer App dar.
Sie werden auf Basis der Webtechnologien HTML, CSS und Javascript ent-
wickelt und darüber hinaus in einen nativen Container eingebettet, wodurch es
möglich ist, sie wie eine native App im App Store verfügbar zu machen. Hybride
Apps könnten somit als Anwendungen mit nativer Infrastruktur und webbasiertem
Inhalt bezeichnet werden.

Die Einbettung in einen nativen Container geschieht über eine sogenannte „Web
View“, welche nichts anderes als eine Browser Engine1 innerhalb einer nativen
App ist. Im Gegensatz zu einem herkömmlichen Browser existieren in einer Web
View keine Bedienelemente zur Navigation und keine Adressleiste. Sie ist ledig-
lich für die Darstellung von Webinhalten zuständig, ohne weitere Browserele-
mente anzuzeigen. Ein weiterer Unterschied, verglichen mit einer Webanwen-
dung, besteht darin, dass hybride Apps auch offline lauffähig sind, sofern nicht
auf Ressourcen zugegriffen werden muss, die eine Internetverbindung voraus-
setzen. Das liegt in der Tatsache begründet, dass der Webinhalt hybrider Apps
nicht von einem Webserver geladen, sondern innerhalb der App auf dem Gerät
gespeichert wird.[8][9]

Der Einsatz von App-Frameworks wie Ionic oder Adobe Phonegap kann die
Entwicklung einer hybriden App wesentlich erleichtern. Sie übernehmen die
Einbindung des webbasierten Codes für verschiedene Plattformen und stellen
Plugins bereit, die einer hybriden App Zugriff auf viele native Gerätefunktionen
ermöglichen.[20][21]

Der größte Vorteil von hybriden Apps ist die kurze Entwicklungsdauer, die da-
durch zustande kommt, dass eine Codebasis verschiedene Plattformen bedienen
kann. Des Weiteren werden keine Entwickler benötigt, die auf native Program-
miersprachen spezialisiert sind, sondern es können Web-Entwickler für die Um-
setzung hybrider Apps eingesetzt werden.

___________________________
1
    „HTML-Renderer“

                                      21
Eine Umfrage, welche im Jahr 2019 von Stack Overflow 2 durchgeführt wurde,
ergab, dass fast 70% aller Teilnehmer mit Webtechnologien vertraut waren,
während die nativen Sprachen Swift, Objective-C oder Kotlin jeweils unter der
7%-Marke blieben.[22] Die große Verbreitung von webbasierten Sprachen kann
somit durchaus als Vorteil hybrider Entwicklung angesehen werden.

Trotz alledem sieht man sich bei der Entwicklung hybrider Apps mit ein paar
Herausforderungen konfrontiert. Verglichen mit nativen Apps können sie im Be-
reich Performance nicht mithalten, was sich besonders bei rechenintensiven An-
wendungen bemerkbar macht. Dies äußert sich beispielsweise durch eine ver-
längerte Reaktionszeit bei Interaktion mit der App oder generell durch längere
Ladezeiten. Beides kann sich im schlimmsten Fall negativ auf die Usability aus-
wirken. Dazu kommt, dass bei einer hybriden Entwicklung der Zugriff auf alle
Gerätefunktionen nicht sichergestellt ist, auch wenn die angesprochenen App-
Frameworks viele Features mittels Plugins bereitstellen. Der Entwickler ist nichts-
destotrotz abhängig von entsprechendem Support des Drittanbieters, was bei
einer nativen Entwicklung nicht der Fall ist.[8]

Hybride Apps glänzen durch eine schnelle und plattformübergreifende Entwick-
lung unter Verwendung verbreiteter Sprachen. Wenn der Schwerpunkt auf einer
möglichst schnellen Veröffentlichung für mehrere Plattformen liegt, ist der hy-
bride Ansatz durchaus empfehlenswert. Eine hybride App eignet sich somit auch
besonders gut für die Umsetzung eines MVP (Minimum Viable Product), um
Markt- bzw. Funktionsbedarf zu testen. Für Anwendungen, die komplexer und
rechenintensiver sind und bei denen es zudem von großer Wichtigkeit ist, dass
sie stabil und flüssig laufen, ist womöglich von einer hybriden Entwicklung ab-
zuraten. Jedoch muss dazu gesagt werden, dass Webanwendungen allgemein
schneller und leistungsstärker geworden sind und die Einbußen bezüglich Per-
formance heutzutage nicht mehr so gravierend sind. Für den Fall, dass bereits
eine für Mobilversionen optimierte Webanwendung existiert, kann sich die Erwei-
terung auf eine hybride App ebenfalls anbieten, um sie in den App Stores ver-
fügbar zu machen.

___________________________
2
    verbreitete Internetplattform für Softwareentwickler

                                                 22
4         Cross-Platform Apps

Der Begriff „Cross-Platform App“ („plattformübergreifende App“) wird häufig als
Oberbegriff für jene Apps verwendet, die die Eigenschaft der Plattformunab-
hängigkeit aufweisen, was hybride Apps mit einschließen würde. In dieser Arbeit
wird jedoch klar zwischen hybriden Apps und Cross-Platform Apps unterschie-
den, da letztere einen anderen technischen Ansatz verfolgen. Eine Codebasis
bedient hier ebenfalls mehrere Plattformen, jedoch mit dem Unterschied, dass
bei der Erstellung der Benutzeroberfläche native UI-Elemente verwendet wer-
den. Es handelt sich daher nicht, wie bei den hybriden Apps, um Web App-
likationen mit nativer Hülle, sondern um Apps bestehend aus „echten“ nativen
Komponenten.[9]

Cross-Platform Tools wie React Native oder Xamarin stellen dabei die Verbin-
dung zu den nativen Schnittstellen her und ermöglichen die Übersetzung in na-
tive UI-Elemente. Für eine Umsetzung mit React Native würde das beispielsweise
bedeuten, dass der Entwickler UI-Komponenten in React1 schreibt und React
Native diese in entsprechende native Komponenten für die jeweilige Plattform
umwandelt.

Cross-Platform Apps genießen damit dieselben Vorteile wie hybride Apps, wenn
es um eine schnelle, plattformunabhängige und kosteneffiziente Entwicklung
geht. Mit React Native und Xamarin können zudem die modernen Sprachen
React und C-Sharp2, die beide über eine große Community verfügen, für die
Umsetzung genutzt werden. Der größte Vorteil von Cross-Platform Apps gegen-
über hybriden Apps ist sicherlich die Tatsache, dass derselbe Code von ver-
schiedenen Plattformen genutzt werden kann, aber zugleich native UI-Elemente
verwendet werden. Diese Transferleistung übernimmt dabei das jeweilige Cross-
Platform Tool. Das ideale Endprodukt wäre somit eine leistungsstarke, nahezu
native App, die auf eine schnelle, plattformunabhängige Entwicklung zurück-
geht.[23][24]

___________________________
1
    JavaScript-Framework (entwickelt von Facebook)
2
    Objektorientierte Programmiersprache (entwickelt von Microsoft)

                                               23
Cross-Platform Apps verfolgen einen Ansatz, der darauf abzielt, die Vorteile einer
hybriden App mit denen einer nativen App zu vereinen. In der Theorie ist es
genau das, was Cross-Platform Apps so reizvoll macht, in der Praxis ist es jedoch
nicht immer so leicht umzusetzen. Der Entwickler ist hier stark auf die Unter-
stützung des Cross-Platform Tools angewiesen. Wenn ein gewisses natives UI-
Element nicht bereitgestellt wird oder eine gewünschte Modifizierung des
Elements nicht vorgesehen ist, kann der Entwicklungsaufwand in die Höhe
schnellen. Es ist zwar möglich, eine beliebige native Anbindung selbst zu imple-
mentieren, jedoch kann dieser Codeabschnitt dann nicht mehr von anderen
Plattformen verwendet werden. So kann es bei komplexeren Anwendungen
schnell passieren, dass aufgrund nativer Anpassungen letztendlich doch mit
verschiedenen Codebasen gearbeitet werden muss. Zudem kann trotz nativer
Benutzeroberfläche nicht dieselbe Performance wie bei einer nativen App ge-
währleistet werden, da durch die Umwandlung des Codes ein Zusatzaufwand
entsteht.[9]

Die Entwicklung einer Cross-Platform App eignet sich für verschiedene Anwen-
dungsfälle. Generell, wenn eine native Benutzeroberfläche für mehrere Plattfor-
men gewünscht ist, kann dieser Ansatz in Betracht gezogen werden, wobei vor-
her analysiert werden sollte, ob die Vorteile, die ein Cross-Platform Tool bietet,
nicht durch spezielle Anforderungen an die App und dadurch entstehenden
Mehraufwand wieder relativiert werden. Es liegt auf der Hand, dass für Entwick-
lerteams, die ohnehin auf die Sprachen React oder C-Sharp spezialisiert sind,
die Umsetzung einer solchen App ebenfalls in Frage kommt. Für den Fall, dass
bereits eine Webanwendung in React existiert, kann ein großer Teil dieses Codes
in React Native wiederverwendet werden, wodurch sich dieser Ansatz dann auch
empfehlen kann.

Alternativ zu React Native von Facebook und Xamarin von Microsoft kann seit
2017 Flutter von Google für die Umsetzung einer Cross-Platform App genutzt
werden. Apps werden hier in der ECMA-standardisierten Programmiersprache
Dart geschrieben, die ebenfalls von Google stammt.

                                       24
5     Zusammenfassung und Fazit

Wie in der Einleitung bereits gezeigt wurde, ist die Entwicklung mobiler Apps mit
der Zeit immer relevanter geworden, wodurch auch die Möglichkeiten zur Um-
setzung vielfältiger geworden sind. In dieser Arbeit wurde daher ein Überblick
über die verschiedenen Methoden, heutzutage mobile Apps umzusetzen, ge-
geben. Dabei wurden die technischen Unterschiede der verschiedenen Entwick-
lungsansätze erläutert und darüber hinaus eine Bewertung hinsichtlich Funk-
tionsumfang, Aufwand und Machbarkeit abgegeben.

Etwas detaillierter wurde sich den Betriebssystemen iOS und Android und der
technischen Umsetzung nativer Apps für diese Plattformen gewidmet. Dies dien-
te dazu, den grundlegenden Aufbau der beiden verbreitetsten mobilen Plattfor-
men und die Kernkonzepte dieser zu erläutern, um sich auf Basis dessen mit
anderen Entwicklungsansätzen beschäftigen zu können. Die angesprochenen
Frameworks für hybride App-Entwicklung oder die Cross-Platform Tools konn-
ten nicht in derselben Tiefe behandelt werden, da es den Rahmen der Arbeit ge-
sprengt hätte. Nichtsdestotrotz sollte eine ausreichende Übersicht über die ver-
schiedenen Entwicklungsansätze, deren Eigenschaften sowie Vor- und Nachteile
geliefert worden sein.

Trotz nennenswerter Alternativen stellt die native Entwicklung noch immer ein
bewährtes Vorgehen dar, mobile Apps zu entwickeln. Ein umfangreiches natives
SDK bietet viele nützliche Werkzeuge explizit für eine Platform und gewährleistet
zudem Support aus erster Hand. Des Weiteren ist die Performance einer nativen
App aufgrund der nahtlosen Kompatibilität von Programmiersprache, Bibliothe-
ken und Betriebssystem am besten.

Durch die schnelle und plattformübergreifende Entwicklung sind hybride Apps
ebenfalls eine beliebte Möglichkeit, Anwendungen für Mobilgeräte umzusetzen.
Dadurch, dass webbasierte Sprachen, welche weit verbreitet sind, verwendet
werden, erhalten viele Entwickler, die mit nativen Sprachen nicht vertraut sind,
Zugang zur App-Entwicklung. Zudem erleichtern Frameworks die Entwicklung
hybrider Apps, indem sie die Webinhalte in die native App einbinden und Plugins
für den Zugriff auf native Funktionen bereitstellen.

                                       25
Cross-Platform Apps erweitern den hybriden Ansatz, indem Cross-Platform
Tools, ausgehend von einer Codebasis, UI-Elemente in native UI-Komponenten
für die jeweiligen Plattformen übersetzen. Mit dem Ansatz, die Konzepte von na-
tiven und hybriden Apps zu vereinen, ist die Entwicklung von Cross-Platform
Apps eine reizvolle Methode, wobei in der Praxis bei komplexeren Anforde-
rungen die Vorteile schnell relativiert werden.

                                        26
6       Literaturverzeichnis

[1] „Simon Says 'Here's How!' User’s Manual” – IBM Corporation, 1993
Zugriff: 14.11.2019
URL: https://www.microsoft.com/buxtoncollection/a/pdf/Simon%20User%20Manuals.pdf

[2] „Blackberry: Vom Überflieger zum Übernahmekandidat“ - CIO Magazin, 2015
Zugriff: 14.11.2019
URL: https://www.cio.de/a/blackberry-vom-ueberflieger-zum-uebernahmekandidat,3102876

[3] Statista - Statistics & Facts - Statista
„Mobile app usage” – 2019, Zugriff: 15.11.2019
URL: https://www.statista.com/topics/1002/mobile-app-usage/
„Smartphones industry” – 2018, Zugriff: 15.11.2019
URL: https://www.statista.com/topics/840/smartphones/
„The Most Popular Programming Languages” – 2018, Zugriff: 03.12.2019
URL: https://www.statista.com/chart/16567/popular-programming-languages/
„Mobile operating systems’ market share” – 2019, Zugriff: 02.01.2019
URL: https://www.statista.com/statistics/272698/global-market-share-held-by-mobile-operating-
systems-since-2009/

[4] Apple Newsroom – Apple
„The App Store turns 10” – 2018, Zugriff: 15.11.2019
URL: https://www.apple.com/newsroom/2018/07/app-store-turns-10/
„Apple Announces iPhone 2.0 Software Beta“ – 2008, Zugriff: 15.11.2019
URL: https://www.apple.com/newsroom/2008/03/06Apple-Announces-iPhone-2-0-Software-
Beta/

[5] Android Developers Blog - Google
„Android Market: Now available for users” – 2008, Zugriff 15.11.2019
URL: https://android-developers.googleblog.com/2008/10/android-market-now-available-for-
users.html
„Announcing a beta release of the Android SDK” – 2008, Zugriff 15.11.2019
URL: https://android-developers.googleblog.com/2008/08/announcing-beta-release-of-android-
sdk.html
„Android’s commitment to Kotlin” – 2019, Zugriff 29.11.2019
URL: https://android-developers.googleblog.com/2019/12/androids-commitment-to-kotlin.html

                                               27
[6] Eric Schmidt (Google CEO) - Mobile World Congress – Barcelona, 2010
Zugriff: 11.11.2019
URL: https://www.youtube.com/watch?v=ClkQA2Lb_iE

[7] Eric Schmidt (Google Chairman) - Bloomberg Interview, 2014
Zugriff: 11.11.2019
URL: https://www.youtube.com/watch?v=vzKM8oyCsUg&feature=emb_title

[8] eBook: Hybrid vs. Native – Ionic
Zugriff: 22.12.2019
URL: https://ionicframework.com/books/hybrid-vs-native

[9] Ionic Framework Articles - Ionic
„What is hybrid App Development” – 2019, Zugriff: 18.12.2019
URL: https://ionicframework.com/resources/articles/what-is-hybrid-app-development
„Ionic vs. React Native: A Comparison Guide” – 2019, Zugriff: 19.12.2019
URL: https://ionicframework.com/resources/articles/ionic-vs-react-native-a-comparison-guide

[10] „Steve Jobs resisted third-party apps on iPhone” – The Guardian, 2011
Zugriff: 16.11.2019
URL: https://www.theguardian.com/technology/appsblog/2011/oct/24/steve-jobs-apps-iphone

[11] Apple Developer Documentation – Apple
Apple Developer Program, Zugriff 02.12.2019
URL: https://developer.apple.com/programs/
Swift Introduction, Zugriff: 04.12.2019
URL: https://developer.apple.com/swift/
„Model-View-Controller”, Zugriff 08.12.2019
URL: https://developer.apple.com/library/archive/documentation/General/Conceptual/DevPedia-
CocoaCore/MVC.html
SwiftUI, Zugriff 08.12.2019
URL: https://developer.apple.com/xcode/swiftui/
xCode Help, Zugriff 15.12.2019
URL: https://help.apple.com/xcode/mac/current/
Interface Builder, Zugriff 16.12.2019
URL: https://developer.apple.com/xcode/interface-builder/

                                              28
[12] „iOS Architecture“ – Medium, 2018
Zugriff: 01.12.2019
URL: https://medium.com/@anuradhs/ios-architecture-a2169dad8067

[13] „WWDC: 12 big announcements for enterprise users” – Computerworld, 2019
Zugriff: 02.01.2019
URL: https://www.computerworld.com/article/3400099/wwdc-12-big-announcements-for-
enterprise-users.html

[14] Global App Revenue – First Half of 2019 – SensorTower, 2019
Zugriff: 02.01.2019
URL: https://sensortower.com/blog/app-revenue-and-downloads-1h-2019

[15] „Google unveils cell phone software and alliance” – CNET, 2007
Zugriff: 29.11.2019
URL: https://www.cnet.com/news/google-unveils-cell-phone-software-and-alliance/

[16] Open Handset Alliance - FAQ – OHA, 2007
Zugriff: 29.11.2019
URL: https://www.cnet.com/news/google-unveils-cell-phone-software-and-alliance/

[17] Android Developer Documentation – Google
„Fundamentals”, Zugriff: 27.11.2019
URL: https://developer.android.com/guide/components/fundamentals
„Android NDK“, Zugriff: 29.11.2019
URL: https://developer.android.com/ndk
„Platform Architecture“, Zugriff: 12.12.2019
URL: https://developer.android.com/guide/platform
„Guide to app architecture“, Zugriff: 18.12.2019
URL: https://developer.android.com/jetpack/docs/guide
„Publish your app“, Zugriff: 18.12.2019
URL: https://developer.android.com/studio/publish
„Layouts“, Zugriff: 22.12.2019
URL: https://developer.android.com/guide/topics/ui/declaring-layout
„Meet Android Studio“, Zugriff: 27.12.2019
URL: https://developer.android.com/studio/intro

                                               29
Sie können auch lesen