Suche
Interview mit Robin Böhm

“Angular 2 wird sein ganzes Potential wohl erst in einigen Jahren entfalten können”

Hartmut Schlosser
566a99e451fe10df44e00255version186sizefull

Robin Böhm

AngularJS ist derzeit zweifelsohne eines der populärsten JavaScript-Frameworks. Doch weshalb eigentlich? Was hat Angular, was andere JavaScript-Frameworks nicht haben? Sollte man jetzt überhaupt noch Anwendungen mit Angular 1.x bauen? Und wann können wir mit einem Release von Angular 2 rechnen? JavaScript-Experte Robin Böhm gibt Einblicke in den Stand der Dinge bei Angular 2.

Warum AngularJS aus der Menge der JavaScript-Frameworks heraussticht

JAXenter: AngularJS ist derzeit ungemein populär – sowohl Version 1.x als auch Version 2, die sich gerade in Entwicklung befindet. Wo liegen aus deiner Sicht die Stärken von Angular gegenüber anderen JS-Frameworks?

AngularJS hat die Webentwicklung auf ein ganz anderes Level gehoben.

Robin Böhm: Dazu muss ich kurz einen kurzen Rückblick geben. Als wir vor mehr als 4 Jahren mit AngularJS.DE angefangen haben, waren wir gefühlt die Einzigen in Deutschland, die sich mit dem Framework beschäftigt haben. Der Hype war noch überhaupt nicht abzusehen.

Zu dieser Zeit war jQuery noch die Basis des Webs. jQuery hatte aber nie den Anspruch, ein Framework für Web-Anwendungen zu sein. Der eigentliche Sinn war, die APIs der verschiedenen Browser zu vereinheitlichen.

Man musste sich deshalb immer eine eigene Architektur überlegen. Allerdings fehlte die Erfahrung, wie man große Applikationen im Web schreibt. Das führte natürlich oft zu Chaos und unwartbaren Projekten. Frameworks wie Backbone boten zwar die Möglichkeiten dazu, allerdings war dieser Layer auch viel zu dünn. Man hatte nur einen winzigen Kern (ca. 7kb) und beim Rest musste man sich wieder selbst entscheiden (und hatte genügend Möglichkeiten, Entscheidungsfehler zu machen).

Mit AngularJS gab es dann zum ersten Mal ein Komplettpaket, um Single-Page-Applications (SPA) zu bauen. Dabei wurden viele Dinge richtig gemacht:

  • Mir als Entwickler werden viele triviale Entscheidungen abgenommen. Folglich passieren mir weniger Fehler.
  • Das Framework ist nicht nur extrem gut mit Tests abgedeckt, sondern das Testen meiner eigenen Applikation wird mir sehr einfach gemacht. Die Wartbarkeit wird dadurch enorm erhöht.
  • Ich kann normale JavaScript-Objekte verwenden und muss keine Wrapper schreiben. Ich muss weniger Code schreiben und kann externe Bibliotheken ohne Wrapper benutzen.
  • HTML wird erweitert, statt eine neue Template-Sprache einzuführen. Ich muss also nicht mein ganzes HTML-Wissen über Bord schmeißen, sondern kann darauf aufbauen.
  • Ich beschreibe mein Layout deklarativ. Wenn ich also neue Daten habe, muss ich nicht selbst sagen: Suche mir die Liste, guck wo das letzte Element ist, erzeuge aus Daten und Template ein neues Listenelement, füge das Element ein. AngularJS übernimmt das für mich.

Durch HTML-Komponenten ist die Zusammenarbeit mit Designern ebenfalls viel einfacher geworden. Dank AngularJS ist Anwendungsentwicklung im Web auf ein ganz anderes Level gehoben worden. Natürlich ist AngularJS nicht der Hammer, mit dem man jedes Problem erschlagen kann. Auch hier muss man genau überlegen, ob für den Anwendungsfall das Framework oder gar eine SPA die richtige Lösung ist. Wir haben auch immer wieder Teilnehmer in unseren Workshops, mit denen wir diese Fragen durchgehen und zusammen einschätzen, ob die bevorstehenden Aufgaben mit diesem Framework optimal gelöst werden können oder eine Alternative besser geeignet ist.

 

 

JAXenter: Nun wurde AngularJS 2009 ins Leben gerufen – seitdem hat sich in der Welt der Webentwicklung viel getan. Was sind für dich die entscheidenden Veränderungen, die AngularJS 1.x nicht mehr zeitgemäß erscheinen lassen?

Robin Böhm: Ich finde AngularJS ist aktuell absolut zeitgemäß. Wenn ich heute eine Anwendung anfangen müsste, die zeitnah in Produktion gehen soll, würde ich mich immer für Angular 1.X entscheiden. Es nutzt die aktuellen Fähigkeiten der Browser sehr gut aus und ermöglicht schnelle und qualitative (testgetriebene) Entwicklung. Ähnlich wie AngularJS 2009 zielt auch Angular 2 auf die Zukunft und viele Standards, die noch kommen bzw. implementiert werden.

Somit wird Angular 2 sein ganzes Potential wohl auch erst in einigen Jahren entfalten können. Wenn man jedoch erst heute damit anfangen würde, ein Framework für heute zu bauen, ist es bereits veraltet, wenn es fertig ist. Jedoch haben sich in den letzten Jahren einige Best-Practices herauskristallisiert, die man beim aktuellen AngularJS beachten sollte. Ich empfehle z.B. sehr, sich die Component-Funktion von AngularJS 1.5 anzuschauen. Diese ist eine Art “Best-Practice-Wrapper” für Direktiven. Wenn man dazu noch seinen Controller klein hält und die Business-Logic sauber in Services implementiert, ist man damit auf einem sehr guten Weg. Dieser ermöglicht es dann, relativ einfach zu anderen Frameworks zu wechseln, egal ob Angular 2 oder auch zu anderen Frameworks wie React.

AngularJS 1 versus AngularJS 2

JAXenter: Es wird derzeit fleißig an AngularJS 2.0 gearbeitet. Wo liegen die Hauptunterschiede zu Angular 1.x?

Der offensichtlichste Unterschied zwischen Angular 1 und 2 ist TypeScript.

Robin Böhm: Der offensichtlichste Unterschied liegt wohl in der Sprache, in der das Framework entwickelt wird. Das Team hat sich entschieden, Angular 2 in TypeScript zu entwickeln. Dies ermöglicht strikte Typisierung, was enorm zur Wartbarkeit von Projekten beiträgt. Da heute jedoch fast alle Browser noch mit ECMAScript 5.1 laufen, wird dies auch wieder zurück zu ES5 kompiliert, um es heute schon lauffähig zu machen. Weitere Neuerungen wie Decorators (ähnlich wie Annotations), Klassen und Interfaces werden viele Entwickler aus Programmiersprachen wie Java und C# viel leichter abholen.

Da Angular 2 eine komplette Neuentwicklung ist, hat sich auch “unter der Haube” einiges getan. Wie in jedem Projekt werden nicht nur sinnvolle Entscheidungen getroffen, bzw. sind sie später in anderen Anwendungsfällen, an die nicht gedacht wurde, nicht mehr optimal. So sind auch einige Implementierungen in AngularJS historisch gewachsen und wurden komplett überdacht. Dazu hat sich das Team mit den Entwicklern von z.B. Ember und React zusammengesetzt, um sich auch über gute und schlechte Entscheidungen in anderen Frameworks auszutauschen und zu lernen.

Daraus resultiert nun unter anderem, dass es ein Werkzeug mit dem Namen ng-cli geben wird. Dieses Werkzeug gibt dem Entwickler direkt eine Ordnerstruktur vor und generiert sogar die Container für Tests. In AngularJS 1 gibt es hierzu aktuell ein etwa 30 Seiten langes Dokument, das durch die Community immer wieder aktualisiert und erweitert wird. Da es kein Werkzeug gibt, das dafür gut genug funktioniert, macht es jeder anders. Durch die Vorgabe vom Core-Team, wie die Aufteilung an dieser Stelle aussieht, kann man dem Entwickler wieder viele “Wie?”-Fragen abnehmen und mehr Zeit in die wirklich fachlichen Problemlösungen stecken.

JAXenter: Wie sieht es mit Angular 1.x-Anwendungen aus? Kommen diese mit dem Erscheinen von AngularJS 2.0 in den Zugzwang, migrieren zu müssen?

Robin Böhm: Also generell wird an AngularJS aktuell ja noch sehr stark weiterentwickelt. Wie du schon sagtest, ist es aktuell DAS Framework zum Entwickeln von SPAs. Die aktuellen Versionen werden dazu auch immer weiter an Angular 2 angelehnt. Hiermit wird man also sicher noch einige Zeit problemlos arbeiten können. Wenn man jedoch ein Projekt hat, das sich kontinuierlich um Komponenten erweitert, sollte man sich den neuen Component-Router ansehen. Dieser ermöglicht es, AngularJS und Angular 2 parallel in einer Anwendung zu benutzen. Somit muss man nicht alles wegschmeißen, sondern kann neue Komponenten in Angular 2 entwicklen und/oder alte sanft ablösen/migrieren.

AngularJS 2 – wie steil ist die Lernkurve?

JAXenter: Nun hat Martin Probst vom AngularJS-Team kürzlich in einem JAXenter-Interview angedeutet, dass AngularJS-1.x-Entwickler für Angular 2 im Grunde alles neu erlernen müssen. Wie hoch würdest du die Lernkurve für erfahrene Angular-1.x-Entwickler einschätzen?

Robin Böhm: Es ist sehr vieles neu, ja. Wer sich aber heute schon mit Angular 1.5 beschäftigt oder generell mit komponentenbasierter Architektur, ist bei den Meta-Konzepten auf jeden Fall schon im richtigen Denkmodell. Konzepte wie Dependency Injection sind ebenfalls wiederverwendbar, allerdings bietet das Framework hierbei nun deutlich mehr Möglichkeiten. Das Denken in Klassen und Paketen ist in der JavaScript-Welt neu, jedoch generell sehr ähnlich zu bekannten Konzepten aus anderen Programmiersprachen.

Es gibt sicherlich einiges zu lernen, aber nichts, wovor man Angst haben müsste.

Es gibt also sicherlich einiges zu lernen, aber nichts, wovor man Angst haben müsste. Das Problem ist immer gleich: Wie unterscheide ich bei den eintausend Online-Ressourcen, was wirklich der richtige Weg für mein Problem ist, und wie füge ich das Wissen aus verschiedensten Stellen des Webs als korrektes Wissensmodell zusammen. Gerade, da es aktuell so viele Artikel für die verschiedenen Alpha- und Beta-Versionen gibt. Aus diesem Grund entscheiden sich auch viele Teilnehmer für unsere Workshops, um dort konzentriertes Wissen aus Praxiserfahrung zusammenhängend erklärt zu bekommen. Das ist immer die Entscheidung zwischen mehreren Wochen Wissen im Web suchen und verbinden, oder sich doch die Zeit sparen und von erfahrenen Leuten helfen lassen.

JAXenter: Und dann natürlich die abschließende Frage nach dem Release-Termin: Gibt es denn schon Neues dazu, wann wir das finale Angular 2 benutzen können?

Robin Böhm: Ich hab meine Glaskugel gerade nicht dabei. Es tut sich sehr viel. Vieles ist aber definitiv auch noch nicht fertig. In unserem öffentlichen monatlichen Angular 2 Workshop merken wir auch immer wieder, dass viele Stellen noch nicht “production ready” sind, wenn die Teilnehmer verschiedenste Dinge ausprobieren. Der Kern wird aber immer stabiler und benutzbarer. Ich hoffe, dass es 2016 sein wird – es ist sehr wahrscheinlich. Aber garantieren kann es niemand.

566a99e451fe10df44e00255version186sizefullRobin Böhm ist leidenschaftlicher Softwareentwickler, Berater und Autor im Bereich Webtechnologien und speziell Enterprise JavaScript. Er beschäftigt sich seit einigen Jahren intensiv mit der Erstellung clientseitiger Cross-Plattform-Webapplikationen und unterstützt Unternehmen sowohl bei der Aus- und Fortbildung von Mitarbeitern als auch bei der Umsetzung von Projekten. Weiterhin ist er Mitgründer und Geschäftsführer der Symetics GmbH und betreibt gemeinsam mit Sascha Brink das Portal AngularJS.DE. Zusammen mit Philipp Tarasiewicz hat er das Buch „AngularJS – Eine praktische Einführung in das JavaScript-Framework“ (dpunkt.verlag) geschrieben.

Geschrieben von
Hartmut Schlosser
Hartmut Schlosser
Hartmut Schlosser ist Redakteur und Online-Koordinator bei Software & Support Media. Seine Spezialgebiete liegen bei Java-Enterprise-Technologien, Eclipse, ALM und DevOps. Vor seiner Tätigkeit bei S & S Media studierte er Musik, Informatik, französische Philologie und Ethnologie.
Kommentare

Hinterlasse eine Antwort

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