[DE] Überblick über Technologien zur Entwicklung von Progressive Web Apps #1

in #programming6 years ago (edited)

banner

Die Idee von Apps, welche aus dem World Wide Web heraus verbreitet werden, existiert seit dem ersten iPhone (2007). Damals dachte Apple selbst noch daran, keinen eigenen Appstore mit nativen Apps von Drittanbietern zu betreiben, sondern alle Apps als Webanwendung im Safari auszuführen zu lassen. Doch kurz nach Erscheinen des iPhones, verwarf Apple diese Idee direkt wieder und implementierte das heute bekannte System mit signierten nativen Apps.
Heute, einige Jahre später, erleben die sogenannten "Progressive Web Apps" (oder kurz "PWAs") ihr Comeback. Dies ist nicht zuletzt den technischen Möglichkeiten geschuldet, welche seit HTML5 eingeführt wurden. So stehen PWAs zum heutigen Standpunkt ihrem nativen Pendant kaum etwas nach.
In diesem und den folgenden Posts möchte ich eine Übersicht über aktuelle Technologien zur Entwicklung von Progressive Web Apps liefern. Außerdem werde ich auf deren aktuelle Unterstützung in den verschiedenen Browsern eingehen, sowie eventuelle Vorgänger abgrenzen.

Einleitung

"Application Cache is a Douchebag". Mit diesen Worten startet Jake Archibald seinen Blog-Eintrag, in dem er über die Technologie zur Offline Nutzung von Webseiten spricht. Neben dieser wurden noch viele weitere Technologien und Funktionen eingeführt, um das World Wide Web mächtiger zu machen. So dauerte es nicht lange, bis aus statischen Webseiten Apps entstanden, die es mit ihren nativen Gegenstücken aufnehmen wollten. Doch die Resultate waren den nativen Apps aufgrund von Technologien wie dem Application Cache deutlich unterlegen, da diese teils fehlerhaft oder einfach unpraktikabel waren. Heute jedoch, knapp vier Jahre nach dem Erscheinen von HTML5, gibt es Technologien, welche Entwicklern versprechen, Web Apps mit ähnlich guter User-Experience wie native Apps sie bieten, zu entwickeln. Solche Apps nennt man allgemein "Progressive Web Apps".

Was sind Progressive Web Apps?

Progressive Web Apps (oder PWAs) sind Web Applikationen, welche als einfache Webseite starten, aber je weiter die Entwicklung voranschreitet immer mehr an native Apps erinnern. Sie bieten das Design und die User-Experience, wie es Nutzer aus nativen Apps kennen. Dazu gehören (Push-)Notifikationen, welche Systemweit erscheinen, oder auch die die Offline-Nutzung, wenn mal kein Internet verfügbar ist.

Vorteile gegenüber nativen Apps

Wenn Progressive Web Apps native Apps "nur imitieren", was sind dann die Vorteile? Die Vorteile ergeben sich aus dem Kern von PWAs, der Webentwicklung. Folgende drei Aspekte sind das, was Progressive Web Apps von nativen Apps abhebt:

  1. Direkt verfügbare Updates
  2. Niedrigere Kosten
  3. Geringerer Arbeitsaufwand

Vorteile von nativen Apps

Wo es Vorteile gibt, muss es auch Nachteile geben. Auch wenn es erst der Browser ist, welcher einem mit seinen Schnittstellen erlaubt auf Hardware zuzugreifen, so ist er es auch, welcher die Grenzen zieht. So werden einer Web App nie die Ressourcen zur Verfügung stehen, wie wenn sie nativ implementiert worden wäre.

Einschränkungen

Neben den Ressourcen sind die Enschränkungen auf die verschiedenen Browser zurückzuführen. Während der Google Chrome schon heute alle der folgenden Technologien unterstützt, so ist es gerade Apples Safari, welcher kaum eine Schnittstelle vollständig unterstützt.

Die folgenden Posts

In den folgenden Posts der Serie "Überblick über Technologien zur Entwicklung von Progressive Web Apps" werde ich auf folgende Technologien eingehen:

  1. Service Worker API inkl. CacheStorage & SyncManager
  2. IndexedDB
  3. Notification & Push API
  4. Payment Request API
  5. Credential Management API
  6. Web Share API & Web Share Target API
  7. Media Session API

Dabei werde ich mich maßgeblich an dem Buch Building Progressive Web Apps von Tal Ater orientieren.

Quellen und weiterführende Links

https://www.heise.de/developer/artikel/Progressive-Web-Apps-Teil-1-Das-Web-wird-nativ-er-3733624.html (besucht am 26.01.2018 13:00 Uhr)

https://blog.ionicframework.com/what-is-a-progressive-web-app/ (besucht am 26.01.2018 13:45 Uhr)

https://de.ryte.com/magazine/mobile-optimierung-progressive-web-apps-vs-native-apps (besucht am 26.01.2018 13:57 Uhr)


In dem Sinne, frohes Coden.

(() => {
  const colors = [
    '001f3f', '0074d9', '7fdbff', '39cccc',
    '3d9970', '2ecc40', '01ff70', 'ffdc00',
    'ff851b', 'ff4136', '85144b', 'f012be',
  ];
  const contents = ['%cI', '%c❤', '%cweb', '%cdev'];
  const options = Array.from(
    new Array(contents.length),
    () => `
      color:#${colors[Math.floor(Math.random() * colors.length)]};
      font-size:64px;
    `
  );
  console.log.apply(console, [contents.join('')].concat(options));
})();
Sort:  

Hallo @drookyn, cooler Post! Danke für die Arbeit. Ich möchte nur mal meinen Standpunkt dazu kurz erläutern ;-)

Ich als ui/ux designer kenne klar die Vorteile die solche PWA's bieten, aber ich kenne vor allem die Nachteile die sich z.B. in den unterschiedlichen Benutzerführungen äußern. Android hat immer einen Backbutton, während iOS keinen hat, eine native Android App verhält sich auch immer anders als das iOS pendant.

Auch aus der optischen Ecke gibt es da ja immer große Unterschiede.

Ich hab da in diesem Bereich schon sehr viele schlimmes sehen und auch machen müssen in meinem Beruf. Aber vielleicht wird es ja immer besser mit der Zeit :)

Hi @neutronenkind, danke für den Standpunkt :)
Tatsächlich gebe ich dir recht, dass es in freier Wildbahn eine Menge negativ Beispiele gibt. Aber liegt es dann nicht eher an den Entwicklern dem entgegen zu wirken? Der Backbutton kann z.B. in die Menüleiste integriert werden und schwups ist dieses Problem beseitigt :D

Aber ja, hoffen wir, dass es besser wird mit der Zeit :)

Das stimmt, das ist ja auch der normale iOS Ansatz. Das Problem ist das du den Button anbieten musst für die iOS Nutzer aber die Android Nutzer brauchen ihn gar nicht, usw. das ist alles nicht so einfach. Aber Wurst, guter Beitrag. Weiter so ;-)

Sexy!

I second this!

Coin Marketplace

STEEM 0.28
TRX 0.13
JST 0.032
BTC 61233.41
ETH 2934.46
USDT 1.00
SBD 3.56