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.

Pressing graphs into a SQL database

UML diagrams are pure graphs. But EA uses a relational database (Microsoft Access for local repositories) behind the scene, so it has to press the graphs into a relational data model. This article shows some of the more strange results of this data structure mismatch.

  1. Many foreign keys and join tables
  2. Sparse tables with many NULL fields
  3. Multifunction fields
  4. Multifunction fields with foreign keys
  5. Inkonsistent data

Joining tables is quite expensive. And adding indexes will also add additional load onto the database, because every insert will cause the index to be recreated.

Graphs represent connected and semi-structured data. A class has different properties than a

In the central table t_object there are several columns PDATA1 to PDATA5, which store different information for different elements. For example, a UML part belongs to a class and EA stores the GUID of the class in PDATA1. So this cell is also a foreign key in case of UML part.

EA_Graph_1

Another example is the handling of conveyed items. An Information Flow represents the flow of Information Items between elements. EA stores the references to this Information Items in table t_xref, which itself is some kind of multifunction table. The data is stored in column “description” (!) and can actually contain a list of foreign keys.

 

 

EA_Graph_2

Handling all those special cases and foreign keys is a quite tough job for the app. Deleting an element in project browser

EA does not do this. So after a deletion, the database is in an inconsistent state.

Using Sparx Enterprise Architect as a modeling tool, this handling will not effect you. But it is a problem when you want to retrieve information from the repository.

The API just reflects this database structures.

  • Retrieving data is slow
  • Preparing the SQL for even simple analysis is catchy
  • Programming analysis features is very cumbersome and time-consuming

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 :-(