codecentric

codecentric @ W-Jax 2008, Tag 2, 05.11.2008

Heute ist der zweite Konferenztag auf der W-Jax 2008, der führenden Konferenz für umfassendes Know-how im Java-Umfeld. Die Konferenz, die sich an Softwareentwickler, Projektleiter und Architekten richtet, beschäftigt sich mit den wichtigsten Aspekten erfolgreicher Enterprise-Projekte.

Unsere Berater und Entwickler nutzen diese Veranstaltung, um sich auf den neuesten Stand zu aktuellen Technologie-Trends, Strategien und den Einsatz der jeweiligen Technologien zu bringen.

Hier eine Auswahl der Speaker Slots und Sessions des zweiten Konferenztages

Portal 2.0: Bringing Social, Web 2.0 and SOA together for the Enterprise (Brian Chan)

Die Keynote von Brian Chan über Liferay bot bis auf einige Websites von Kunden, welche Liferay nutzen, wenig Neues im Vergleich zu seiner Präsentation auf der JAX 2008 in Wiesbaden, welche damals wesentlich “codelastiger” war. Es wurden die typischen Infrastrukturen in einer Firma, mit ihren individuelle Vorteilen aufgezeigt, wie z.B. Blogs oder Wiki um später im Vortrag dann in Liferay gebündelt zu werden.

Brian Chan ist ein sympathischer, lockerer Kerl mit einer Passion für soziale Netzwerke und leitet die Architekturabteilung bei Liferay.

Die Keynote ließ wenige Fragen offen, da Liferay in jedem Fall ein sehenswertes Produkt ist und in der Keynote viel vom System anhand von Beispielen präsentiert wurde.

Insgesamt eine gute Keynote, aber mit wenigen neuen Informationen.

Fazit: Liferay ist einen Blick wert!

Marc van den Boogard, IT Consultant @ codecentric

Batch-Verarbeitung mit Spring Batch (Agim Emruli)

Batch-Verarbeitung ist kein besonders populäres Thema (O-Ton, Agim Emruli von SpringSource). Dabei ist die Verarbeitung von sequentiellen, nicht interaktiven Aufgaben in sehr vielen Anwendungen von Bedeutung.

Typische Aufgaben eines Batches sind Konvertierung von Massendaten, sowie Validierung, Extrahierung, Aktualisierung und Export.

Anforderungen an solche Systeme:

  • Hoher Durchsatz
  • (Kontrollierter) Restart
  • Sequentielle Abarbeitung
  • partielle, parallele Verarbeitung

Spring Batch bietet hierfür ein sehr leichgewichtiges Framework, welches diesen Anforderungen gerecht wird.

Prinzipiell geschieht eine Batch-Verarbeitung wie folgt. In einem Batch-Job werden ein oder mehrere Batch-Steps durchgeführt, die immer wieder die gleichen Aufgaben bearbeiten:

  1. Mit einem ItemReader wird ein Datensatz ausgelesen.
  2. Mit einem ItemWriter wird dieser Datensatz verarbeitet und wieder persistiert

Ein solcher Batch-Job kann nun über verschiedene Wege gestartet werden. Kommandozeile, Quartz und JMX sind hier nur kleine Beispiele.

Fazit: Spring-Batch ist ein gutes Framework, welches eine sequentielle, oft durchgeführte Verarbeitung leicht implementierbar macht. Und: Es ist das einzige OpenSource Framework für diese Art von Aufgaben.

Thomas Bosch, IT Consultant @ codecentric

Geschäftsprozesse und Regeln mit jBPM & Drools – ein unschlagbares Team (Bernd Rücker)

Von JBoss gibt es zwei Bibliotheken, die BPM (Business Process Management) und BRM (Business Rules Management) anbieten – jBPM und Drools.

Über JBoss jBPM lässt sich mit Hilfe eines gerichten Graphen ein Prozess deklarieren. Dieser Prozess wird über BPM Knoten für Knoten durchlaufen. So lässt sich auf sehr ausführliche Weise ein Workflow für seine Geschäftslogik definieren.

JBoss Drools ist eine Regelmaschine, die es ermöglicht, ebenfalls deklarativ Regel für die Geschäftslogik zu erstellen. Zu einem definierten Zeitpunkt wird auf einen Arbeitsspeicher, der zuvor mit Daten befüllt wurde, eine Menge von Regeln angewandt, die dann zu einem Ergebnis führen welches ausgewertet werden kann.

Mit Hilfe von Drools lassen sich Regeln sehr einfach darstellen, so dass auch Fachbereiche die Logik einer solchen definierten Regel nachvollziehen können. Über spezielle Tools lassen sich sogar Excel-Dateien in Drools importieren.

Ein großer Vorteil solcher Regelmaschinen ist, dass sie vom restlichen Code der Geschäftslogik entkoppelt sind und sich sogar zur Laufzeit anpassen bzw. austauschen lassen.

Fazit: Drools bietet eine sehr gute Lösung Geschäftregeln einfach abzubilden. Die große Stärke der Kombination mit jBPM sehe ich jedoch nicht.

Thomas Bosch, IT Consultant @ codecentric

Tim van Baars

 

codecentric @ W-Jax 2008, Tag 1, 04.11.2008

Wir sind heute zum ersten Konferenztag auf der W-Jax 2008, der führenden Konferenz für umfassendes Know-how im Java-Umfeld. Die Konferenz, die sich an Softwareentwickler, Projektleiter und Architekten richtet, beschäftigt sich mit den wichtigsten Aspekten erfolgreicher Enterprise-Projekte.

Wir nutzen die W-Jax als Forum, um mit unseren Kunden, potentiellen Kunden und Partnern Networking zu betreiben. Auf den folgenden Bilder sieht man unseren Messestand mit unseren Bereichen performance, architecture und open technology, zu denen wir spezialisierte Beratung und Services anbieten. Unser Stand ist direkt am Eingang des Ausstellungsbereiches und ist gut besucht. Unter anderem Alois Reitbauer von dynaTrace Software kommt nach seinem Vortrag “Architecture Notes on Java Database Access” an unseren Stand und wir sprechen über aktuelle Themen. Schräg gegenüber von unserem Stand befindet sich der Stand von SUN microsystems, die opensolaris, GlassFish, MySQL und OpenOffice präsentieren.

Unsere Berater und Entwickler besuchen diese Veranstaltung, um sich auf den neuesten Stand zu aktuellen Technologie-Trends, Strategien und den Einsatz der jeweiligen Technologien zu bringen. Im Anschluss an die Konferenz werden die Technologien den anderen Kollegen von codecentric u.A. in unseren Freitagsmeeting vorgestellt, getestet und auf eine Eignung für potentielle Praxiseinsätze hin, auf “Herz und Nieren” geprüft.

Eine Auswahl der besuchten Speaker-Slots und Sessions

Architecture Notes on Java Database Access (Alois Reitbauer)

Inhalt des Vortrages waren die häufigsten Probleme und Lösungsstrategien im Zusammenhang mit Datenbank-Anwendungen. Neben konkreten Problemen wurde auch speziell das Thema mangelnder Performance-Tests angesprochen. Interessant war hier, dass auf die Frage, wer Performance Tests im Unternehmen einsetzt, kaum einer der Anwesenden die Hand gehoben hat.

Auch in unserer Studie zum Thema “Performance im Java Umfeld”, die wir auf der diesjärigen Jax durchgeführt haben, wurde von den Teilnehmern der Studie als Ursache mangelnder Performance das Thema Datenbanken genannt. Hier besteht aber das Paradoxon, daß viele den Themenbereich Datenbanken als Problem ansehen, keiner aber Zeit und Geld in die Vermeidung von Problemen investiert.

Hier wäre es sehr interessant herauszufinden, wo die Gründe für diesen Widerspruch liegen.

Einer der Gründe könnte darin begründet sein, dass häufig wenige bis gar keine Performance Tools in den Unternehmen im Einsatz sind und auch das Wissen fehlt, geeignete Vorgehensweisen und Prozesse zur Performancemessung einzuführen und mit den gewonnen Daten über Tuningmaßnahmen eine Performanceverbesserung zu erreichen.

Tim van Baars @ codecentric GmbH

The Future Of The Web – Html 5, WebSocket and Comet (Jonas Jacobi)

Realtime-Anforderungen in Webanwendung werden immer gefragter – Die Erweiterung von AJAX heißt AJAX Push mit Comet sowie WebSocket. Während beim klassischen AJAX die Anfragen immer vom Client ausgehen, bietet AJAX Push die Möglichkeit an, den Server als Initiator einer Kommunikation zu nutzen.

Ein beliebtes Beispiel:

Während man sich auf einer Börsenseite die Kurse der Aktien anschaut, werden diese in Realzeit regelmäßig aktualisiert, ohne dass der Nutzer einen Refresh auf der Seite vornehmen muss.

Mit WebSocket wird über eine lange Zeit eine Verbindung mit dem Server aufgebaut über die dann in beiden Richtungen (full-duplex) kommuniziert werden kann. Sowohl der Client als auch der Server können hierbei Informationen an sein Gegenüber senden, so dass auch mit WebSocket Realtime-Anforderungen bedient werden können.

Fazit: Realtime-Aktualisierung von Webseiten ist eine schöne Variante, das Web interaktiver zu gestalten. Endlich erhält auch die Serverseite die Möglichkeit, ohne Zutun des Clients die Daten auf der Seite immer aktuell zu halten und diese Änderungen direkt im Client sichtbar zu haben.

Thomas Bosch, IT Consultant @ codecentric

Advanced JPA with EclipseLink (Doug Clarke)

EclipseLink ist die von Sun propagierte Opensource-JPA-Implementierung und entstand durch eine Portierung von Oracle-TopLink. Toplink selbst, ist nach der Portierung wieder als kommerzielle Lösung erhältlich.

Neben der Lieferung einer Referenz-Implementierung für JPA, bildet EclipseLink einen Layer über eine Reihe von Datenquellen und ermöglicht somit zusätzlich XML- und EIS-Persistence.

Im Vergleich zu Hibernate, welcher sein Caching über Third-Party-Anbieter löst, bietet EclipseLink eine eigene Caching-Lösung. Der Verbreitungsgrad ist im Vergleich zu Hibernate eher gering.

Demnach existieren im Netz bis auf die eigenen Seiten noch wenige brauchbare Informationen zu diesem Thema.

Die zusätzlichen Features wie XML-Persistence werden z.B. auch von Hibernate bereitgestellt, sodass er hier fraglich ist, ob die zusätzlichen Features ein Einscheidungskriterium darstellen.

Fazit: Beobachten!

Marc van den Boogard, IT Consultant @ codecentric

Do it asynchronous: Events und Messaging in Enterprise Architekturen (Jens Schumann)

Mit Asynchronität lässt sich eine Entkopplung von Komponenten leicht realisieren.

Events und Messaging bieten hier Möglichkeiten eine solche, wenn auch nicht zwingend erforderliche Asynchronität. Solche Event- oder Messaging-Driven Architekturen skalieren seht gut und lassen sich daher gut in stark ausgelasteten Anwendungen verwenden.

Events werden zumeist zum Prozessmonitoring verwendet. Sie bieten bei hochvolumigem Datenumsatz die Möglichkeit von Informationsaggregation, -selektion und dessen Monitoring.

Messaging wird hingegen eher zur Prozesssteuerung genutzt. Nachrichten, die über solche Wege versendet werden, enthalten in ihrem Content-Teil zumeist Informationen, die beim Empfänger direkt interpretiert werden.

Hier liegt ein Unterschied zu den Events. Events sind zumeist nur durch ihren Typ definiert, so dass auf Empfängerseite auf einen Event-Typ reagiert wird und nicht auf dessen Inhalt.

Fazit: Events und Messaging sind aus meiner Sicht eine gute Variante Komponenten voneinander zu entkoppeln und bilden gemeinsam mit Asynchronität einen guten Ansatz eine hohe Skalierbarkeit zu erreichen.

Thomas Bosch, IT Consultant @ codecentric

JavaFX – Java goes RIA (Lars Röwekamp)

JavaFX ist von Sun zum Nachfolger von Swing ernannt worden. Der große Vorteil gegenüber Swing ist die deklarative Syntax, die es ermöglicht, mit relativ wenigen Zeilen Code eine GUI-Applikation zu entwickeln. JavaFX ist eine DSL (Domain Specific Language), die auf die Entwicklung von Oberflächen hin optimiert wurde.

Code-Beispiel:

import javafx.ui.*;
import java.lang.System;
Frame {
    centerOnScreen: true
    visible: true
    height: 50
    width: 350
    title: "Hello codecentric application..."
    background: yellow
    onClose: operation() {System.exit(0);}
    content: Label {
        text: "Hello codecentric"
    }
}

Dies erzeugt einen einfachen Frame mit einem “Hello codecentric”-Label

Key Features von JavaFX – neben der deklarativen Syntax:

  • Funktionen sind Objekte einer Klasse, so dass sie auch Variablen zugeordnet oder als Parameter einer anderen Funktion übergeben werden können.
  • Sequenzen. Sie können als bessere Arrays gesehen werden und dienen der Abbildung einer Menge von Objekten, die vielfältig erstellt und verändert werden können
  • Das sog. Binding bietet die Möglichkeit, einer Variable einen Ausdruck oder eine andere Variable “anzubinden”. Bei Änderungen dieser angebundenen Variable oder des Ergebnisses des Ausdrucks wird der Wert der Variable neu gesetzt
  • Komponenten von JavaFX sind Wrapper von Swing Komponenten, die eine vereinfachte UI API besitze
  • Für grafische Elemente gibt es Scene Graph – ein Java2D-Wrapper. Hiermit lassen sich Effekte, wie Lichteffekte, Timelines oder Transformationen, auf JavaFX Objekte anwenden
  • Für Oberflächendesigner gibt es Plugins für Adobe Grafiktools, wie den Illustrator, die es ermöglichen eine einfache Trennung zwischen dem Obeflächendesign und der Geschäftslogik zu erreichen

JavaFX ist momentan noch in einem Preview-Status. Für Mitte 2009 ist eine komplette erste Version geplant.

Fazit: Aus meiner Sicht gesehen, bietet JavaFX nun endlich die Möglichkeit, auf einfache Art und Weise GUIs zu entwickeln. Die große Stärke ist dabei ebenso die Möglichkeit, über externe Grafik-Tools, Design und Logik getrennt voneinander zu entwickeln.

Thomas Bosch, IT Consultant @ codecentric

Tim van Baars