Suche
Interview mit Alexander Wilden

„Ein wenig Streiterei auf Kindergartenniveau wird es zwischen Java- und JavaScript-Verfechtern wohl immer geben“

Hartmut Schlosser

Alexander Wilden

JavaScript ist einer der Gewinner unserer großen Umfrage, bei der es darum ging, mit welchen Technologien sich JAXenter-Leser 2016 beschäftigen möchten. Was hat das große Interesse des Java-affinen JAXenter-Publikums für JavaScript zu bedeuten?

JavaScript JAX TrackNun, wohl soviel, dass Java-Entwickler kaum mehr an JavaScript vorbeikommen, wollen sie moderne Webanwendungen bauen. Auf der JAX 2016 ist JavaScript denn auch ein fester Programm-Bestandteil – als „JAX-Track of the Week“ wollen wir das Thema diese Woche hier auf JAXenter vertiefen. Zu Beginn haben wir uns mit JAX-Sprecher Alexander Wilden (aixigo AG) über den Status Quo der JavaScript-Entwicklung unterhalten  – und darüber, warum gerade auch Java-Entwickler Gefallen an der Sprache finden könnten.

Bildschirmfoto 2016-02-15 um 15.48.39

Ergebinis JAXenter-Umfrage: JavaScript

 

State of JavaScript

JAXenter: Die Popularität von JavaScript ist momentan riesig. Womit hat die Sprache das verdient?

Alexander Wilden: Historisch betrachtet ist der Erfolg von JavaScript direkt mit dem Erfolg des Web verknüpft. Im Gegensatz zu beispielsweise Java-Applets bietet es die Möglichkeit, Dynamik und Interaktivität in einer HTML-Seite einzubetten, ohne dass der Entwickler einen Compiler verwenden und der Anwender eine zusätzliche Laufzeitumgebung installiert haben muss. Die Evolution des Web vom reinen Dokumenten-Netzwerk hin zu einer Anwendungsplattform wurde einerseits durch JavaScript ermöglicht, hat aber andererseits auch die Weiterentwicklung der Sprache vorangetrieben. Wer heute mit seiner Anwendung große Verbreitung und Erfolg auf allen möglichen Plattformen und Betriebssystemen erreichen möchte, kommt an HTML und JavaScript nicht vorbei.

Dass JavaScript mit seinen historisch bedingten, syntaktischen Eigenheiten immer wieder für Diskussionen sorgt, ist eher zweitrangig. Mit ES2015 und kommenden Versionen wird das meiner Meinung nach aber bald der Vergangenheit angehören.

JAXenter: Was findest du persönlich spannend an JavaScript – und damit meine ich einerseits die Sprache, andererseits das Ökosystem von Frameworks & Tools?

Alexander Wilden: Besonders spannend und nützlich finde ich die Umsetzung von Funktionen als First-Class Citizens. Zum einen ermöglichen sie es auf einfache Weise, Closures als Event-Handler zu verwenden – welche ja mittlerweile sogar in Java Einzug gehalten haben. Zum anderen unterstützen sie aber auch einen funktionalen Programmierstil, der aktuell auf Grund der steigenden Asynchronität in Software immer populärer und notwendiger wird.

Was das Ökosystem betrifft, bin ich etwas hin- und hergerissen. Einerseits ist es spannend zu sehen, wie schnell viele gute Dinge geschaffen werden. Andererseits ist es aber auch anstrengend mitzuerleben, wie ein Hype den anderen jagt – bspw. AngularJS vs React oder Grunt vs Gulp. Hier sollten aber meiner Meinung nach ganz klar die Chancen in den Fokus rücken, die uns die neuen Erkenntnisse und Entwicklungen bieten. Man sollte zwar die Trends aufmerksam verfolgen, aber man muss ja nicht direkt jeden mitmachen.

Auf npm möchte ich auch nicht mehr verzichten müssen. Nie war es einfacher, seine Bibliotheken anderen zur Verfügung zu stellen oder selber von den Entwicklungen anderer zu profitieren.

JAX 2016 LogoTreffen Sie Alexander Wilden auf der JAX 2016:

Jenseits von Flux – Skalierbare Frontend-Architekturen mit Publish/Subscribe

Donnerstag, April 21, 2016 – 09:00 bis 10:00

JavaScript und die Java-Community

JAXenter: Du erwähntest es ja bereits: JavaScript hat nicht immer den besten Ruf – besonders in der Java-Community. Gibt es Dinge an der Sprache, die auch dich nerven – bzw. die du im nächsten ECMAScript am liebsten beheben würdest?

Alexander Wilden: Ich verzeihe JavaScript sehr viel und gehe dem, das mich nerven könnte, aus dem Weg. Es gibt einige Features, die man nicht oder nur mit Vorsicht verwenden sollte („this“ ist hier ein sehr populärer Kandidat). Douglas Crockford hat diese in seinem Buch „JavaScript: The Good Parts“ meiner Meinung nach sehr gut zusammengefasst, weshalb ich sie hier nicht nochmal aufführen möchte. Wenn man weiß, welche Konstrukte man vermeiden sollte und wo man besonders genau sein muss, kann man mit JavaScript sehr effizient entwickeln. Das Wissen muss man sich als professioneller JavaScript-Entwickler aneignen, genau so, wie ein professioneller Java-Entwickler zum Beispiel die Eigenheiten und Tücken von Garbage Collection und Thread-Synchronisation kennen sollte.

In Bezug auf die Java-Community könnte man gemeinerweise behaupten, viele Java-Entwickler würden aus Angst, die „Script-Kiddies“ könnten ihnen die Bühne streitig machen, die Sprache mit der flachen Lernkurve schlecht reden. Umgekehrt kann man natürlich in den Raum stellen, dass Java-Entwickler sich nur mit Hilfe von Code-Completion und Compiler zum Ziel führen lassen. Ein wenig Streiterei auf Kindergartenniveau wird es wohl immer zwischen den Verfechtern der beiden Lager geben.

Tatsächlich kann ich mir aber vorstellen, dass viele Java-Entwickler das statische Typ-System und die klassenbasierte Vererbung inklusive Interfaces in JavaScript vermissen. Das hat Microsoft offensichtlich erkannt und bietet mit TypeScript eine Lösung an, die optional statische Typisierung, Klassen und Interfaces in den Browser bringt. ECMAScript 2015 hat zumindest die Klassen auch in die JavaScript-Welt gebracht.

JAXenter: In welche Richtung sollte sich JavaScript weiterentwickeln?

Alexander Wilden: Die aktuelle Entwicklung in kleinen, evolutionären Schritten, gefällt mir. Features, die sich JavaScript-Entwickler schon lange gewünscht haben, wurden (endlich) umgesetzt oder stehen bald zur Verfügung. Scopes werden durch die Schlüsselworte „let“ und „const“ besser beherrschbar, und die Pfeilnotation für Funktionen entfernt insbesondere bei der Verwendung als Callbacks oder Iteratoren viel Rauschen. Darüber hinaus werden Features wie async-await die Sprache enorm bereichern und sie noch stärker und beliebter für die asynchrone Programmierung machen. Meiner Ansicht nach ist man da bereits auf einem sehr guten Weg.

Flux und das Publish/Subscribe-Modell

JAXenter: Auf der JAX sprecht ihr über den Architektur-Stil Flux – bzw. genauer über das Publish/Subscribe-Modell. Wo liegen hier die Gemeinsamkeiten, wo die Unterschiede?

Alexander Wilden: Im Prinzip basiert Flux auf dem Publish/Subscribe-Modell, schränkt es aber durch ein paar Regeln sinnvoll ein. Kurz zusammengefasst beschreibt Publish/Subscribe ein Modell, in dem Sender beliebige Nachrichten veröffentlichen (publish) und sich unabhängig davon Empfänger auf bestimmte Nachrichten anmelden (subscribe), um auf diese zu reagieren. Flux schränkt auf dieser Basis ein, welche Komponenten einer Anwendung sich auf welche Arten von Nachrichten anmelden dürfen. Eine React View darf sich beispielsweise nur auf Änderungen in einem Store anmelden, während der Dispatcher nur auf Aktionen durch den Benutzer oder eine andere Schnittstelle lauscht. Durch dieses Modell wird ein uni-direktionaler Datenfluss gewährleistet, der wiederum das System leichter beherrschbar und vorhersehbar macht. Darüber hinaus besteht außer bei den Stores kein Bedarf mehr für zustandsbehaftete Komponenten.

Vollwertiges Publish/Subscribe ist dagegen flexibler als Flux: Verknüpfungen zwischen Komponenten werden nicht programmatisch hergestellt, sondern mit Hilfe beliebiger Topics konfiguriert. Welche Komponenten miteinander kommunizieren, ist nicht vorgegeben. Die Zusammenstellung kann so viel dynamischer geschehen, und es bieten sich im Allgemeinen mehr Architekturspielräume. Ein organisches Wachstum des Systems ist möglich. Hier ist es dann essentiell, passende Strategien für die sinnvolle Zusammenstellung von Komponenten zu verwenden.

Mehr wird man natürlich im Vortrag von Michael Kurze und mir auf der diesjährigen JAX erfahren können!

JAXenter. Wie lassen sich Publish/Subscribe-Anwendungen mit JavaScript umsetzen? Wie gehst du da vor?

Alexander Wilden: JavaScript bietet von sich aus keine direkte Unterstützung für Publish/Subscribe an. Stattdessen kann man mittlerweile aus einem großen Pool an verschiedenen, kleinen Publish/Subscribe-Bibliotheken, wie beispielsweise PubSubJS, wählen. Auch jQuery, das in vielen Frontends eh schon als eine Art Wunderwaffe eingesetzt wird, lässt sich zu diesem Zweck verwenden. Rebecca Murphey beweist dies eindrucksvoll in einem Video, in dem sie die Vorteile des Publish/Subscribe-Modells anhand der bekannten Bibliothek erklärt. Im Node.js-Umfeld kann man natürlich einfach auf den EventEmitter zurückgreifen.

Wir verwenden bei uns in der Firma das Framework LaxarJS, welches dort als Basis für eigene Frontends entwickelt und außerdem als Open-Source-Projekt veröffentlicht wurde. Ziel des Frameworks ist es, das Publish/Subscribe-Modell als Grundlage für lose gekoppelte Komponenten zu nehmen, die durch JSON-basierte Konfiguration deklarativ zu einer Gesamtanwendung zusammengestellt werden können. Die Kommunikation erfolgt dabei ausschließlich über den sogenannten Event-Bus, der die Verwaltung der Publisher und Subscriber übernimmt. Die einzelnen Komponenten (wir nennen sie Widgets) können dabei einzeln, testgetrieben entwickelt werden und haben keine inhärenten Abhängigkeiten zu anderen Komponenten innerhalb einer Anwendung. So kann die Entwicklung auf verschiedene Personen oder auch Teams verteilt werden. Die Implementierung eines solchen Widgets kann dabei mit Hilfe von AngularJS, React oder ganz einfachem JavaScript geschehen. Publish/Subscribe hat in einer solchen Anwendung also die Rolle des „Vermittlers zwischen den Welten“.

Ich freue mich, dass auch im Frontend-Bereich eine saubere Architektur an Bedeutung gewinnt und der Browser mit JavaScript als Anwendungsplattform zunehmend akzeptiert wird. Hier ist in den kommenden Jahren mit vielen spannenden Entwicklungen zu rechnen.

5669901351fe10df44e001b1version150sizefullAlexander Wilden has been a passionate web developer for more than a decade and is a JavaScript expert at aixigo AG.
.
Geschrieben von
Hartmut Schlosser
Hartmut Schlosser
Hartmut Schlosser ist Redakteur und Online-Koordinator bei Software & Support Media. Seine Spezialgebiete liegen bei Java-Enterprise-Technologien, JavaFX, Eclipse und DevOps. Vor seiner Tätigkeit bei S & S Media studierte er Musik, Informatik, französische Philologie und Ethnologie.
Kommentare
  1. James2016-02-15 23:23:22

    Es gibt keine Sprache die ich tatsächlich Hasse. Ich denke jede hat so seine Vor- und Nachteile und ihre Eigenheiten aber bei Javascript empfinde ich puren Hass :-)

    Der Grund warum es dennoch interessant ist, ist das man bei der Web Entwicklung nur schwer daran vorbeikommt. Und ich könnte mir vorstellen dass ich nicht der einzige bin der so denkt.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.