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.