Warum jetzt die beste Zeit ist, Web-Developer zu werden

Seite 2: Progressive Web Apps: ein Web-basiertes Anwendungsmodell

Inhaltsverzeichnis

Schon früh versuchten Entwickler*innen, auch umfangreiche Anwendungen ins Web zu bringen (Rich Internet Applications). Da das Web anfangs noch nicht mächtig genug war, ging man es an, fehlende Fähigkeiten über Plug-in-Schnittstellen dorthin zu bringen: Java-Applets, Adobe Flash oder Silverlight waren solche Versuche, über die Webanwendungen auf bestimmte native Schnittstellen zugreifen konnten.

Das Problem bei diesen Ansätzen ist, dass sie die Installation der jeweiligen Programmierplattform auf dem Gerät voraussetzten. Das war aber nicht überall möglich, iOS hat keine der genannten Plug-in-Techniken je unterstützt. HTML5 hat dann zunehmend viele Schnittstellen mit nativer Power im Web eingeführt, die Browser direkt implementieren: Dazu gehören zum Beispiel die Wiedergabe von Video- und Audio-Inhalten, die hardwarebeschleunigte Darstellung von 2-D- und 3-D-Inhalten oder das Abrufen des aktuellen Standorts für standortbasierte Dienste – all das ohne Plug-in. Diese Schnittstellen machten das Web als Anwendungsplattform attraktiv.

Eine Codebase, eine App, x Plattformen: Progressive Web Apps machen's möglich (Abb. 2).

Progressive Web Apps (PWA) heben den Gedanken der Web-basierten Anwendungsentwicklung auf die nächste Stufe: Webanwendungen sollen nicht nur Zugriff auf mächtige Features haben, sondern auch offline funktionieren und so aussehen wie native Anwendungen - und das plattformübergreifend, auf Mobil- und Desktop-Plattformen.

Zentrale technische Mittel für PWA sind der Service Worker und das Web App Manifest: Ein Service Worker ist ein JavaScript-Schnipsel, der für eine bestimmte Website installiert wird. Der Service Worker bekommt einen Cache zur Seite gestellt, in dem er Dateien ablegen kann. Bei der Installation legt der Service Worker eine Kopie der Anwendungsquelldateien im lokalen Zwischenspeicher ab. Somit lässt sich die PWA künftig aus dem Cache laden. Damit wird die Anwendung nicht nur offlinefähig, sondern startet auch noch besonders schnell. Außerdem lässt sich der Service Worker losgelöst von der Website ausführen und damit zum Beispiel Push-Benachrichtigungen entgegennehmen oder Daten im Hintergrund synchronisieren.

Um schneller auf die Progressive Web App zugreifen zu können, haben Anwender*innen die Möglichkeit, über den Browser eine Verknüpfung auf dem Home-Bildschirm beziehungsweise der Programmliste des Betriebssystems anlegen zu lassen. Hier kommt das Web App Manifest ins Spiel. Es definiert das Aussehen von auf dem Gerät installierten Anwendungen, darunter den Namen der Anwendung, das darzustellende Symbol sowie den Anzeigemodus. Auf Wunsch lässt sich die Anwendung im Standalone-Modus starten. Die App läuft auf Mobilgeräten dann vollflächig, auf Desktop-Betriebssystemen in einem eigenen Fenster.

Seit 2018 lassen sich Progressive Web Apps auf allen relevanten Mobilplattformen (iOS, Android) und Desktop-Betriebssystemen (Windows, macOS, Linux) installieren und offline ausführen. Der Vorteil der Cross-Plattform-Entwicklung auf Basis von Webtechniken gegenüber nativen Ansätzen liegt darin, dass Programmcode nur einmal zu schreiben ist und sich danach auf einer Vielzahl von Plattformen ausführen lässt. Daher braucht es nur noch ein Entwicklungsteam für alle Zielplattformen. Features stehen gleichzeitig und in gleicher Güte überall zur Verfügung. Durch die kleinere Codebase ergibt sich zudem eine geringere Fehleranfälligkeit. Das PWA-Modell eignet sich insgesamt vor allem für kleinere und mittelgroße Unternehmen.

Und damit noch nicht genug. Im Rahmen seines Web Capabilities Project, besser bekannt unter dem Codenamen Project Fugu, möchte Google die Lücke zwischen Progressive Web Apps und nativen Anwendungen durch das Einführen vieler weiterer Webschnittstellen schließen. Auch die Beitragenden zum Webbrowser-Unterbau Chromium, Intel und Microsoft haben sich der Mission angeschlossen. Die Liste der geplanten APIs ist lang: So sollen PWAs zum Beispiel auf das native Dateisystem oder umfassend auf die Zwischenablage zugreifen können. Damit ließen sich im Web etliche Anwendungen umsetzen, für die es heute noch nativer Apps oder Wrapper wie Apache Cordova oder GitHub Electron bedarf: Bild- und Videobearbeitungsprogramme, integrierte Entwicklungsumgebungen oder Büroanwendungen.

Wie sehr kann das Web native Ansätze ersetzen?

Das Web ist nicht nur für Informationen gut geeignet, sondern im letzten Jahrzehnt auch als Anwendungsplattform erstarkt. Heute ist es für eine Vielzahl von Programmen interessant. Anwendungen wie Slack, Visual Studio Code oder Skype basieren bereits auf Webtechnologien, benötigen heute für den vollen Funktionsumfang jedoch noch native Wrapper. Das Ziel ist, dass Entwickler die überwiegende Mehrzahl von Anwendungen direkt im Web implementieren können. Programme, die eine tiefere native Integration voraussetzen, etwa Treiber, Systemprogramme, Virenscanner oder Cloud-Sync-Clients dürften jedoch auch weiterhin eher zu nativen Techniken greifen.

Darüber hinaus sind eine Autostart-Funktion, das Steuern von USB-Geräten, das Übernehmen von per SMS eingesandter Einmalpasswörter oder das Steuern der Touch-Bar unter macOS geplant. Die Schnittstellen gehen dabei über die im Web vorgesehenen Standardisierungsprozesse und werden direkt in Chromium und darauf basierenden Browsern wie Chrome, Edge oder Samsung Internet implementiert. Damit können Webentwickler*innen in nächster Zeit viele weitere Schnittstellen im Web erwarten. Offen bleibt, welche der Fugu-Schnittstellen auch Mozilla und Apple implementieren. Im Falle der Web Share API, über die sich Inhalte aus dem Browser heraus über den nativen Teilen-Dialog streuen lassen, hat das immerhin schon geklappt.