Entwickler: Auf den JavaScript Days hältst du einen Workshop zum Thema Cross-Plattform-Entwicklung. Dabei sagst du in deinem Abstract, dass HTML5 als Plattform immer mehr Features aus der Desktop-Welt bietet. Kannst du uns da einmal ein kleines Status-Update geben? Was tut sich gerade im Bereich HTML5?
Gregor Biswanger: Wenn heute von HTML5 gesprochen wird, ist in den meisten Fällen gar nicht mehr die eigentliche deklarative Sprache der Oberfläche mit XML gemeint. Es ist eher eine Kombination aus HTML, CSS und JavaScript, die sich gemeinsam seit dem 28. Oktober 2014 stetig weiterentwickeln. Früher war bei einigen Anforderungen sofort klar, dass diese nur mit einer Desktop-Technologie wie WinForms oder WPF gelöst werden kann. Heute hingegen gibt es eine Vielzahl an HTML5 Features, die in der Desktop-Welt einen hohen Stellenwert haben.
Dazu zählt zum Beispiel die Offline-Unterstützung. Selbst wenn der Web-Server gerade nicht erreichbar ist, kann eine Web-Anwendung weiterhin zum Einsatz kommen. Bei der Verarbeitung von komplexen Algorithmen, haben wir hierbei die Möglichkeit mit Web Worker auf Multi-Threading zu setzen. Eine effiziente Datenkommunikation wird über Web Sockets ermöglicht, womit eine extrem große Masse von Daten Bi-Direktional ausgetauscht werden kann. Ein weiteres Highlight ist, dass der HTML5-Standard zwei unterschiedliche NoSQL-Datenbanken mit sich bringt. Der Entwickler selbst muss diese überhaupt nicht erst bereitstellen.
Ein verbesserter Zugriff auf die Hardware ist ebenfalls vorhanden. Es beginnt bei der Abfrage der aktuellen geographischen Position des Benutzers. Wenn der Nutzer einer solchen Abfrage in der Web-Anwendung zustimmt, ermittelt der Browser anhand von der GPS-Hardware die aktuelle Position. Sollte keine passende Hardware zur Verfügung stehen, wird automatisch über die IP-Adresse eine ungefähre Position ermittelt. Weitere Hardware Unterstützung gibt es für Touch-Sensoren, Beschleunigungssensoren, Webcams und vieles weitere. Hochkomplexe 3D-Lösungen können GPU-beschleunigt mittels WebGL zum Einsatz kommen. Für Video und Audio wird kein Browser-Plug-In benötigt und für das fixe Zeichnen mit absoluten Werten steht das Canvas-Steuerelement zur Verfügung.
Das war ein kleiner Auszug aus den neuen Möglichkeiten von HTML5, die in der Desktop-Welt relevante Vorteile bieten. Als Cremé de la Cremé läuft HTML5 im Gegensatz zu den bereits etablierten Desktop-Technologien Cross-Plattform.
Entwickler: Dein Workshop heißt ja „Cross-Plattform-Entwicklung mit Electron, Cordova und Angular.“ Du zeigst, wie man eine Hybride Web-App aufbaut. Wie gehst du dabei vor?
Gregor Biswanger: Im Prinzip laufen die meisten Desktop-Features bereits im herkömmlichen Web-Browser. Es gibt dennoch einige Einschränkungen. Eine davon wäre das Sicherheitskonzept. Die Web-Anwendung läuft in einer Sandbox und wir Entwickler sind hierbei in einer Art Zwangsjacke gefangen. So ist der direkte Zugriff auf das Dateisystem nicht möglich. Andere Prozesse im System können wir ebenfalls nicht ansteuern und plattformspezifische APIs sind nicht direkt aufrufbar.
Aus diesen Gründen sind native Cross-Plattform Lösungen wie Electron für den Desktop und Apache Cordova für mobile Endgeräte entstanden. So muss zu Beginn ermittelt werden, ob die geplante Web-Anwendung nur für bestimmte Szenarien diese Grenzen sprengen muss. Wenn dies der Fall seien sollte, ist der Einsatz einer hybriden Architektur gerechtfertigt.
Angular in der Kombination mit dem Angular CLI bietet bereits ein starkes Tooling dafür. Zu Beginn werden zum Beispiel drei Projekte separat angelegt. Eines für Electron (Desktop), eins für Cordova (Mobile) und eins für Web (Angular/Client). Mit npm Scripts wird das Angular CLI angesteuert und ein kombiniertes Deployment für alle Projekte konfiguriert. Framework-spezifische Eigenheiten müssen hierbei beim einmaligen Setup berücksichtigt werden. Das wären beispielsweise bei Cordova die Initialisierung von Angular zum richtigen Zeitpunkt und bei Electron die Pfadauflösung für die Navigation. Ist diese minimale Hürde fertiggestellt, kann mit einem Code für alle Plattform-Welten eine Allround-Lösung gebaut werden.
Entwickler: Vieles funktioniert bereits im Bereich Cross-Plattform-Entwicklung. Wo siehst du aber noch Raum für Verbesserung?
Gregor Biswanger: Electron und Cordova sind nur aktuelle Zwischenlösungen. Das Web selbst geht immer mehr in die Richtung, die Vorteile dieser Technologien zu adaptieren. Ein erster Schritt in diese Richtung zeigt das Konzept der Progressive Web Apps. Die Grenzen der Sandbox können allerdings immer noch nicht kontrolliert gesprengt werden. Wenn dieser Punkt erreicht wird, bewegen wir uns mit dem nativen Web in die richtige Richtung für Cross-Plattform Lösungen.
Entwickler: Die JavaScript-Szene hat den Ruf, besonders schnelllebig und fragmentiert zu sein. Mit TypeScript, Angular, React und Vue.js scheinen sich allerdings in den letzten Monaten doch einige Konstanten herauszukristallisieren. Können wir da so eine Art Konsolidierung der JavaScript-Welt beobachten?
Gregor Biswanger: Es haben sich tatsächlich eine Handvoll UI-Frameworks stark etabliert im Enterprise-Umfeld. Bei Angular sehe ich gerade für den Enterprise-Bereich einige Vorteile gegenüber der anderen Lösungen. Beginnen wir damit wer dahinter steckt. Federführend gehört Angular zu Google. Aufbauend auf TypeScript und den Reactive Extensions steckt einiges von Microsoft dahinter. Zwei gigantische Marktführer was den Bereich Softwareentwicklung angeht. Dazu kommt noch die richtig große Entwickler-Community. Dann lehnt sich Angular auf Architekturkonzepte und Vorgaben, die man von Enterprise-Desktop-Lösungen kennt.
React und Vue.js sind ebenfalls großartige UI-Frameworks. Sie verlangen aber eher, dass die Entwickler ein eigenes Architektur-Konzept erarbeiten und eine sehr große JavaScript-Erfahrung mitbringen. In der Realität sind aber die meisten JavaScript-Entwickler Umsteiger aus anderen Entwicklungssprachen wie Java oder C#. In den wenigsten Fällen beschäftigen sich diese wirklich tiefergehend mit JavaScript. Ein großer Fehler ist oft, dass sie mit TypeScript beginnen, in die neue Welt einzusteigen. Die C-ähnliche Syntax vermittelt ihnen das Gefühl, ungefähr zu wissen was sie machen. Bei React habe ich bereits unterschiedliche Unternehmen scheitern gesehen. Bei Angular hingegen gar keins von den über vierzig Unternehmen, die ich bisher geschult oder beraten habe.
Die Schnelllebigkeit der Szene ist aber auch der guten Weiterentwicklung von JavaScript geschuldet. Wobei Angular seit 2011 ein sehr wichtiger Baustein für zahlreiche Unternehmen ist. Auch wenn noch lange nicht alles perfekt daran ist und die anderen beiden Kandidatin ihre eigenen Stärken repräsentieren.
Entwickler: Wenn du dir die aktuelle Szene der Webentwicklung anschaust – welchen Missstand würdest du gerne am schnellsten behoben sehen?
Gregor Biswanger: Das Thema WebAssembly wird oft überbewertet. Umsteiger aus anderen Entwicklerwelten erhoffen sich davon, JavaScript so aus dem Weg gehen zu können. Das Konzept hinter WebAssembly setzt aber nicht darauf, JavaScript abzulösen. Ganz im Gegenteil: JavaScript wird für WebAssembly benötigt und der Schwerpunkt darauf liegt, komplexe Aufgaben im Hintergrund ausführen zu können. Dass das immer performanter als in JavaScript geschieht, ist ebenfalls nicht richtig. Der Name Assembly ist hierbei irreführend. Mein Wunsch hierbei wäre, dass die Entwickler sich näher und tiefer mit JavaScript selbst beschäftigen.
Entwickler: Und welcher Trend interessiert dich persönlich momentan am meisten?
Gregor Biswanger: Mich persönlich interessiert neben der Cross-Plattform Entwicklung mit JavaScript, das Thema Softwarearchitektur von verteilten Anwendungen. Dazu kommen Microservices in der Cloud, basierend auf Domain-driven Design und die Datenhaltung mit NoSQL (Schwerpunkt MongoDB). Zahlreiche Kundenprojekte haben mich damit in den Bann gezogen und fasziniert.
Vielen Dank für das Interview!