The Docker Book

The Docker Book The Docker Book
James Turnbull
Amazon Digital Services
Juli 2014
5star

Container sind wohl der ganz große IT-Hype in diesen Tagen. VMs sind zu schwerfällig, zu groß, zu ressourcenhungrig. Mit Containern, die keine virtuellen Rechner nachbauen, sondern nur voneinander getrennte Prozessräume und Storage Areas, lassen sich auch auf Entwickler-Laptops komplexere verteilte Szenarien aufbauen, die dann genau so auch in Produktion übernommen werden können. Die einzelnen Apps dann vielleicht nur hinter Loadbalancern geclustert. Die beliebte Entwicklerausrede: “Bei mir geht’s!”, wird es damit nicht mehr so oft geben.

Container sind das Tool der Wahl für DevOps und Docker die mit Abstand gefragteste Tool-Plattform für Container. Interessant wird es, wie Microsoft darauf reagieren wird.

Die Docker-Entwicklung schreitet rasend schnell voran. Als Hardcopy wäre eine Anschaffung zweifelhaft, weil sehr schnell veraltet. Konsequenterweise gibt es das Buch deshalb auch nur als eBook mit gelegentlichen Updates.

Pro TypeScript

Pro TypeScript Pro TypeScript
Steve Fenton
Apress
August 2014
5star

TypeScript ist ein JavaScript-Superset, d.h., valides JavaScript ist valides TypeScript. TypeScript kennt aber weitere Konzepte, die später dann nach JavaScript kompiliert, oder – etwas genauer und spektakulärer – transpiliert werden.

Bisher habe ich einen Bogen um solche Transpiler wie CoffeeScript und Dart gemacht. Die Tatsache, dass die AngularJS-Entwickler mit TypeScript arbeiten, hat mich dann dazu gebracht, mir das einmal an einem Nachmittag anzuschauen. TypeScript gefällt mir sehr gut, weil

  • es eben nur ein JavaScript-Superset ist und man deswegen keine zweite Programmiersprache lernen muss,
  • mir die zusätzlichen Konzepte allesamt hilfreich vorkommen,
  • es IDE-Unterstützung für Visual Studio, Eclipse, Webstorm u.a. gibt
  • und die Lernkurve für Java- und JavaScript-Entwickler sehr flach ist.

Was sind das jetzt für zusätzliche Konzepte?

  • Variablen können typisiert werden. Es gibt sogar Unterstützung für Generics.
  • Es gibt Interface-, Klassen- und Modulkonzepte, wie man sie ähnlich auch von Java kennt.
  • Mit Modulen und Mixins lassen sich wiederverwendbare Module aufbauen und miteinander kombinieren.

Der Mehrwert all dieser Konzepte kommt erst wirklich bei größeren JavaScript-Projekten zum Tragen und helfen die typischen Probleme wie Scope-Probleme (eine Variable ist in den globalen Namespace “gerutscht”) zu verhindern. Editoren können damit auch verbessertes Refactoring anbieten. Mein WebStorm leistet hier schon Beachtliches.

Praktisch für alle wichtigen Javascript-Frameworks gibt es bereits ein Declaration File (.d.ts), mit dem die wichtigen Objekte und Methoden der Frameworks im TypeScript-Editor als Typen auftauchen und somit Autovervollständigung funktioniert.

Das Buch bietet aus meiner Sicht deutlichen Mehrwert gegenüber der Onlinedokumentation.

Java 8 In Action

Java 8 In Action
Raoul-Gabriel Urma u.a.
Manning
August 2014
5star

Für mich das beste Java-Update ever. Functional Interfaces, Lambdas, Streams, Default Methods, Optionals, Futures: alle neuen Features bringen jeden Tag Mehrwert. Wer Java 8 kennt, ruft nur mit Unbehagen seine 7er IDE auf.

Java 8 ist ein halbes Scala. Es hat alles von Scala übernommen, was für den “normalen” OO-Entwickler unmittelbar verständlich und hilfreich ist. Scala geht zwar in allen Bereichen weiter und bietet zudem andere, rein funktionale Konzepte, Typen und Idiome an. Trotzdem wird es Scala schwer haben, sich neben Java 8 weiter durchzusetzen und zu verbreiten.

Das Buch ist mit seinen über 400 Seiten etwas wortreich, andere Bücher handeln das Update mit weniger als 200 Seiten ab. Aber dann tauchen doch immer wieder gute Beispiele und praktische Tipps auf, auf die man nicht unbedingt selber gekommen wäre. Teil 4, “Beyond Java 8″ enthält einen hübschen Vergleich mit funktionaler Programmierung und speziell mit Scala.

D3 in Action

D3.js in Action
Elijah Meeks
Manning
März 2015
5star

Für meinen derzeitigen Kunden baue ich eine Analyseplattform für Unternehmensarchitekturen auf. Aus rein technischer Sicht letztlich ein Web-Frontend für eine Graphdatenbank. Deswegen liegen in meinem virtuellen Safari-Bücherregal gerade einige D3-Bücher. Das hier scheint mir die mit Abstand beste Ressource zu D3.js zu sein. Alle wichtigen Visualisierungstypen werden anhand nicht-trivialer Beispiele erklärt. Der online verfügbare Sourcecode funktioniert, was nicht unbedingt die Regel ist bei IT-Bücher.

Scala for the impatient

scala Scala for the impatient
Cay Horstmann
Addison-Wesley Professional
März 20124star

Für den Einstieg in die funktionale Programmierung und als Syntax-Referenz ein ideales Buch. Speziell für Java-Entwickler, die sich in Scala einarbeiten wollen, annähernd barrierefrei. Was ihm etwas fehlt ist das Big Picture, also warum man letztlich FP anwenden und wie man mit Scala größere Anwendungen aufbauen könnte. Als Ergänzung bietet sich deshalb etwa Functional Programming in Scala an.

Functional Programming in Scala

Functional Programming in Scala Functional Programming in Scala
Paul Chiusano, Rúnar Bjarnason
Manning Publications
September 2014
5star

Vor einigen Jahren habe ich schon einmal einen Anlauf in funktionaler Programmierung genommen und dann aber abgebrochen. Obwohl ich dieses Paradigma damals für hochinteressant gehalten habe, schien es mir doch letztlich “zu abstrakt und mathematisch” zu sein, als dass sich eine Einarbeitung lohnen würde. Bekanntlich ist alles knapp im Leben, vor allem Zeit und die intellektuellen Ressourcen im Oberstübchen. Einen breiten Durchbruch habe ich der Technologie nicht zugetraut.

Das scheint sich jetzt aber zu ändern. Bei den Big Data-Leuten ist es schon jetzt ein wichtiges Hilfsmittel, “map and reduce” sind quasi reine funktionale Konzepte. Aber auch im Microservice-Umfeld, wo i.d.R. ein begrenztes Feature-Set ohne großes Objektmodell umgesetzt wird, sehe ich Anwendungsmöglichkeiten.

Ich habe mir deswegen zwei Wochen frei geschaufelt und mich ausschließlich mit Scala beschäftigt. Die Zeit ist auch dann notwendig, wenn man bereits funktionale Konzepte wie Closures und Lambdas aus anderen Sprachen wie Groovy oder C#/LINQ kennt. Es kommen in Scala doch eine ganze Reihe neuer Konzepte und Typen hinzu, die alle ausprobiert werden müssen.

Das Buch ist als Einstieg in Scala aus meiner Sicht ungeeignet, obwohl es im Einleitungstext durchaus so deklariert wird. Es kommt hier wirklich Schlag auf Schlag. Es taucht schon mal in einem Absatz ein wichtiges FP-Konzept, haufenweise neue Scala Syntax und noch schnell ein Vergleich mit Java auf. Das war mir zu verwirrend und ich habe mir zuerst Scala for the impatient zu Gemüte geführt, das im Vergleich zu diesem Buch ein stumpfes Syntax-Erklären bietet. Mit der Vorbereitung aber ist das Buch dann sehr gut zu lesen und unverzichtbar, da erst hier das “Big Picture” aufscheint, Patterns und Idiome erklärt und konkrete Anwendungsmöglichkeiten aufgezeigt werden. Ich hatte jedenfalls etliche Aha-Erlebnisse und bin jetzt offiziell ein Scala-Fan.

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.