PHP vs. Node.js

29. Mai 2017

Veröffentlicht in:

Webentwicklung

PHP vs. Node.js

Was ist eigentlich aus dem einstigen PHP-Killer geworden?

Eine Zeit lang sah es so aus, als würde mit Node.js ein neuer Stern am Himmel der Entwicklungsplattformen aufgehen. Das im Mai 2009 in seiner ersten Version vorgestellte Entwicklungswerkzeug für serverseitige Anwendungen machte am Anfang vieles richtig. Eine Menge Fehler und Unzulänglichkeiten, die PHP zu dieser Zeit mitbrachte, wurden von den Entwicklern strikt vermieden. Vor allem in Sachen Performance zog der neue Star schnell am Platzhirsch PHP vorbei.

Doch PHP ist immer noch da und erfreut sich wachsender Beliebtheit. Im Mai 2017 erst wurde die aktuelle PHP-Version 7.1.5 veröffentlicht. Node.js legte mit der Version 7.10 ebenfalls eine aktuelle Version vor, aber nichtsdestotrotz ist es ruhig geworden um die Entwicklungsplattform, die einst angetreten war, um PHP zu verdrängen.

Wir werfen einen Blick auf Node.js, seine durchaus vorhandenen Vorteile und Fragen uns, warum PHP dennoch das beliebtere Entwicklungstool ist.

Backendentwicklung mit Node.js

Node.js ist eine Softwareplattform zur Entwicklung serverseitiger Netzwerkdienste. Bekannte Projekte, die auf Node.js setzen sind unter anderem die Bloggingsoftware Ghost, das Projektmanagementtool Trello oder das Betriebssystem WebOS, das sich als Nachfolger des legendären PalmOS versteht, dem einstmals beliebtesten Betriebssystem für Handheld-Computer und Organizer. Node.js benötigt zum Betrieb die JavaScript Laufzeitumgebung V8, die von Google eigens für den populären Browser Chrome entwickelt wurde. Dies garantiert eine sehr ressourcensparende Architektur, die Node.js besonders für den Betrieb eines Webservers qualifiziert.

Ryan Dahl entwickelte Node.js aus Unzufriedenheit mit den damals vorhandenen JavaScript und veröffentlichte die erste stabile Version von Node.js am 27. Mai 2009. Ursprünglich nur für den Betrieb auf Linux und MacOS ausgelegt, sind die neueren Versionen sowohl auf Servern mit unixoiden Betriebssystemen als auch auf Windowsservern lauffähig.

Die Basisfunktionalität von Node.js wird seit der ersten Version mit JavaScript abgebildet, die um eine große Zahl verschiedenster Module erweitert werden kann. Die aktuelle Paketverwaltung von Node.js hört auf den Namen "Node Package Manager (NPM)" und kennt etwa 350.000 (Stand 13. Januar 2017) dieser Module.

Vorteile von Node.js

Eine der herausstechenden Eigenschaften von Node.js ist die auf JavaScript basierende ereignisgesteuerte Architektur. Diese hat im Serverbetrieb den Vorteil, weniger Arbeitsspeicher zu verbrauchen, als andere Architekturen. Ein kurzer Vergleich zwischen PHP und Node.js soll diesen Vorteil verdeutlichen:

Eine traditionelle Serveranwendung, wie sie auch mit PHP umgesetzt werden kann, startet für jeden Aufruf eine gesonderte Verbindung. Dies hat zur Folge, dass umfangreiche Anwendungen, die einer Vielzahl an Aufrufen benötigen, eine große Menge an Verbindungen bedürfen. Ist die maximale Zahl an Verbindungen zwischen Server und Client erreicht, wird jeder weitere Aufruf in die Warteschleife gelegt und wird erst dann verarbeitet, wenn der Server wieder eine neue Verbindung aufbauen kann.

Node.js setzt dem einen eventbasierten single threaded Ansatz entgegen. Dies bedeutet, dass mehrere Tausend Anfragen parallel über eine Verbindung abgewickelt werden können. Dazu ist es unabdingbar, dass einzelne Anfragen nicht die Verbindung blockieren, während Sie auf eine Antwort des Servers warten. Aus dieser Architektur resultiert eine wesentliche schnellere Kommunikation zwischen Client und Server im Vergleich mit dem herkömmlichen Ansatz.

Warum hat PHP trotzdem die Nase vorn?

Aus rein technischen Gesichtspunkten betrachtet, gibt es wenige Gründe, das langsamere PHP einer Lösung auf der Basis von Node.js vorzuziehen. Aber manchmal sind es eben nicht nur technische Perfektion, sondern auch Erfahrung und Gewohnheit, auf die es ankommt.

Die PHP-Entwickler erkannten nämlich recht schnell das Potenzial, das die neue Entwicklungsplattform bot, und haben ihrerseits reagiert. Das WebSocket Protokol ist so weit gediehen, dass es seit dem Jahr 2011 von NGINX Server unterstützt wird. Event loops, Callbacks und nicht blockierende Ein- und Ausgaben (non blocking I/Os) sind erfolgreiche Versuche, die Performance PHP gestützter Plattformen deutlich zu verbessern und den Geschwindigkeitsvorteil von Node.js zu egalisieren.

Schließlich verfügt PHP über ein umfangreiches Ökosystem und eine äußerst aktive Entwicklergemeinde, die mit ihrer Erfahrung weiter zur Verbesserung von PHP beiträgt. Der Package Manager "composer" steht als Paradebeispiel dafür. Seit dem 13.04.2012 wurden bis heute (Stand 29. Mai 2017) fast 141.357 Pakete in insgesamt 858.038 Versionen veröffentlicht und 4.756.038.183 mal in diversen Projekten installiert.

Fazit

Mit Node.js schickt sich seit dem Jahr 2009 ein JavaScript-basiertes Entwicklungswerkzeug an, PHP den Rang abzulaufen. Zwar bietet die von Ryan Dahl entwickelte Softwareplattform einige entscheidende Vorteile für die Entwicklung serverseitiger Webanwendungen. Die sich aus der eventbasierten Kommunikation ergebenden Performancevorteile wurden durch Entwicklungen von Event Loops und Callbacks in ReactPHP wieder ausgeglichen, sodass der Großteil der Entwicklergemeinde weiterhin PHP den Vorzug gibt. Nichtsdestotrotz gibt es einige sehr bekannte und leistungsstarke webbasierte Dienste, die Node.js erfolgreich einsetzen.

Können wir weiterhelfen?

Sie haben ein spannendes Projekt und möchten mit uns zusammenarbeiten? Kontaktieren Sie uns jetzt!

Kostenloses Erstgespräch