Nur die wenigsten wussten vor 2009, dass man Java-Script auch serverseitig einsetzen konnte. Erst mit der Veröffentlichung des Frameworks Nodejs wurde die Verwendung von Java auf Serverseite erst richtig publik. Nodejs ist also ein Java Framework, das auf Basis der von Google entwickelten V8-JavaScript-Engine basiert. Diese Engine kommt bekannter Weise in Google’s Browser Chrome zum Einsatz. Der Vorteil hierbei ist, dass reine Javascript-Programmierer sich in Java vertiefen können, ohne noch weitere Programmiersprachen wie PHP oder Ruby für die Serveranwendung hinzuziehen müssten.
Aufbau und Entwicklungsumgebung des Frameworks
Nodejs kann nicht nur als PHP-Ersatz in Java-Gewand angesehen werden. Da es auf einer Event gesteuerten Architektur aufbaut, zeichnet es sich daher durch eine hohe Performance aus. Die hohe Leistung spiegelt sich besonders bei komplexen Echtzeit-Apps wieder, die häufig aktualisiert werden müssen.
Im Gegensatz zu den meisten anderen Frameworks ist Nodejs also nicht Thread-basiert, d.h. die Performance ist nicht abhängig von der Anzahl möglicher Threads und deren synchroner Bearbeitung. Threads würden so sonst andere Prozesse blockieren, wenn sie gerade im Leerlauf sind. Da dies bei einer Runtime-App doch eher hinderlich ist, wurde auf Thread-basierte Operationen verzichtet.
Nodejs läuft in einer Art Endlosschleife, einem einzigen Thread (Event Loop). Alle Tätigkeiten laufen innerhalb des Frameworks über “Callback-Functions” ab. Die meisten internen wichtigen Prozesse laufen also lediglich im Hintergrund ab, während der Event Loop dies registriert und bereits neue Prozesse vorbereitet. Ist der vorangegangene Prozess bereit, werden die finalen Schritte zur Ausgabe des Ergebnisses zusammengestellt. Aus diesem Verfahren ergibt sich der große Kernvorteil von Nodejs. Mehrere Prozesse können quasi ohne Verzögerung gleichzeitig bearbeitet werden, somit sind der Kern des Frameworks und die CPU stets angemessen ausgelastet und werden nicht mit unnützen Warteperioden belastet.
Hochleistungsfähige Runtime-Multi-User-Web-Apps werden möglich, also Anwendungen die von vielen Nutzern gleichzeitig und in Echtzeit verwendet werden.
Die Entwicklungsbibliothek, die übrigens kostenlos heruntergeladen werden kann, ist primär auf Betriebssysteme wie Mac OS X oder Linux ausgelegt, kann jedoch mit einer Cygwin-Umgebung auch für Windows fit gemacht werden. Seit Version 0.6 des Frameworks gibt es ohnehin eine ausführbare Datei unter Windows.
Die Bibliothek ist schlank und modular aufgebaut. Wichtige Kernmodule sind bereits integriert des Weiteren steht mit npm ein leistungsfähiger Paketmanager zur Verfügung, mit dem man das Framework leicht um einige Module erweitern kann (ähnlich Rubygems für Ruby on Rails).
Besonderheiten und Beispiele
Bekannte Beispiele in der tatsächlichen Anwendung sind die bekannten Apps bzw. Spiele wordsquared oder der Texteditor Etherpad Lite. Beide Anwendungen erlauben dank Nodejs die parallel Ein- und Ausgabe vieler Nutzer bei relativ geringerer Serverauslastung.
Neben der hohen Performance und Parallelität von Prozessen zeichnet sich das Framework noch durch eine weitere zentrale Besonderheit aus. Nodejs beinhaltet eine hohe Wiederverwertbarkeit von Quellcode, denn aufgrund der Architektur von Nodejs entfällt das Hinzuziehen einer zweiten Programmiersprache für die Serveranwendung. Java-Entwickler, die bereits clientseitig eine App oder Script entwickelten, können dies nun auch auf Serverseite implementieren. Des Weiteren gilt: Java-Entwickler können zudem bereits vorhandene Java-Bibliotheken wie jsQuery verwenden. Die Limitierung von Java auf die Clientseite wird vollkommen aufgebrochen.

Vor- und Nachteile des Frameworks
Die Vorzüge des Frameworks sind nahezu omnipräsent. Wie kaum ein anderes Framework schafft es Nodejs Konventionen aufzubrechen und neue Möglichkeiten zu schaffen. So ist Java nicht mehr länger auf die Clientanwendung limitiert, das Framwork ist hochleistungsfähig und erlaubt den Zugriff vieler Nutzer auf eine App unter Echtzeitabwicklung.
Nachteile ergaben sich lediglich aus den älteren Versionen, so wurde in Version 0.5 bzw. 0.6 der mangelnde Windows-Support entscheidend verbessert, wodurch die native Windows Version des Frameworks inzwischen schneller ist als der Cygwin-Port.
Ausblick und Fazit
Nodejs dürfte vor allem für aufwändige Apps oder Spiele mit vielen Anwendern für Java-Entwickler von höchstem Interesse sein. Bei gleichzeitig geringer Serverausnutzung ein Spiel anzubieten, das eine Vielzahl Spieler unterstützt, mag der Traum eines jeden Browsergame-Entwicklers zu sein. Aber auch über die Spielewelt hinaus eröffnen sich mit Nodejs interessante Möglichkeiten wie etwa das parallele Arbeiten an Dokumenten im Web.
Die Entwickler von Nodejs planen darüber hinaus die Aktualisierungen ihres Frameworks an die der Google Javascript-Engine V8 immer mehr anzunähern. Version 0.6 mit Unterstützung für V8 Version 3.6.6 ist das beste Beispiel hierfür, besonders Stabilität und Leistung wurden erhöht. Nodejs erweist sich als hochleistungsfähiges Echtzeit-Framework für verschiedenste Anwendung und ist dank seiner fortschrittlichen Architektur zukunftssicher.


One Comment