Funktionale Programmierung in In-Memory-Grid Systemen

Große Datenmengen im GB und TB Bereich erlauben es nicht, die zu verarbeitenden Daten zur Verarbeitung an den Client zu übertragen. Eines der wichtigen Konzepte in modernen, verteilten In-Memory-Grid Systemen ist es daher, den auszuführenden Code zu den Daten zu bringen.

Die Ausführung von Code in solchen Systemen erscheint oft umständlich und wenig intuitiv für den Programmierer. Das Einbetten von Funktionen in Klassen, welche im Clusterverbund ausgeführt werden können, erzeugt einen zusätzlichen Boilerplate Code, da entsprechende Interfaces implementiert werden müssen. Hier bietet sich funktionale Programmierung an, um Funktionen im Cluster zur Verfügung zu stellen.
Am Beispiel von Scala als Sprache, welche funktionale Programmierung unterstützt, möchte ich zeigen, dass diese beiden Konzepte sehr gut zusammenspielen und somit die korrekte, performante Verwendung von In-Memory-Grid Systemen unterstützt wird.
Als Grid-System findet Hazelcast Verwendung.
Continue reading

Posted in Other languages for the Java VM | Tagged , , , , , | Leave a comment

Spring Boot – Getting started

Im April 2014 wurde die Version 1.0.0 von Spring Boot veröffentlicht. Mittlerweile sind wir bei Version 1.1.4 angekommen. Das Projekt verspricht eine noch schnellere Entwicklung von Anwendungen mit Spring:

Spring Boot makes it easy to create stand-alone, production-grade Spring based Applications that can you can “just run”.

Mit Spring Roo und Grails gab es zwar bereits zuvor zwei Projekte unter dem Dach von Pivotal, mit denen man sehr schnell Anwendungen erzeugen konnte. Beide beschränken sich allerdings auf Webanwendungen. Spring Boot erweitert dieses Spektrum deutlich. Sie möchten ein Projekt mit Spring Integration starten, einen REST-Service anbieten oder auf eine NoSQL-Datenbank zugreifen? Mit Hilfe der sogenannten “Starter POMs” können Sie ein entsprechendes Projekt mit wenigen Zeilen Konfiguration aufsetzen. Durch beliebige Kombination mehrerer solcher “Starter POMs” lässt Sie auch die Infrastruktur für komplexe Anwendungen erzeugen.
Continue reading

Posted in Build, config and deploy, Spring Universe | Tagged , , , , , , , | Leave a comment

TypeScript nun bei GitHub, Compiler soll schneller werden, ECMAScript 6 Features auf der Roadmap

TypeScript LogoTypeScript, das statisch typisierte Superset von JavaScript (Vorstellung auf blog.oio.de), zieht von CodePlex um zu GitHub.
Dies hat Microsoft nun in einem Blogbeitrag bekanntgegeben. Damit folgt Microsoft der Forderung der Community.
Man erhofft sich dadurch eine bessere Zusammenarbeit mit der Community.

Die Issues von CodePlex wurden in den Issue-Tracker von GitHub umgezogen.
Außerdem wurde auch das Wiki umgezogen und hat seinen neuen Platz bei GitHub gefunden.
Continue reading

Posted in Web as a Platform | Tagged , , , , | Leave a comment

Locking mit Git

“Heutzutage macht man Git”! Git ist auf dem besten Weg, sich als das Standard-Tool für die versionierte Verwaltung von Dateien durchzusetzen. Wer fängt heute schon noch ein neues Projekt mit SVN oder gar CVS an? Sicherlich, Git bietet zahlreiche Vorteile gegenüber den vielen Alternativen. Dennoch sollte man sich vor einem Wechsel zu Git genau anschauen, ob das Tool auch zum Einsatzzweck im jeweiligen Projekt passt. Nehmen wir das Beispiel “Locking von Dateien”:

In SVN kann man über die Eigenschaft svn:needs-lock festlegen, dass eine Datei nur bearbeitet werden kann, falls sie zuvor für alle anderen Benutzer gesperrt wurde. Dateien, die eine Sperre benötigen und aktuell nicht durch den aktuellen Benutzer gesperrt sind, werden mit einem Betriebssystem-Schreibschutz versehen. Erst nachdem die Datei mit einer globalen Sperre versehen wurde, wird dieser Schreibschutz aufgehoben.

Die Stärke von Git liegt in der Verwaltung von textbasierten Dateien. Paralleles und offline-fähiges Arbeiten gehört zu den Design-Grundsätzen von Git. Locking von binären Dateien wiederspricht diesen Grundsätzen fundamental. Daher unterstützt Git das Sperren von Dateien nicht.

Kann Locking mit Git dennoch umgesetzt werden?
Continue reading

Posted in Build, config and deploy | Tagged , , , | Leave a comment

Android Push Notifications mit Pentaho Data Integration (PDI) / Kettle

Seit Version 5.0 steht in “Pentaho Data Integration” (früher “Kettle”) ein Marketplace zur Verfügung, mit dem beispielsweise neue Transformations-Steps und neue Datenbank-Connectoren in das ETL-Tool installiert werden können. Unter vielen anderen lässt sich dort das interessante Plugin Android Push Notification finden. Dieses Plugin ermöglicht das einfache Versenden von Push Notifications an Android Geräte aus beliebigen PDI-Transformationen heraus. Die Android-Empfänger der Notifications müssen zuvor lediglich die App PDI Manager installieren.
Continue reading

Posted in Open Source BI | Tagged , , , | Leave a comment

Hazelcast stellt Map&Reduce API zur Verfügung

In der aktuellen Version 3.2 steht in Hazelcast nun auch die Möglichkeit zur Verfügung, eine Map&Reduce API zur Verarbeitung zu verwenden.
Die bisher häufig verwendete externe Erweiterung CastMapR ist hierdurch überflüssig und wurde durch eine Hadoop ähnlich API ersetzt, bietet aber im Gegensatz zu Hadoop ein in-memory realtime-processing. Map and Reduce Operationen werden hierbei auf allen Knoten konkurrierend ausgeführt.
Continue reading

Posted in Java Persistence, Java Runtimes - VM, Appserver & Cloud | Tagged , , , , | 1 Comment

CDI Unterstützung für Infinispan

Infinispan unterstützt CDI (Contexts and Dependency Injection) über das Modul infinispan-cdi. Das Modul ermöglicht sowohl den Infinispan-Cache zu konfigurieren als auch das Injizieren von Cache-Instanzen in CDI-Beans. Zusätzlich bietet das Modul eine partielle Unterstützung der JCache (JSR-107) Cache Annotationen.
Continue reading

Posted in Java EE, Java Persistence, Java Runtimes - VM, Appserver & Cloud | Tagged , , , , | Leave a comment