Electron: Plattformübergreifender Elektronenfluss
Immer mehr plattformunabhängige Frameworks finden ihren Weg in die Entwicklerwelt. Begonnen hat diese Entwicklung im großen Stil mit der Erfindung des Smartphones und dem naheliegenden Wunsch, Anwendungen schnell und einfach auf verschiedene Systeme zu bringen. Mit Electron wird Ihre Anwendung desktoptauglich gemacht und für nahezu alle denkbaren Desktopplattformen bereitgestellt.
Seit einigen Jahren ist sie quasi Standard: eine HTML5/JavaScript-Anwendung, die dennoch auf Gerätehardware zugreifen und als eine native App laufen kann. Möglich wurde dies zum einem durch die Entwicklung des Apache-Cordova-Frameworks [1], aber auch aufgrund der breiteren Verwendung und Entwicklung von Single Page Applications (SPAs) sowie Progressive Web Applications (PWAs). Die Unterschiede zwischen einer App und einer Website verschwinden immer mehr. Nun ist es an der Zeit, eine Brücke zu den nativen Desktopanwendungen zu schlagen. Hierbei unterstützt das offene Framework Electron [2] den Entwickler und erstellt aus einfachen Webanwendungen entsprechende Desktopanwendungen für Windows, Linux und macOS.
Im Normalfall reicht es für eine Desktopanwendung, die für den Endanwender gedacht ist, vollkommen aus, mit einer interpretierten Sprache entwickelt worden zu sein. Eine reine native Desktopanwendung – zum Beispiel auf Basis von C# oder Java – bietet vor allem im Zeitalter der Microservices und relativ üppiger Rechenleistung immer häufiger keine nennenswerten Vorteile mehr für den Anwender. Spezialisierte und hardwarenahe Anwendungen sind hier logischerweise ausgeschlossen.
Aufgrund dessen boomen sogenannte Progressive Web-Apps (PWAs); sie bieten zum einen den enormen Vorteil, plattformübergreifend lauffähig zu sein, gleichzeitig aber auch schnell und einfach verteilt werden zu können. Diesem Vorteil steht aber auch ein Nachteil entgegen: Die Verteilung via Webserver. Standardmäßig werden PWAs wie normale Websites gehostet, was bedeutet, dass dafür ein Server konfiguriert und gewartet werden muss. Auch wenn PWAs enorme Vorteile bieten und mit den entsprechenden Frameworks sogar direkt als Apps für Smartphones und Tablets verwendet werden können, gibt es dennoch Fälle, in denen der Entwickler eine installierbare Desktopanwendung vorzieht. Zu diesen Fällen können zum Beispiel desktoptypische Bedienelemente, die Nutzung von direktem Dateizugriff, das Drucken von Dokumenten, die Einbindung von Kontextmenüs, gezieltere Softwareverteilung oder die Verwendung von Menüleisten (insbesondere unter macOS) zählen. Genau diese Punkte machen es einer Webanwendung oder PWA schwer, da sie immer noch im Browser und dessen Sandbox ausgeführt wird. Mit dem Framework Electron kann eine SPA oder PWA genau mit diesen Features ausgerüstet werden und bietet entsprechend native Funktionalitäten.
Bevor eine solche Cross-Plattform-Anwendung entwickelt wird, muss natürlich das zu verwendende Framework festgelegt werden. Hierbei ist – vor allem für Entwickler, die im objektorientierten .NET-Umfeld entwickeln – ein Framework auf Basis von Angular [3] und TypeScript [4] zu empfehlen, da enorm viele Werkzeuge existieren und die Entwicklercommunity entsprechend breit aufgestellt ist. Wer sich jedoch intensiv mit der Entwicklung von Single-Page-Anwendungen (SPAs) und PWAs beschäftigt, wird ebenfalls erkennen, dass das Framework React [5] und darauf basierende GUI-Frameworks bei vielen Entwicklern sehr beliebt sind. Beide Frameworks haben ihre Vor- und Nachteile und sollten wie immer je nach Einsatz und Entwicklerpräferenz ausgewählt werden.
Die Auswahl des Frameworks ist direkt mit der Frage verbunden, ob die neu zu entwickelnde Anwendung in gleicher Weise als PWA oder gar als mobile App verwendet werden soll. Möchte man also nur eine reine Desktopanwendung entwickeln, kann man GUI-Frameworks verwenden, die einem das native Look and Feel einer Desktopanwendung geben. Hierzu zählt zum Beispiel Photon [6], das jedoch noch keine Angular-Komponenten zur Verfügung stellt und rein auf JavaScript und CSS basiert. Möchte man die Anwendung gerne auch als PWA nutzen oder von Angular-Komponenten Gebrauch machen, ist Angular Material [7] zu empfehlen. Soll die Anwendung dann auch noch als mobile App zum Einsatz kommen, führt kaum ein Weg an Ionic [8] vorbei. Ionic ist hierbei zwar der Gigant unter den Mobile-App-Frameworks, unterstützt jedoch auch offiziell den Einsatz in PWAs. Ein weiteres nennenswertes Framework – vor allem in Hinblick auf die Unterstützung von React – wäre noch Onsen UI...