The Definitive Guide

David Flanagan’s Buch „JavaScript: The Definitive Guide“ ist ein Klassiker. JavaScript war kaum ein halbes Jahr alt, da erschien Ende 1996 der Guide. JavaScript entwickelte sich schnell weiter und es folgte Auflage um Auflage. Das vorläufige Ende bildete die 2011 erschienene und über 1000 Seiten starke 6. Auflage. Das Buch prägte eine Generation von JavaScript-Entwickler:innen. Nun, nach fast 10 Jahren Pause, erschien die 7. Auflage des Klassikers. Letztes Jahr das englische Original, vor etwas über einem Monat die deutsche Übersetzung. Grund genug, den neuen Flanagan unter die Lupe zu nehmen.

Natürlich musste Flanagan sein Buch neu konzipieren. Während es 2011 noch möglich war, JavaScript halbwegs vollständig in einem Buch darzustellen, sieht die JavaScript-Welt 2020 ganz anders aus. Wohl kaum eine andere Sprache hat in den letzten 10 Jahren eine so rasante Entwicklung hingelegt: der Umfang des Sprachkerns und der Browser-API’s ist gewachsen; Node.js und npm haben die JavaScript-Welt revolutioniert; komplexe Frameworks wie Angular, React und Vue.js sind hinzugekommen; mit TypeScript hat sich eine typsichere Spracherweiterung etabliert.

Diese Herausforderung hat Flanagan ausgezeichnet gemeistert. Er hat sich dabei auf vier Teile mit unterschiedlicher Gewichtung und unterschiedlichem Anspruch konzentriert. Im ersten Teil, der mit über 400 Seiten mehr als die Hälfte des Buches ausmacht, wird der JavaScript Sprachkern beschrieben. Hier geht es Flanagan um eine genaue, vollständige und verständliche Darstellung. Komplexe Themen wie Klassen, prototypische Vererbung und asynchrone Programmierung werden von Grund auf erläutert.

Der zweite Teil beschäftigt sich mit JavaScript im Browser. Hier geht es nicht mehr um eine vollständige Darstellung. Zu umfangreich sind die vielfältigen Browser-API’s geworden. Dennoch ist es Flanagan in kaum 170 Seiten gelungen, fast alle dieser API’s im Kern darzustellen. Es werden grundlegende Themen wie DOM, Events und HTTP-Request, aber auch fortgeschrittene wie Webkomponenten, WebSockets, SVG, canvas, Audio-API’s und Web Workers dargestellt. Abgesehen von einigen kleineren API’s (insbesondere für Mobile) ist lediglich das umfangreiche Thema Progressive Web Apps ausgespart. Abgeschlossen wird das Kapitel mit einem anspruchsvollen Beispiel zum Anzeigen der Mandelbrot-Menge. Zum einen sieht man hier einige vorgestellte API’s in Aktion, zum anderen zeigt das gut dokumentierte Beispiel Programmierkunst auf höchstem Niveau.

Der dritte, gut 60 Seiten umfassende Teil ist eine Einführung in Node.js. Er behandelt im wesentlichen den asynchronen Umgang mit Buffern und Streams, das Arbeiten mit Dateien und das Schreiben von Clients und Servern.

Abgerundet wird das Buch mit einem knapp 30 Seiten langen 4. Teil, der einige wichtige JavaScript-Werkzeuge wie ESLint, Prettier und Jest, als auch JavaScript-Erweiterungen wie JSX und Flow vorstellt.

David Flanagan ist die Neuschreibung seines Klassikers gelungen. Die genannte exakte Darstellung des Sprachkerns zusammen mit einem fundierten Überblick über client- und serverseitiges JavaScript überzeugt. Dabei wendet sich Flanagan vor allem an fortgeschrittene Entwickler:innen. Von dem Buch wird man nur profitieren, wenn man schon Grundkenntisse in JavaScript, HTML und CSS besitzt oder wenn man schon andere Programmiersprachen kennengelernt hat. Das Buch konzentriert sich allerdings, anders als der deutsche Untertitel „Das Handbuch für die Praxis“ vielleicht suggeriert, auf die Sprache JavaScript selbst. Wie man JavaScript-Projekte aufsetzt, wird nicht gezeigt. Auch gibt es kein Beispiel-Projekt, mit dem das Erlernte entwickelt wird. Die deutsche Übersetzung von Jørgen W. Lang und Jens Olaf Koch ist ausgezeichnet.

David Flanagan: JavaScript – Das Handbuch für die Praxis. Meistern Sie die beliebte Sprache für Web und Node.js. O’Reilly, 2021, 730 Seiten.

David Flanagan: JavaScript: The Definitive Guide: Master the World’s Most-Used Programming Language. O’Reilly, 2020, 656 Seiten.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.