Interview mit Stefan Scheidt

Gute Wartbarkeit, gute Testbarkeit – trotz JavaScript!
Kommentare

Nächste Woche findet die MobileTech Conference 2014 statt (17. bis 20. März in München). Eingeleitet wird die Konferenz am Montag durch ganztägige Workshops, von iOS-Entwicklung über Android, mobile Vermarktung bis hin zu responsive Design (für Schnellentschlossene: Hier geht’s zum Programm). Stefan Scheidt und Bastian Schramm erstellen in ihrem Workshop „Mobile JavaScript-Web-Apps professionell entwickeln“ Schritt für Schritt eine JavaScript-Webanwendung, die auf gute Wartbarkeit und Erweiterbarkeit ausgelegt ist. Wir sprachen vorab mit Stefan Scheidt über die Herausforderung, JavaScript-Webentwicklung Enterprise-tauglich zu machen.

JavaScript-Entwicklung hat immer noch einen zweifelhaften Ruf – gerade wenn es um Dinge wie Wartbarkeit und Testbarkeit geht. Nun sind dies zentrale Themen in Ihrem Workshop auf der MobileTech Conference – wie kann man diese Enterprise-Werte der Wartbarkeit, Erweiterbarkeit und Testbarkeit auf JavaScript überragen?

Stefan Scheidt: Als erstes ist es wichtig, sinnvolle Praktiken wie testgetriebene Entwicklung und das kontinuierliche Pflegen des Sourcecodes im Sinne von Clean Code auch auf die JavaScript-Entwicklung anzuwenden – dass heißt, es „einfach“ zu tun. Dafür muss man sich natürlich mit den Besonderheiten der Programmiersprache und der Laufzeitumgebung auseinandersetzen. Mittlerweile gibt es eine Vielzahl von Test-Frameworks, Test-Runnern und dokumentierte Best Practices für eine testgetriebene JavaScript-Entwicklung. Des weiteren muss man sich natürlich mit der idiomatischen Anwendung von JavaScript vertraut machen und lernen, wie man beispielsweise Prototyp-basierte Objekt-Vererbung, vor allem aber die funktionalen Aspekte von JavaScript im Sinne von Wartbarkeit und Erweiterbarkeit einsetzt. Letztendlich muss man hier aber – wie bei allem anderen auch – Erfahrungen sammeln und mit der Zeit erkennen, was gute und was schlechte Lösungen für ein gegebenes Problem sind.

Sie verwenden AngularJS – was ist damit möglich?

Stefan Scheidt: AngularJS sieht sich als „Full-Stack-Framework“ für die Entwicklung eines Browser-basierten Client. Es konzentriert sich in erster Linie darauf, ein sinnvolles Rahmenwerk für den JavaScript-Code bereit zu stellen. Mit der Bereitstellung eines Dependency-Injection-Containers, dem Support für MVC mit der Möglichkeit, das Presentation Model durch „Plain Old JavaScript Objects“ zu implementieren, sowie einem Vorrat von direkt einsetzbaren „Services“, die dem Entwickler das Leben vereinfachen, erinnert es mich stark an das Spring-Framework aus dem Enterprise-Java-Umfeld. Hier wie dort liegt auch ein Hauptaugenmerk darauf, sehr gut testbare Lösungen zu implementieren. Eine Besonderheit von AngularJS ist das Konzept der Direktiven, die es ermöglichen, HTML um eigene, domänenspezifische Elemente und Attribute zu erweitern. 

Wie verändert der HTML5-Standard die Webentwicklung? Kommen wir bald zu einem „Native App“-ähnlichen Ergebnis?

Stefan Scheidt: Die Möglichkeiten, die insbesondere aktuelle JavaScript-APIs in modernen Browsern bieten, zusammen mit der enormen Geschwindigkeit, mit der heutzutage JavaScript-Engines Code ausführen, machen „Rich Web Apps“ für mich auf Desktops zum Defakto-Standard für Cross-Platform-Apps und machen native Apps dort in vielen Fällen obsolet. Interessant wird sicherlich zu beobachten, wie sich diese Entwicklung beispielsweise durch Chrome Apps fortsetzt, und ob wir bald auch auf Desktop-Rechnern zunehmend Hybrid-Apps vorfinden werden (Stichworte „node-webkit“, „Lighttable“ oder „Atom Text Editor“). Im Bereich mobiler Apps ist die Lage meiner Ansicht nach aber noch unklar.

Es herrscht ja immer der Meinungskrieg: mobile Webanwendungen versus native Apps. Was macht aus Ihrer Sicht in welchen Szenarien Sinn?

Stefan Scheidt: Eine schwer zu beantwortende Frage. Der Einsatz von Web-Techniken für die Entwicklung von mobilen Cross-Platform-Apps bietet sich sicherlich an, wenn es „nur“ moderate Anforderungen an eine authentische Umsetzung des jeweils Plattform-spezifischen Look und vor allem Feels gibt. Oder, wenn der Einsatz der App „angeordnet“ werden kann. Wenn ein kritischer Erfolgsfaktor für eine App aber ist, dass sie Endnutzern „gefällt“ und sie „gerne“ und „oft“ genutzt wird, so muss man schon erheblichen Aufwand investieren, um dies mit einer Web-App zu gewährleisten. Man darf auch das dafür notwendige Wissen über mobile Web-Entwicklung einerseits und Plattform-Spezifika andererseits bei den Entwicklern nicht unterschätzen. Ferner muss man vorsichtig sein, wenn man schnell neue Features der spezifischen Plattformen unterstützen können möchte. Ganz persönlich glaube ich, dass es noch sehr lange gute Gründe für native App-Entwicklung geben wird und man zunehmend nach Anwendungsfall-spezifischen Hybrid-Lösungen Ausschau halten wird.

Immer mehr Funktionen, die ehemals auf dem Server angesiedelt waren, verlagern sich auf den Browser. Was bedeutet das für traditionelle Enterprise-Technologien?

Stefan Scheidt: Offenbar haben sich REST-artige APIs bzw. JSON-APIs als Server-seitige Schnittstelle für Mobile Apps durchgesetzt. Solche Schnittstellen müssen von Enterprise-Backend-Systemen schnell und gut bereitgestellt werden können. Dabei sind aber Besonderheiten mobiler Clients zu beachten. Häufig führen Performance-Anforderungen bei der Datenübertragung hin zu mobilen Clients mit geringer Bandbreite und hoher Latenz dazu, dass der Client bestimmt, wie die API auszusehen hat. Es genügt dann nicht, eine generische API bereit zu stellen, sondern man benötigt stattdessen Adapter für die unterschiedlichen Clients und deren speziellen Anforderungen. Ferner gilt es, verschiedene Versionen der Clients zu unterstützen. Man kann die Nutzer mobiler Apps ja nicht dazu „zwingen“, die jeweils neuste Version der Apps zu verwenden – auch wenn Auto-Update-Features der Plattformen dieses Problem mit der Zeit relativieren werden. Schließlich ist das Thema „Sync“ sicherlich eines, das zunehmend mehr Beachtung finden wird. Ich glaube daher, dass der „Freiraum“, der sich durch die Verlagerung von Funktionalität auf der Server-Seite ergibt, sehr schnell durch neue Aufgaben eingenommen wird.

Vielen Dank für dieses Gespräch!

Stefan ScheidtStefan Scheidt ist Solution Architect im Bereich Application Engineering bei der OPITZ CONSULTING GmbH. Er beschäftigt sich seit mehreren Jahren mit Architektur und Implementierung von Enterprise-Applikationen. Seine Schwerpunkte sind Enterprise Java, testgetriebene Entwicklung und Mobile Computing. Er ist Co-Autor des Buchs „Mobile Web-Apps mit JavaScript“, Autor von Fachartikeln und regelmäßig Sprecher auf Konferenzen. Sessions auf der Mobile Tech Conference 2014 (17. bis 20. März): Mobile JavaScript-Web-Apps professionell entwickeln

Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -