Teil 7: Webapplikationen out of the Browser – für Desktop und Mobile

Web-App Tutorial: Raus aus dem Browser mit Electron und Cordova
Keine Kommentare

Mit Webtechnologien ist man nicht an den Browser gebunden. Es ist mit vertretbarem Aufwand möglich, mit HTML, CSS, JavaScript und einem passenden Framework auch Apps für den Desktop oder Mobile Devices zu erstellen. Damit liegen nahezu alle Plattformen, Systeme und Gerätetypen in Reichweite. Ein Grund mehr, sich mit der modernen Webprogrammierung auseinanderzusetzen. Folgen Sie uns auf einem Streifzug durch interessante Ansätze.

„Write once – run everywhere“ ist wohl einer der häufigsten Träume der Entwicklergemeinde. Einmal erstellter Quellcode sollte auf allen erdenklichen Geräten (Desktop, Web, Mobile) und Systemen (Windows, macOS, Linux, iOS, Android) ausgeführt werden können, und die entstehenden Applikationen sich an die Zielumgebung möglichst weitgehend anpassen. Gelingt das nicht oder weniger gut, fühlen sich die Anwendungen ein wenig wie Fremdkörper an. Was vor Jahren noch als akzeptabel galt, kann man heute seinen Nutzern, die zu Recht eine sehr gute User Experience erwarten, nicht mehr zumuten. Dafür muss sich die Applikation bestmöglich an den Vorgaben des Zielsystems ausrichten. Schauen wir uns die Gemengelage der bestehenden Applikationsarten an, kann man unabhängig von der Systemumgebung, nach wie vor eine Dreiteilung aus technischer Perspektive feststellen. Auch 2019 unterscheiden wir noch zwischen Desktopanwendungen, Webapplikationen und Apps für die mobilen Geräte. In diesem Teil der Artikelserie geht es um die Möglichkeiten, mit Webtechnologien auch Desktop und mobile Devices zu erreichen. Bevor wir uns um die technischen Aspekte bemühen, werfen wir einen Blick auf das Nutzerverhalten.

Moderne Webprogrammierung: Eine systematische Einführung

  • Teil 1: Vom Fat Client zur modernen Web-App, Architektur, HTML5
  • Teil 2: Seiten gestalten: CSS3/Sass
  • Teil 3: Funktionalität realisieren mit JavaScript
  • Teil 4: TypeScript – die typsichere Variante von JavaScript
  • Teil 5: Durchstarten – eine App mit dem JavaScript Framework Angular
  • Teil 6: Ionic – ein Framework für das User Interface mobiler Apps
  • Teil 7: Mobile mit Cordova, Desktop mit Electron

Wo und wie arbeitet der Nutzer heute?

Es gibt keine absolut verlässlichen Statistiken, auf welchen Geräten und Systemen die Nutzer arbeiten. Dennoch gibt es Trends, die uns Hinweise geben, so zum Beispiel der Report „Global Digital Future in Focus“ von comScore:

  • Die Gerätekategorien Desktop, Mobile usw. werden in unterschiedlichen Ländern verschieden stark eingesetzt
  • Die mobile Nutzung nimmt weiter zu
  • Die Nutzer wechseln mehrfach zwischen den Geräten
  • Gerade in Deutschland wird der Desktop weiterhin vielfältig eingesetzt

Diese Studie zielt primär auf Endanwender ab. Im Enterprise-Umfeld dürfte der Einsatz des Desktops weitaus mehr ausgeprägt sein. Buchhaltung, Kalkulationen und andere Line-of-Business-Applikationen sind für konzentriertes Arbeiten gedacht, und dafür ist der Desktop nach wie vor die beste Wahl.

Der Desktop im Vorteil

Desktopapplikationen bieten für arbeitsintensive Aufgaben (Textverarbeitung, Zeichnungen, Analysen) viele Vorteile:

Offlinefähigkeit: Haben Sie die Textverarbeitung auf Ihren Computer heruntergeladen, können Sie jederzeit auf ihr Dokument in dieser App zugreifen, auch ohne Datenverbindung. Das ist bei einer Web-App nicht der Fall. Daher erhöhen Desktopanwendungen durchaus die Produktivität.

Erhöhte Sicherheit: Desktopanwendungen bieten durch die Offlinefähigkeit eine erhöhte Sicherheit bei der Arbeit mit sensiblen Daten. Sie können Ihre LAN- oder WLAN-Verbindung trennen, wenn es notwendig ist. Mit einer Web-App sind Sie immer einem bestimmten Potenzial einer Internetbedrohung (Datendiebstahl) ausgesetzt. Ihre Daten sind immer exponierter, da Sie Informationen auch nicht immer lokal speichern. Es gibt natürlich auch Programme, bei denen das kein Problem ist. Bei Web-Apps muss man vor dem Hintergrund der Datenschutz-Grundverordnung (DSGVO) ebenso den Standort des Servers klären. Viele brisante Daten dürfen den EU-Raum nicht verlassen. Sie müssen feststellen, ob der Betreiber bzw. Hoster der Web-App die Anforderungen an die DSGVO erfüllt.

JavaScript Days 2019

JavaScript Testing in der Praxis (Teil 1 + 2)

mit Dominik Ehrenberg (Crosscan) und Sebastian Springer (MaibornWolff)

Fortgeschrittene schwarze Magie in TypeScript

mit Peter Kröner (‚Webtechnologie-Erklärbär‘)

Arbeitsgeschwindigkeit: Die Ausführungsgeschwindigkeit hängt von der Geschwindigkeit Ihres Computers ab. Haben Sie einen sehr schnellen Computer und eine sehr langsame Internet- oder Datenverbindung, hat eine Desktopanwendung einen erheblichen Vorteil. Sie nutzt den Arbeitsspeicher und die Verarbeitungsleistung Ihrer lokalen Ressourcen, um eine positive Benutzererfahrung zu erzielen. Arbeiten Sie mit einer Web-App, werden die Ergebnisse direkt auf Ihre Internetverbindung und -geschwindigkeit zurückgeführt. Ist Ihre Verbindung schlecht, spiegelt das auch Ihre Produktivität wider. In besonderen Anwendungsszenarien kann sich dieses Bild drehen. Ist die Geschwindigkeit der Internetverbindung nicht mehr der Flaschenhals, kann man über eine Webapplikation durchaus eine größere Rechenpower aufgrund einer potenten Hardware in der Cloud nutzen.

Langfristig meist günstiger: Kaufen Sie eine Desktopanwendung kaufen (Lizenz), haben Sie normalerweise höhere Kapitalkosten als beim Kauf einer Web-App oder Abschluss eines Abonnements. Vergleichen Sie die Kosten über die Laufzeit des Programms, sind die einmaligen Kosten in der Regel günstiger als laufende Zahlungen.

Unabhängigkeit von Dritten: Desktopanwendungen erfordern keine Unterstützung von Dritten für die Verfügbarkeit. Funktioniert das Gerät ordnungsgemäß, können Sie jederzeit auf Ihre Daten zugreifen, was bei Web-Apps nicht immer der Fall ist. Ist der Server aus irgendeinem Grund nicht verfügbar, haben Sie keinen Zugriff auf die gewünschten Informationen. Sie sind nicht gezwungen, den Handlungen unbekannter Dritter zu vertrauen, um die Integrität Ihrer Dateien zu schützen, wenn Sie sich für eine Desktop-App entscheiden. Anderseits ist man für die Verfügbarkeit und Aktualität der Desktopanwendung auch stets selbst verantwortlich.

Kein Upgradezwang: Desktopanwendungen zwingen Sie nicht zu einem Upgrade. Webanwendungen können Sie dagegen ohne Zustimmung zu Upgrades zwingen, da dies Teil des automatischen Aktualisierungsprozesses ist. Wenn das Programm nach dem Update nicht wie gewünscht funktioniert, haben Sie ein Problem.

Wo Licht ist, da ist auch Schatten. Die Nachteile einer Desktopanwendung ergeben sich direkt aus den Vorteilen der Webapplikation. Das ist das Thema des nächsten Abschnitts.

Warum das Web unschlagbar ist

Webanwendungen erfordern nur eine Installation: Verwenden Sie eine Webanwendung, ist nur ein Installationsvorgang erforderlich, bevor Sie das Produkt verwenden können. Diese Installation findet auf dem Server bzw. in der Cloud statt. Mit einer Web-App rufen die Nutzer die Adresse einfach über ihren Browser auf und schon können Sie loslegen.

Auf allen Geräten aktuell: Verwenden Sie eine Webanwendung, müssen Sie sie nicht selbst aktualisieren. Das Programm und die zugehörigen Daten sind stets aktuell.

Kurzfristig günstiger: Bei gelegentlicher oder einmaliger Nutzung sind Webanwendungen günstiger als Desktopanwendungen, denn Sie zahlen i. d. R. nur für die Dauer der Nutzung oder den Ressourcenverbrauch.

Mehrbenutzermodus meist direkt möglich: Webanwendungen sind für mehrere Benutzer einfacher. Möglicherweise sind Lizenzprobleme mit der Anzahl der Personen verbunden, die gleichzeitig auf das Programm zugreifen können, d. h. Sie müssen mehrere Konten anlegen und ggf. für jedes Konto eigene Entgelte entrichten. Technisch sind Webanwendungen i. d. R. für eine simultane Nutzung ausgelegt.

Weniger Betriebssystemanforderungen: Man kann i. d. R. von jedem System mit nahezu jedem beliebigen Browser arbeiten. Das Nutzerkonto bleibt in der Cloud, die Daten- oder Internetverbindung ist für eine erfolgreiche Anwendung also wichtiger als die lokale Soft- oder Hardware. Man kann Webanwendungen auch auf weniger leistungsfähiger Hardware ausführen.

Updates direkt verfügbar: Man erhält meist im Rahmen seiner vertraglichen Vereinbarung die neuesten Updates. Diese werden direkt über den Server installiert, und es bedarf keiner Eingriffe auf Seiten des Clients.

Diese Vor- und Nachteile sind uns Entwicklern bewusst. Sie zeigen, dass in bestimmten Arbeitsbereichen Desktopanwendungen im Vergleich mit Webapplikationen besser geeignet sind. Betrachten wir anschließend die Argumente für den Einsatz von nativen Apps.

Die native App ist das Beste für das Smartphone

Native Apps sind auf das jeweilige Betriebssystem, d. h. Android oder iOS, ausgerichtet. Sie nutzen die Systembibliotheken nativ und ermöglichen damit, die verbaute Hardware im vollen Umfang einzusetzen. Außerdem kann man sie über die App Stores verteilen. Android-Apps baut man mit Android Studio, programmiert wird in Java oder Kotlin, und das User Interface wird mit Hilfe eines XML-Dialekts erzeugt. Apps für iOS werden mit Xcode als integrierte Entwicklungsumgebung erstellt. Als Programmiersprache wird Swift eingesetzt und das User Interface mittels Storyboards erstellt. Das Problem an diesen Wegen ist, dass sich die beiden Vorgehensweisen maßgeblich unterscheiden. Es ist kaum möglich, Quellcode zwischen den Plattformen zu teilen bzw. wiederzuverwenden. Die Alternativen zu nativen Apps sind Web-Apps, d. h. Webapplikationen, die auf die Belange der mobilen Systeme zugeschnitten sind, und hybride Apps als Mischung zwischen beiden Technologien. Sowohl Web-Apps als auch hybride Apps werden mit Webtechnologien erstellt, also mit HTML, CSS, JavaScript und angepassten Frameworks. Hybride Apps werden darüber hinaus in einer Art Sandkasten (interner Browser) ausgeführt, der dem System eine native App simuliert und damit erweiterte Technologien gegenüber den einfachen Web-Apps zulässt.

Cross-Platform-Programmierung als Ausweg

Es stellt sich also folgende Frage: Warum sollte man überhaupt Webtechnologien verwenden, um eine Desktopanwendung oder eine App für Android oder iOS zu erstellen? Dafür gibt es mehrere Gründe, die sich im Endeffekt alle auf das Argument des Aufwands reduzieren lassen. Es ist sehr zeit- und ressourcenaufwendig, Applikationen für unterschiedliche Geräte und Betriebssysteme zu erstellen. Die Softwareentwicklung versucht seit Beginn, diese Herausforderung mit geräte- und plattformübergreifender Programmierung zu beantworten. Plattformunabhängige Programmierung versucht, unterschiedliche Betriebssysteme zu bedienen. Auf dem Desktop sind es bekanntermaßen Windows, Linux und macOS, und auf den mobilen Geräten Android und iOS. Windows 10 nimmt insofern eine Sonderrolle ein, als es auf leistungsfähigen Tablets und so genannten Convertibles (Mischung aus Notebook und Tablet) ausgeführt werden kann und sich damit an der Schnittstelle zwischen mobiler und stationärer Nutzung befindet. Die geräteübergreifende Programmierung geht gewissermaßen noch einen Schritt weiter. Hier werden neben unterschiedlichen Betriebssystemen auch verschiedene Geräteklassen, d. h. Desktop, Notebook, Tablet, Smartphone und IoT-Devices angesprochen (Abb. 1).

Die wesentlichen Ziele der geräte- und plattformübergreifenden Programmierung sind demnach heute die folgenden:

  • Wiederverwendung von Quellcode zwischen den Systemen
  • schnellere Entwicklung und damit Kosteneinsparung
  • Bereitstellung von Applikationen auf jedem Zielsystem
  • erstellte Applikationen sollen sich von nativer Entwicklung möglichst wenig unterscheiden
  • verringerte Einarbeitung auf unterschiedlichen Plattformen und Nutzung vorhandener Kenntnisse und Fähigkeiten
  • Nutzung von vertrauten Werkzeugen für die Entwicklung

Vielfach versucht man heute mit Webtechnologien die geräte- und plattformübergreifende Programmierung voranzutreiben. Der Vorteil dieser technischen Basis liegt klar auf der Hand: Es sind offene Standards, die auch im Sinne eines kleinsten gemeinsamen Nenners zu verstehen sind. Webapplikationen können nahezu auf jedem System und innerhalb eines jeden Browsers sofort und ohne zusätzliche Installationen ausgeführt werden. Mit anderen Worten: HTML, CSS und JavaScript versteht jedes System.

Gelingt es jetzt durch eine Erweiterung, zum Beispiel Frameworks, aus den Webapplikationen Desktopanwendungen oder Apps (hybrid, nativ) zu erstellen, ist man dem ursprünglichen Ziel „Write once – run everywhere“ ein ganzes Stück nähergekommen.

Die möglichen Probleme der Cross-Plattform-Programmierung sind natürlich zum einen technischer Art, denn die Geräte und die Systeme unterscheiden sich erheblich, und zum anderen auch inhaltlicher Art. Letztgenannte Schwierigkeiten resultieren im Wesentlichen aus den folgenden Umständen:

  • unterschiedliche Hardwarevoraussetzungen, zum Beispiel Smartphone vs. Desktoprechner
  • völlig andere Formen der Userinteraktion, zum Beispiel Maus und Tastatur auf dem Desktop und Touchinteraktion auf dem Smartphone
  • Bildschirmgrößen und -auflösungen weisen eine riesige Spannweite auf
  • völlig unterschiedliche Nutzungsszenarien (siehe obige Ausführungen)

Diese Gräben können technische Ansätze natürlich nur bedingt überbrücken. Dennoch gibt es ausreichend Bedarf für eine Cross-Platform-Programmierung, d. h. alle Geräte und Systeme aus einem gemeinsamen Quellcode (weitgehend) zu bedienen. Einige Ansätze werden in den kommenden Textabschnitten etwas näher beschrieben. So unterschiedlich dieser Vorgehensweisen auch sind, sie eint die gemeinsame Basistechnologie in Form von HTML, CSS und JavaScript.

Eine Web-App läuft auf dem Desktop

Mit dem Framework Electron kann man eine Web-App auf dem Desktop zum Laufen bringen. Dabei wird die JavaScript-Laufzeitumgebung Node.js mit der Browser-Engine Chromium kombiniert. Im Kern wird eine Webapplikation mit HTML, CSS und JavaScript erstellt. Über die Electron APIs nutzt man die Plattformfeatures der Desktopsysteme Windows, Linux und macOS. Electron-Apps bestehen grob betrachtet aus zwei Prozessen: Der Renderer-Prozess ist für die Darstellung der Anwendung mit Chromium zuständig. Die Programmlogik wird über den Main-Prozess erledigt. Hier werden zum Beispiel auch die Zugriffe auf das Dateisystem ermöglicht. Ein Nachteil von Apps auf der Basis von Electron ist es, dass intern die Browser-Engine Chromium mit verpackt werden muss. Das führt dazu, dass bereits kleinste Apps eine Paketgröße von mehr als 100 MB haben. Diese Größenangabe relativiert sich natürlich, wenn man umfassendere Anwendungen erstellt.

Eine Alternative zu Electron ist NW.js, ebenfalls ein Framework zur Erstellung von Desktopanwendungen mit Webtechnologien. Hier wird die Webapplikation mit der Browser-Engine WebKit kombiniert. Dadurch können Anwendungsfenster erstellt werden, die die Webapplikation auf dem Zielsystem darstellen können. Ebenso kann man über WebKit auf native Betriebssystemfunktionen zugreifen. Mit Hilfe von NW.js kann man die Webapplikation dann zu einer Desktopanwendung verpacken (Packaging). Dabei gibt man das Zielsystem vor, zum Beispiel Windows oder macOS.

Eine Web-App läuft auf dem Smartphone

Um Apps auf das Smartphone zu bekommen, gibt es mehrere Optionen. Wird die Webapplikation lediglich an die Systemumgebungen der mobilen Geräte angepasst, bleibt es im Kern eine Webapplikation, wir würden sie im Kontext der Apps als Web-App bezeichnen. Für viele Fälle kann das genügen. Einschränkungen gibt es beim Hardwarezugriff, und die Möglichkeit des Deployments über die Stores ist nicht gegeben. Einen deutlichen Schritt weiter gehen hybride Apps. Sie verpacken die Webapplikation wie gesagt in einem „Sandkasten“ in Form eines internen Browsers und regeln darüber die App-spezifischen Features. Hybride Apps werden mit Cordova erstellt. Apache Cordova steht als Open-Source-Framework zur Verfügung. Es verwendet HTML5, CSS3 und JavaScript. Die App bleibt eine Webapplikation. Der Einstiegspunkt ist dadurch wiederum die Datei index.html. Diese Web-App läuft im eingebetteten Browser. Beim Erstellen baut Cordova die App für die jeweilige Plattform zusammen. Cordova kann man innerhalb einer integrierten Entwicklungsumgebung verwenden, zum Beispiel Visual Studio, oder leichtgewichtiger über einen Editor wie Visual Studio Code und das Command Line Interface (CLI) steuern. Cordova kann mit weiteren Webbibliotheken, zum Beispiel mit Ionic für das Gestalten des User Interface kombiniert werden.

Möchte man noch einen Schritt in Richtung nativer Apps im mobilen Bereich gehen, kann man auch dies mit Webtechnologien erreichen. Dazu können Sie zum Beispiel das Framework NativeScript einsetzen. Es bietet mehrere Optionen, native Apps für die mobilen Systeme Android und iOS zu erstellen. Es werden die großen JavaScript Frameworks Angular und Vue.js unterstützt. Alternativ kann man auch direkt JavaScript bzw. TypeScript und CSS einsetzen. Es kommen native Renderer-Methoden zum Einsatz, die auf beiden Plattformen eine Gestaltung des User Interface wie bei nativer Programmierung erlauben. Native Steuerelemente sorgen für eine höhere Performance und eine bessere Systemintegration.

Ein weiterer Ansatz in diese Richtung ist React Native. Das Framework stammt aus dem Hause Facebook und ermöglicht es, native Apps mit JavaScript zu erstellen. Das User Interface wird mittels JSX (JavaScript XML bzw. JavaScript Syntax Extension) erstellt. React Native erzeugt performante Apps mit nativen UI-Elementen für Android und iOS. Ein Button wird jeweils wie erwartet als echter Button in der iOS-App und in der Android-Version dargestellt. Das ist ein großer Vorteil gegenüber hybriden Frameworks wie etwa Cordova und Ionic, deren Anwendungscode in einer WebView ausgeführt wird. User-Interface-Elemente werden dort mit HTML und CSS lediglich nachgebildet, was sich negativ auf das Erscheinungsbild der App auswirken kann. React Native ermöglicht auch flüssige Animationen. Das ist ein Umstand, der in einer App für eine gute User Experience sorgt. Die Produktivität des Entwicklungsprozesses wird erheblich durch die Features Live Reload und Hot Reloading gesteigert. Wird bei der Programmierung mit React Native eine Änderung am Code vorgenommen, wird dies direkt in der App umgesetzt.

Abschließend ist noch Tabris.js zu erwähnen, ebenfalls ein JavaScript Framework zur Entwicklung nativer Apps für iOS und Android. Der Code wird vollständig in JavaScript geschrieben. Tabris.js verwendet keinen WebView-Container zum Rendern der Benutzeroberfläche; stattdessen werden native Widgets auf der mobilen Plattform aus JavaScript eingesetzt. Für die Entwicklung können Sie vorhandene JavaScript-Bibliotheken und Cordova-Plug-ins integrieren. Um das User Interface zu erstellen, steht eine Vielzahl von Widgets zur Verfügung. Die Oberfläche kann man direkt in JavaScript, bevorzugt in TypeScript, programmieren. Intuitiver ist eine deklarative Vorgehensweise auf der Basis von JSX (JavaScript XML). Auch die Funktionalität wird in JavaScript (TypeScript) programmiert, d. h. man braucht kein HTML5 und kein CSS3.

Ein wenig Praxis …

Wir schreiben jetzt eine Hello-World-Anwendung in Electron. Sie benötigen dafür eine aktuelle Version von Node.js. Die Installationspakete für die gängigen Betriebssysteme finden Sie unter nodejs.org. Ob die Installation funktioniert hat, können Sie mit node –version überprüfen. Danach können wir bereits Electron installieren. Das geht auf bekannte Art und Weise mit npm install -g electron.

Die notwendigen Packages werden aus dem Internet heruntergeladen und installiert. Das dauert einige Augenblicke. Erstellen Sie einen Ordner für die erste App. Wir haben den Ordner einfach test genannt. Innerhalb des Ordners erstellen Sie zwei Dateien. Das sind main.js und index.html. Die Inhalte dieser beiden Dateien sind in Listing 1 und 2 zu sehen. Um die App (testweise) auszuführen, geben Sie auf der Kommandozeile im Ordner /test folgenden Befehl ein: electron. Damit startet die App, und das Hello-World-Beispiel als Desktopanwendung wird ausgeführt. Diese Anwendung verfügt über alle wesentlichen Merkmale einer Desktopanwendung, zum Beispiel Fenster, Menüs usw. (Abb. 2). Wie man die App weiter aufbaut, findet man sehr gut auf tutorialspoint.com dokumentiert. Am Ende des Prozesses erstellt man App-Packages für die jeweilige Plattform. Das geht über den electron-packager direkt auf der Konsole.

const {app, BrowserWindow} = require('electron') 
const url = require('url') 
const path = require('path')  

let win  

function createWindow() { 
  win = new BrowserWindow({width: 800, height: 600}) 
  win.loadURL(url.format ({ 
    pathname: path.join(__dirname, 'index.html'), 
    protocol: 'file:', 
    slashes: true 
  })) 
}  

app.on('ready', createWindow)
<!DOCTYPE html>
<html>
  <head>
    <meta charset = "UTF-8">
    <title>Hello World!</title>
  </head>
  
  <body>
    <h1>Hello World!</h1>
    We are using node <script>document.write(process.versions.node)</script>,
    Chrome <script>document.write(process.versions.chrome)</script>,
    and Electron <script>document.write(process.versions.electron)</script>.
  </body>
</html>
Abb. 2: Hello-World-Desktop-App mit Electron

Abb. 2: Hello-World-Desktop-App mit Electron

Fazit und Ausblick

Wir müssen zum Nutzer, und das bedeutet aus heutiger Sicht, dass der Nutzer mit vielen Technologien und unterschiedlichsten Gerätearten auf verschiedenen Plattformen unterwegs ist. Um mit dem Intro dieses Artikels zu schließen: „Write once – run everywhere“ bleibt weiterhin das große Ziel der Softwareentwicklung. Wir können heute nicht sagen, dass man alles im Browser erledigen kann. Der Desktop bietet gerade für arbeitsintensive Aufgaben nach wie vor die beste Performance und Haptik für den Anwender. Ähnlich sieht es im mobilen Bereich aus. Nur native Apps sind in der Lage, die Features der Systeme auszunutzen. Wir haben gezeigt, dass man mit modernen Webtechnologien durchaus alle Systeme und Plattformen erreichen kann. Natürlich muss man auch hier mit Einschränkungen leben oder den einen oder anderen Stolperstein aus dem Weg räumen. Dennoch: HTML, CSS und JavaScript sind universell einsetzbar und für bestimmte Anwendungsarten durchaus für alle Gerätetypen vom Webbrowser über die native App bis hin zum Desktop geeignet. Wir finden, das ist ein guter Grund, sich intensiv mit den neuen Technologien auseinanderzusetzen. Die Artikelserie war dabei hoffentlich eine Hilfe.

Entwickler Magazin

Entwickler Magazin abonnierenDieser Artikel ist im Entwickler Magazin erschienen.

Natürlich können Sie das Entwickler Magazin über den entwickler.kiosk auch digital im Browser oder auf Ihren Android- und iOS-Devices lesen. In unserem Shop ist das Entwickler Magazin ferner im Abonnement oder als Einzelheft erhältlich.

Unsere Redaktion empfiehlt:

Relevante Beiträge

Hinterlasse einen Kommentar

Hinterlasse den ersten Kommentar!

avatar
400
  Subscribe  
Benachrichtige mich zu:
X
- Gib Deinen Standort ein -
- or -