Bei der Entwicklung von neuen Anwendungen stellt sich im Planungsprozess zwangsläufig irgendwann die Frage: "Welche Technologie verwende ich, um meine App zu entwickeln?". Um diese Frage schnell und effizient beantworten zu können, habe ich mich im Rahmen meines dualen Studiums bei newcubator mit verschiedenen Entwicklungsmöglichkeiten von mobilen Anwendungen auseinandergesetzt. Das Ergebnis meiner Evaluation möchte ich Ihnen nun in meiner Blogreihe vorstellen. Die Blogreihe besteht aus insgesamt 9 Artikeln, die im Laufe des Jahres 2021 veröffentlicht werden. Wenn Sie keinen Artikel verpassen wollen, schauen Sie regelmäßig auf unser Blogseite nach und folgen Sie uns auf Social Media.
Blogreihe
Hier finden Sie die Auflistung der einzelnen Blogartikel die zur Blogreihe gehören. Diese Agenda wird mit jedem neu veröffentlichtem Artikel erweitert.
Projektvorstellung
Projektüberblick
Ziel des Projektes ist die Erstellung einer Entscheidungsmatrix anhand einer Evaluation, mit der die Technologieauswahl für mobile Anwendungen effizienter getroffen werden kann. Die Evaluation umfasst die fünf Entwicklungsansätze Native Apps, Native Apps mit nicht-nativem Framework, Cross Compile Frameworks, Progressive Web Apps (PWAs) und Hybrid Apps. Die verschiedenen Technologien werden mit Fokus auf Gesamtentwicklungszeit, Abhängigkeiten zu anderen Technologien und Herstellern, Entwickler Know-how am Markt, Komplexität und Risiken und der Total Cost of Ownership bewertet und verglichen. Außerdem wird für jede Technologie eine Beispiel App entwickelt, anhand welcher man die Entwicklungszeit und Komplexität vergleichen kann.
Die Evaluation basiert darauf, dass man eine Anwendung für die beiden Betriebssysteme iOS und Android entwickeln möchte. Andere Betriebssysteme für mobile Geräte liegen nicht im Fokus. Zur Messung des Entwickler-Know-hows am Markt und der Beliebtheit werden Umfragen und Job-Listing-Statistiken herangezogen. Die Vorstellung der Technologien basiert hauptsächlich auf Rechercheergebnissen.
Anforderungen der Beispielapp
Um die Beispiel-Apps besser vergleichen zu können, wurde ein Thema gewählt, welches bei allen Apps umgesetzt wurde.
Thema der Beispiel-Apps ist ein Timer, wo der Nutzer eine Zeit in Stunden, Minuten und Sekunden angeben kann und bei gestartetem Timer nach Ablauf der angegebenen Zeit per Vibration und Ton benachrichtigt wird. Das User-Interface besteht aus zwei Buttons, einer Uhr und einem Fortschrittsbalken um die Uhr herum. Mit Klick auf die Uhr wird der Zahlen-, bzw. Uhrzeit-Picker geöffnet. Mit Klick auf einen Button wird der Timer gestartet und der Button wird zum Pause-Button. Mit Klick auf den zweiten Button wird der Timer auf 0 zurückgesetzt, unabhängig davon, ob er noch läuft oder bereits abgelaufen ist. Wenn keine Zeit ausgewählt wurde, bewirkt der Klick auf den Startknopf nichts. Ist der Timer abgelaufen, wird ein Ton abgespielt und der Startknopf wird zu einem Stoppknopf, mit dem der Ton abgeschaltet wird. Die App soll auf beiden Plattformen laufen können, wird allerdings im Rahmen dieses Projektes nur auf Androidgeräten getestet.
Projektplanung
Projektablauf
Der erste Teil des Projektes besteht aus der Vorstellung der einzelnen Entwicklungsmöglichkeiten und die konkrete Betrachtung einzelner Frameworks oder Programmiersprachen, die für diese App-Entwicklung verwendet werden. Der zweite Teil des Projektes wird der Vergleich der verschiedenen Entwicklungsmöglichkeiten anhand der bereits genannten Kriterien sein. Mit den Ergebnissen aus dem Vergleich wird dann als Ergebnis des Projektes eine Entscheidungsmatrix erstellt, mit der man leicht die beste Technologie für seine Anwendung herausfinden kann.
Technologien
Native Apps
Eine mobile native App bezeichnet eine Anwendung, die mit einer Programmiersprache geschrieben wurde, welche in einem Maschinencode kompiliert werden kann, der von einem mobilen Betriebssystem verstanden wird.Native Apps mit nicht-nativen Framework
Eine native App mit nicht-nativen Framework bezeichnet eine Anwendung, die mit einem Framework in systemfremder Sprache geschrieben wird, aber so übersetzt wird, dass die nativen Komponenten des Betriebssystems genutzt werden.Cross Compile Frameworks
Ein Cross Compile Framework ist ein Framework, welches in einer systemfremden Sprache geschrieben wird und in einem systemspezifischen Maschinencode kompiliert werden kann.Progressive Web App
Eine Prgressive Web App ist eine Web Anwendung, die mit Hilfe von Service Workern und einem Manifest auf das Endgerät der Nutzer*innen heruntergeladen werden kann.Hybrid Apps
Eine Hybrid App ist eine Web Anwendung, die durch einen nativen Wrapper Zugriff auf die nativen Funktionen des Endgeräts bekommt.
Entwicklung der Beispielapps
Für die verschiedenen Entwicklungsmöglichkeiten wurde jeweils eine Beispieltechnologie gewählt, mit der die App entwickelt wurde. In den Blogartikeln zu den Entwicklungsmöglichkeiten wird näher auf die Entwicklung der App und das Endresultat nach jeweils ca. 8h Entwicklungszeit eingegangen.
Native App: Kotlin Programmiersprache
Native App mit nicht-nativem Framework: React Native Framework
Cross Compile App: Flutter Framework
Progressive Web App: React Framework
Hybrid App: PhoneGap + React Framework
Sie haben eine Produktidee für eine App und sind sich unsicher, welcher Technologie für Sie die Beste ist? Dann kontaktieren Sie uns gerne für ein unverbindliches Erstgespräch.