Javascript on the Server Using Node.js and Express

javascript_on_the_server

5star

Das Buch ist eine ebenso kurze wie günstige und gelungene Einführung in die serverseitige Javascript-Technologien, womit zumindest bisher vor allem Node.js gemeint ist.

Ich bin wohl genau die Zielgruppe für dieses Buch. Es setzt sowohl Javascript- als auch Konzepte der serverseitigen Entwicklung voraus und ist damit eine idealer Einstieg für JEE-Entwickler in die Materie.

Paypal-Vergleich. Bericht

 

Es ist schon durchaus ein Erlebnis. Durchgehend Javascript/JSON ohne die Mappings von HTML zu Java, zu SQL

Das man bei entsprechender Übung hier die von Paypal angegebenen Einsparungen erreichen kann, scheint mir glaubhaft zu sein.

Ich werde selbst für eigene (und damit immer ‘kleinere’ Projekte) in Zukunft genau in Betracht ziehen. Als Übungsprojekt habe ich mir eine Node-Version meiner Profilverwaltung gebaut.

 

Ich habe mir für wenige Euro die Kindle-Version zugelegt.

 

Activiti in Action

book_activiti Activiti in Action
Tijs Rademakers
Manning
July 2012
5star

Activiti ist neben jBPM und Bonita BPM eine der drei bekanntesten Workflow Engines im Open Source-Bereich, die auf Java basieren. Übrigens wurde es vom gleichen Entwickler initiiert wie auch jBPM.

Mit Activiti lassen sich Workflows auf Basis von BPMN2 designen, implementieren und ausführen. Dabei gibt es zwei grundlegende Ansätze:

1. Standalone

Activiti kann Standalone betrieben werden. Mit dem Activiti Designer, einem Eclipse-Plugin, werden BPMN-Diagramme erstellt und mit weiteren Artefakten (Code, Skripte, Formulare) verknüpft. Der Activiti Explorer ist die Laufzeitumgebung für die Workflows. Es ist ein einfaches WAR, das neben der eigentlichen Engine auch ein Webanwendung enthält. Dort lassen sich die im Designer erstellten Artefakte installieren und einzelne Prozesse starten. Enthält der Prozess auch User Tasks, dann sehen angemeldete User diese in ihrem Eingangskorb und können sie bearbeiten.

Oft benötigen einzelne User Tasks zusätzliche Angaben und damit Formulare. Im ersten Schritt kann man die Formularfelder direkt als zusätzliche Angaben in das BPMN-Diagramm mit einbauen. Reicht das nicht aus und man benötigt ausgefeilterte Formulare, dann bietet Activiti die Möglichkeit an, mit VAADIN-Technologie ausgefeiltere Formulare zu bauen, die dann im Activiti-Explorer, der selber eine VAADIN-Anwendung ist, mitgerendert werden. VAADIN ist eine auf GWT basierende MVC-Technologie.

2. Integration in eine JEE-Anwendung

Häufiger wird aber vermutlich die Integration von Activiti in eine Java-Anwendung sein, die Workflowfunktionalität braucht. Für die prominentesten Kandidaten sind dafür jeweils eigene Kapitel im Buch vorgesehen:

  • Spring, JPA (Integration in eine bestehende serverseitige Anwendung)
  • Camel, Mule (Verwendung der Workflow Engine innerhalb einer EAI- oder ESB-Umgebung)
  • Drools (Anwenden von komplexen und sich ändernden Business Rules innerhalb der Prozesse)
  • LDAP (externe Benutzerverwaltung mit einem User Repository)

Der Text des Buches ist sehr gut lesbar und es tauchen selten Verständnisschwierigkeiten wegen fehlender Beschreibung von Zwischenschritten oder der Verwendung von noch gar nicht beschriebenen Mechanismen auf. Es wird auf viele wichtige Themen für den Entwickler und auch für den Adminstrator eingegangen. Der Sourcecode der Beispiele, die man online herunterladen kann, ist lauffähig.

Das Buch ist schon beinahe 2 Jahre alt und damit für IT-Verhältnisse schon wieder leicht angestaubt. Obwohl es seitdem keine neue Major-Version gegeben hat, sind einige Beschreibungen nicht mehr aktuell. So hat sich z.B. die Verzeichnisstruktur des Gesamtpaketes geändert und das Installationskapitel gilt deswegen nicht mehr.

Framework und Buch gefallen mir sehr gut. Nach ein paar Stunden Abendlektüre habe ich mit beider Hilfe an einem Wochenende eine kleine webbasierte ToDo-Liste gebaut, bei der sich die User gegenseitig die Tasks zuweisen können. Hat Spaß gemacht. Wenn ich da an meine ersten Gehversuche mit jBPM vor einigen Jahren zurückdenke, in denen ich auch nach tagelanger Tüftelei zu keinem einzigen konkreten Ergebnis gekommen bin :-(

RESTful Java with JAX-RS 2.0

book_restful_java RESTful Java with JAX-RS 2.0
Bill Burke
O’Reilly Media
November 2013
5star

Das Buch ist eine aktualisierte Version für JAX-RS 2.0, die doch etliche Änderungen mit sich bringt. Der Autor Bill Burke ist Mitglied der Expert Group von JAX-RS und hat entsprechend viel zu sagen. Deswegen geht es auch sofort und ohne Umschweife los.

Kurze Einführung in Rest und Konzepte

Nicht das Nötigste, aber alles Notwendige.

Der Autor Bill Burke formulariert klar und präzise – was ja nicht unbedingt als spezifische Stärke von Informatikern gilt.

Die Doku-Lage bei den mir bekannten Paketen Restlet und RESTEasy ist sehr gut und ausführlich. Dort sind neben den konkreten Implementierungen des Standards dann auch noch die Eigenheiten und Erweiterungen der Pakete beschrieben. Ein wichtiges Thema ist dabei immer die Integration anderer Frameworks (die üblichen Kandidaten wie Spring, Hibernate, etc.). Deswegen könnte es günstiger sein, wenn man sich stattdessen das wie ich finde konzeptionell sehr gute Buch RESTful Web Services Cookbook vom gleichen Verlag und die Doku der Pakete als Arbeitsgrundlage anlegt. Trotzdem stellt das Buch einen guten Kompromiss zwischen Konzepten und der tatsächlichen Umsetzung dar.

Das eBook hat gegenüber der gedruckten Version den Vorteil der Mehrfarbigkeit, was die Code-Beispiele doch schneller lesbar macht. Mittlerweile lege ich mir kaum noch Hardcopies zu und verwende fast ausschließlich eBooks oder lese auf Safari Online.

Mastering Web Application Development with AngularJS

book_angular Mastering Web Application Development with AngularJS
Pawel Kozlowski, Peter Bacon Darwin
Packt Publishing
August 2013
4star

AngularJS ist ein noch recht neues Javascript Framework, um Single Page Apps zu bauen. Dabei geht es im harten Kern um DOM-Manipulationen. Das Erstaunliche an AngularJS: man hat damit überhaupt nichts zu tun. AngularJS schirmt den Entwickler komplett von dieser Arbeit ab. Er holt sich Datenobjekte (etwa per XHR) und bindet diese mittels sogenannter Direktiven (spezielle HTML-Attribute) an DOM-Elemente. Im Beispiel hier etwa, wird eine Liste mit der Direktive ng-repeat gefüllt.

Das Ganze fühlt sich an wie Visual Basic-Entwicklung anno 2000. Und diese Datenbindung funktioniert erstaunlich gut. Fügt man etwa im Model ein weiteres Objekt in die Liste ein, dann erkennt AngularJS die Änderung und baut sofort die View neu auf.

  • schirmt DOM fast komplett ab.
  • mit dem kompletten Javascript-Stack (Node.js, MongoDB) ungemein produktiv

Im Buch wird ein Projektmanagementapp erwähnt, die im Laufe des Buches gebaut werden soll, was aber tatsächlich nie gemacht wird.
und hat deutlich Mehrwert gegenüber der Projekt-Dokumentation.
auch wenn das Buch natürlich nicht immer auf alle Details eingehen kann und man für Vieles diverse andere Quellen heranziehen muss.

Das ist vielleicht ärgerlich, aber für mich letztlich trotzdem nachvollziehbar. Niemand kann in unserer kurzlebigen Zeit für so ein Buch genügend Aufwand stecken, um alle Fehler und Unstimmigkeiten zu bereinigen. Es würde nur die Veröffentlichung verzögern.

Entwickler, die bisher eher Serveranwendungen geschrieben haben und sich dort auch
Javascript-mäßig sollte man schon vor dem Lesen des Buchs aufgerüstet haben.

Es ist absolut verblüffend, was Javascript-Freaks in gerade einmal gut 100K Skript packen. AngularJS ist für mich die erste Wahl, wenn es um SPAs geht. Und das unabhängig von der verwendeten Servertechnologie.

Graph Databases

graph_databases Graph Databases
Ian Robinson, Jim Webber, Emil Eifrem
O’Reilly
Juni 2013

5star

Noch vor 10 Jahren gab es quasi kaum Alternativen zu einem relationalen Datenbanksystem und SQL. Wenn man sagte, man braucht eine Datenbank, dann meinte man damit SQL. Das hat sich in den letzten Jahren doch klar geändert, und man hört oft von Projekten, die mal eben ein Caching-Layer mit Redis aufbauen oder für eine einfache Datenablage MongoDB einsetzen. Graphdatenbanken sind noch etwas seltener anzutreffen. Ich denke aber, dass sich das rasch ändern wird, da in einer immer vernetzteren Welt auch die möglichen Anwendungsfälle für Graphdatenbanken zunehmen wird.

Graphdatenbanken sind immer dann interessant, wenn man es mit stark vernetzten semistrukturierten Daten zu tun hat. “Semistrukturiert” bedeutet dabei, dass die Daten keiner allgemeinen Struktur unterliegen, sondern einen Teil der Strukturinformation mit sich tragen. UML-Diagramme etwa sind reinrassige Graphen. Eine Klasse hat Attribute, ein Status hat Entry- und Exit-Operationen, usw.. Man kann versuchen, solche Daten in ein relationales Schema zu pressen. Der grundsätzliche Mismatch zwischen den beiden Datenstrukturen führt aber leicht zu teilweise absurden Konstrukten, die ich am Beispiel des Datenmodells von Sparx Enterprise Architect beschrieben habe.

Jim Webber ist vielleicht einigen bekannt wegen seiner witzigen Präsentation zu Guerilla SOA auf InfoQ. Mittlerweile ist er als Chief Scientist bei Neo Technology gelandet. Auch die beiden anderen Autoren sind führende Köpfe von Neo Technology. Von “unabhängig” kann hier also keine Rede sein. Es geht im Buch beinahe ausschließlich um Neo4j. Das tut mir nicht weh, weil ich bisher nur Neo4j einsetze und genau darüber möglichst viel wissen möchte, sollte aber anderen Lesern bewusst sein. Etliche Kapitel sind aber genereller Natur und diskutieren etwa die Datenmodellierung mit Graphdatenbanken oder geben einen Einblick in konkrete Projekte. Damit ist das Buch auch eine lohnende Ergänzung der eh recht ausführlichen Neo4j-Doku.

Mein Fazit: Zum Einstieg in die noch etwas unbekannte Welt der Graphen ist dieses Buch sehr gut geeignet, zumal es bisher wenig Literatur dazu gibt. Es ist ein echtes Praxisbuch und lässt die harte Theorie hinter Graphen weitgehend außen vor.

RabbitMQ in Action

book_rabbitmq RabbitMQ in Action
Alvaro Videla, Jason Williams
Manning
April 2012
5star

Wenn von Skalierung die Rede ist, dann schiessen Architekten häufig sofort mit der Wunderwaffe Message Queues durch die Gegend. Und RabbitMQ ist das neue große Kaliber im Schrank. RabbitMQ

  • RPC-Style
  • AMQP, also sprachunabhängig, Wire-Level Protokoll
  • Erlang, sehr schnell
  • entwickelt sich schnell
  • Buch geht zum guten Teil auf Administration ein (Skalierung usw.)

Gleich ausprobiert habe ich RPC-Style-Messaging, bei dem man mit temporären, anonymen und exklusiven Queues arbeitet
beim Senden einer Nachricht an eine Queue mit angibt, an welcher privaten Queue man
Leider nur angerissen wurde das Thema CEP (Complex Event Processing), in dem Broker auch eine bedeutende Rolle spielen können.