PHP vs. Node.js – ein Vergleich

php vs node.js

Wann eignet sich PHP und wann wählt man Node.js?

Eine Zeit lang wurde Node.js als Newcomer unter den Entwicklungsplattformen hoch gehandelt. Das im Mai 2009 in seiner ersten Version vorgestellte Entwicklungswerkzeug für serverseitige Anwendungen trat an, um Probleme und Unzulänglichkeiten, die PHP zu dieser Zeit mitbrachte, zu beseitigen. Vor allem in Sachen Performance zog Node.js zunächst schnell am Platzhirsch PHP vorbei.

Doch Node.js hat PHP keinesfalls abgelöst, denn es ist nach wie vor nicht aus der Web-Entwicklung wegzudenken und erfreut sich sograr wachsender Beliebtheit. Gerade erst im März 2018 wurde die aktuelle PHP-Version 7.2.4 veröffentlicht. Node.js legte mit 8.11 ebenfalls eine aktuelle Version vor, aber es ist allgemein ruhig geworden um die Entwicklungsplattform, die einst angetreten war, um PHP zu verdrängen.

Wir werfen einen Blick auf Node.js und auf PHP und beleuchten die Vorteile und zweckmäßigen Anwendungsfälle der beiden Tools.

PHP und Node.js ein Überblick

Auch wenn sich beide Plattformen, PHP und Node.js, für Anwendungen jeglicher Komplexität eignen, verfolgen sie grundsätzlich verschiedene Konzepte und verwenden unterschiedliche Architekturen. Bei der Wahl für eine der beiden Entwicklungs-Plattformen für die Entwicklung einer Applikation ist es entscheidend, die jeweiligen Vorteile aber auch Grenzen zu kennen.

Natürlich sind Node.js und PHP allgemein zwei gleichermaßen verbreitete Web-Entwicklungstools. PHP ist eine Skript-Sprache, die bereits seit 1994 im Web Anwendung findet. Rasmus Lerdorf hat damit eine der wegweisendsten Sprachen der Web 1.0 Ära kreiert. Auch heute ist PHP aus dem Web nicht wegzudenken. Content Management Systeme (CMS) wie WordPress, TYPO3, Drupal oder Joomla und die Millionen mit diesen Systemen betriebenen Websites kommen nicht ohne PHP aus. Node.js ist im Gegensatz zu PHP keine Sprache, sondern ein Runtime Environment (RTE), eine Laufzeitumgebung, das JavaScript für die Entwicklung von serverseitigen Applikationen verwendet. Zudem ist es noch ein echter Youngster unter den Entwicklungsplattformen. Es wurde erst 2009 veröffentlicht und hat seit dem die Stärke von JavaScript für das Erstellen von eventbasierten, datengetriebenen sowie I/O (Input/Output) Applikationen im Web hinreichend demonstriert.

Ein kurzer Vergleich zwischen PHP und Node.js

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 eine Vielzahl an Aufrufen generieren, eine große Menge an Verbindungen aufbauen. 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 wesentlich schnellere Kommunikation zwischen Client und Server.

Einige weitere Details zu Node.js

Node.js ist eine Softwareplattform zur Entwicklung serverseitiger Netzwerkdienste. Bekannte Projekte, die auf Node.js setzen, sind unter anderem die Blogging-Software 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, der Entwickler von Node.js, veröffentlichte die erste stabile Version am 27. Mai 2009. Er entwickelte Node.js aus Unzufriedenheit mit den damals vorhandenen Möglichkeiten, die JavaScript bot. Ursprünglich nur für den Betrieb auf Linux und MacOS ausgelegt, sind die neueren Versionen allerdings sowohl auf Servern mit Unix-Betriebssystemen als auch auf Windows-Servern 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 kennt etwa 400.000 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.

Schnelle server-seitige Lösungen

Node.js macht sich den JavaScript „event-loop“ zu eigen, um nicht-blockierende I/O-Anwendungen zu erstellen, die bequem multiple, gleichzeitige Events bedienen. Mit der standardmäßig verfügbaren asynchronen Verarbeitung innerhalb JavaScript, können hochskalierbare, serverseitige Lösungen gebaut werden, die die einzelne Nutzung der CPU und des Arbeitsspeichers maximieren und zudem mehr gleichzeitige Requests verarbeiten als konventionnelle Multi-Thread Server.

Eine Sprache entlang des gesamten Stacks

Vielfach eingesetzte Frameworks wie Ember, React und Angular sind in JavaScript geschrieben – auch die Hauptsprache moderne Browser. Wird nun Node.js serverseitig verwendet, kann man alle Vorzüge einer einheitlichen Skript-Sprache über die gesamt Anwendungsentwicklung nutzen. Die gleiche Sprache im Back- und Frontend vereinfacht die Wartung der Applikation und auch die Koordination innerhalb des Entwickler-Teams.

Flexibilität

Node.js setzt sehr wenig strikte Abhängigkeiten, Regeln und Richtlinien und gewährt so ein hohes Maß an Flexibilität in der Anwendungsentwicklung. Es gibt keine strengen Konventionen vor, so dass für die Entwicklung die geeignete Architektur, Design-Strukturen, Module und Features frei gewählt werden können.

Vorzüge von PHP

Nicht nur die Technik sollte bei der Wahl der geeigneten Plattform ausschlaggebend sein, sondern auch Erfahrung und Nutzwert. PHP verfügt über ein umfangreiches Ökosystem und eine äußerst aktive Entwicklergemeinde, die mit ihrer Expertise weiter zur Verbesserung von PHP beiträgt.

So ermöglicht das Web-Socket Protokol bereits seit dem Jahr 2011 die Unterstützung von NGINX Servern. 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.

Weitreichende Code Basis

PHP wartet mit einer umfangreichen Code Basis auf. Dazu gehören vielfach eingesetzte Content Management Systeme (WordPress, Joomla, Drupal) und Web-Frameworks (Laravel, Symfony), die eine schnelle und sichere Anwendungsentwicklung ermöglichen. Hinzukommen noch zahlreiche in PHP geschrieben Open-Source-Lösungen und eine starke Entwickler-Community dahinter.

Kompatibilität

PHP punktet auch mit Kompatibilität. Es läuft fast auf jeglichem Server (Apache, Nginx) und auch auf jeder Plattform (Linux, Windows). Code muss also nur einmal geschrieben werden und kann dann problemlos in jede Umgebung implementiert werden. Außerdem wir für PHP auch weitläufiger Hosting Support angeboten, das die Integration und Ausrollen von PHP Anwendungen deutlich vereinfacht, da nicht zwingend wie für Node.js ein SSH-Zugang, Konsole und Linux-Umgebung benötigt wird.

Für das Web gemacht

Im Gegensatz zu Java und anderen allgemein gebräuchlichen Programmiersprachen, wurde PHP gezielt für Web-Anwendungen konzipiert. Alle notwendigen Funktionalitäten, um HTML, Server und Datenbank (MySQL) zu managen, bringt PHP bereits mit. Mit der serverseitigen Verfügbarkeit von PHP, entfällt auch die Verarbeitung von JavaScript im Browser, denn alle Seiten können einfach auf dem Server generiert und gerendert werden.

PHP oder Node.js – Überlegungen bei der Auswahl

Node.js eignet sich dank der asynchronen und eventbasierten Architektur besonders für sogenannte Real Time Applications (RTA) wie Messenger-Anwendungen oder Anwendungen, die der Kollaboration dienen. Denn hier werden viele gleichzeitige Requests verarbeitet und Daten werden beständig zwischen Server und Client hin- und hergesendet. Auch die „Publish-Subscribe“ Architektur von RTA’s lässt sich mit Node.js mittels Web-Sockets und serverseitigen Events einfach implementieren und die Client-Ansicht aktualisiert sich entsprechend schnell. Das macht Node.js auch eine gute Wahl für Anwendungen die IoT (Internet of Things) Daten verarbeiten oder Single-Page Applikationen (SPA), die flexible, dynamische und Client-seitige Funktionalitäten bieten.

PHP stellt für standardisierte Lösungen, wie Website, Blog, Landingpage oder Web-Portale und viele Individual-Anwendungen, stets eine solide Wahl dar. PHP bietet zudem in Bezug auf den Hosting Support deutlich mehr Flexibilität, wenn der Kunde anstatt einer vollumfänglichen virtuellen Instanz nur ein Shared Hosting zur Verfügung stellen kann.

Ausschlaggebend für die Wahl zwischen PHP und Node.js ist also vor allem die Art der zu erstellenden Anwendung und welche weiteren Rahmenbedingungen für die Entwicklung gesetzt sind.