Plattformen und Frameworks
Dauer: 45 Minuten bzw. bis zur Pause
- Plattformen für native Apps
- Frameworks für plattformübergreifende Apps
Ziel: Überblick verschiedener Ansätze zur App-Entwicklung
Auf dem Whiteboard oder in Excalidraw wird skizziert, welche verschiedenen Ansätze es gibt, Apps für Android und iOS zu entwickeln.
Vorteil Whiteboard: Medienbruch in die „Realität“, weg vom Computer
Vorteil Excalidraw: Änderungen und Neuanordnungen sind leichter möglich
Plattformen
Es gibt mit Android und iOS nur noch zwei relevante Plattformen, um Apps für Smartphones zu entwickeln. Die Hersteller beider Plattformen stellen „offizielle“ Ansätze bereit, um native Apps zu entwickeln.
Native Apps
Android-Geräte werden von vielen verschiedenen Herstellern auf den Markt gebracht. Das Android-Betriebssystem wird von Google entwickelt.
iPhones haben iOS als Betriebssystem und werden ausschließlich von Apple angefertigt.
Hier verwenden wir Android und iOS als Bezeichnungen für die nativen Plattformen zur App-Entwicklung für Android-Geräte bzw. iPhones.
| Plattform | Hersteller | Programmiersprache | Entwicklungsumgebung |
|---|---|---|---|
| Android | Kotlin (Java) | Android Studio mit Windows, macOS oder Linux | |
| iOS | Apple | Swift (ObjectiveC) | XCode ausschließlich (!) auf macOS |
Native Apps werden für Android in Googles PlayStore und für iPhones in Apples AppStore veröffentlicht.
Die „echten“ nativen Entwicklungsansätze erfordern zwei getrennte Code-Repositories und oftmals auch zwei dezidierte Entwickler-Teams, um eine App für beide Plattformen zu entwickeln.
Durch Ansätze wie Kotlin Multiplatform (KMP) ist es auch möglich, die Geschäftslogik einer App in Kotlin zu schreiben und diese plattformübergreifend zu verwenden. Außerdem gibt es mehrere plattformübergreifende UI-Frameworks, die wir neben KMP weiter unten betrachten.
Webanwendungen
Mit mobilen Webanwendungen, die im Browser ausgeführt werden, können ebenfalls Apps für Smartphones entwickelt werden. Hierzu gibt es neben den herkömmlichen Frontend-Technologien HTML, CSS und JavaScript spezielle Techniken für mobile Geräte wie das responsive Design und Service Workers u.a. für Offline-Funktionalität. Unter dem Begriff Progressive Web Apps (PWA) werden diese Techniken zusammengefasst.
Ein paar nützliche Links zu PWAs:
- Infos über PWAs bei web.dev (Google)
- Kurs zu PWAs bei web.dev (Google)
- Infos über PWAs im Mozilla Developer Network
Solche PWAs sind durch URLs im Browser erreichbar und werden in der Regel nicht zur Installation im AppStore bzw. PlayStore bereitgestellt. Häufig lassen sich PWAs jedoch mit Icon auf dem Homescreen des Smartphones ablegen, sodass sie wie eine App erscheinen.
Insbesondere sind PWAs natürlicherweise plattformübergreifend und funktionieren gleichermaßen auf Android-Geräten und iPhones.
Letztendlich funktionieren gut durchdachte und mit den o.ä. Techniken erstellte Webanwendungen sowohl auf Desktop-Rechnern oder Laptops, als auch auf Smartphones. Deswegen sind PWAs im Prinzip eigentlich bloß „gewöhnliche“ Webanwendungen.
Frameworks
Es gibt mehrere Frameworks, mit denen plattformübergreifende Apps für Android und iOS entwickelt werden können:
| Framework | Ursprung | Programmiersprache | Entwicklungsumgebung | Webseite |
|---|---|---|---|---|
| Kotlin Multiplatform (KMP) | Jetbrains (mit Google?) | Kotlin | Android Studio oder IntelliJ | jetbrains.com/kotlin-multiplatform |
| Flutter | Dart | Texteditor, empfohlen werden Android Studio oder VS Code | flutter.dev | |
| React Native (mit Expo) | Meta (Facebook) | JavaScript bzw. TypeScript | Texteditor, empfohlen wird VS Code | reactnative.dev |
| Lynx | ByteDance (TikTok) | JavaScript bzw. TypeScript | Texteditor (z. B. VS Code) | lynxjs.org |
| ionic | Ionic | JavaScript bzw. TypeScript | Texteditor, empfohlen wird VS Code | ionicframework.com |
| .NET MAUI | Microsoft | C# | Visual Studio (nicht VS Code) | dot.net/maui |
Alle diese Frameworks sind Open Source Projekte.
Mit diesen Frameworks (und auch mit PWAs) ist es möglich, Apps mit nur einer Codebasis sowohl für Android-Geräte als auch für iPhones zu entwickeln (und in manchen Fällen auch für weitere Plattformen wie Windows, macOS, u.a.).
Möglicherweise gibt es weitere relevante Frameworks, d.h. solche, die von einigen genutzt und weiterentwickelt werden. Folgende Frameworks sind Open Source:
- OneStack für React Native — onestack.dev (JavaScript/TypeScript)
- NativeScript — nativescript.org (JavaScript/TypeScript)
- Codename One — codenameone.com (Java und Kotlin)
- Kivy — kivy.org (Python)
- Tauri — tauri.app (Rust)
- kennen die Studierenden weitere Ansätze?
PAUSE
15 Minuten Pause