Category: Java

Vortrag auf dem Herbstcampus 2012: Spring Integration

Beim diesjährigen Herbstcampus bin ich wieder mit einem Vortrag dabei: „Moment, ich verbinde! EAI mit Spring Integration“. Freut mich, dass meine Einreichung akzeptiert wurde.

Hier das Abstract:

Mittlere oder größere IT-Projekte beschränken sich selten auf eine isolierte Anwendung. Stattdessen gilt es, verschiedene Applikationen miteinander zu verknüpfen und Daten zwischen diesen auszutauschen. Die grundlegenden Herausforderungen sind dabei die unterschiedliche Daten-Repräsentation und die Implementierung der einzelnen Applikationen, Änderungen in den Applikationen sowie die Unzuverlässigkeit von Netzwerken. Mit den Enterprise Integration-Patterns haben Gregor Hohpe und Bobby Woolf das Fundament für eine Message-basierte Integration verschiedener Systeme geschaffen. Spring Integration ist eine leichtgewichtige Implementierung der Enterprise Integration-Patterns, die ein Messaging für Java-Anwendungen mit nahezu grenzenlosen Anbindungsmöglichkeiten ermöglicht.

Der Vortrag gibt eine praxisnahe Einführung in Spring Integration und zeigt, wie einfach lose gekoppelte Systeme erstellt werden können. Dabei wird auf die wesentlichen Komponenten Message, Message Channel, Message Endpoint, Channel Adapter und Message Router eingegangen.

Share

MATHEMA Campus Tag 2 (25.02.2012)

Campus Besucher

Den zweiten Tag des MATHEMA Campus konnte ich aufgrund privater Verpflichtungen leider erst am Nachmittag genießen, so dass ich mir nur zwei Vorträge anhören konnte, die ich nun kurz erläutere.

Vor zwei, drei Jahren hatte ich es mir schon mal angesehen, nun gab es einen Vortrag dazu: das Play Framework. Und ich muss sagen, es hat sich viel getan! Mit Play werden stateless Webanwendungen entwickelt, bei denen man im Frontend in ganz normalem HTML mit ein paar extra Tags arbeitet, die seitens Play dann mit Leben erfüllt werden. Alles ist sauber und streng nach einer MVC Architektur gegliedert. Auf der Konfigurationsseite muss man sich im wesentlichen nur um eine Datei kümmern, die für das Routing von URLs zu den passenden Controllern zuständig ist. Alles in allem eine sehr schöne Sache, die Spaß macht und einfach zu erlernen ist. Auch zahlreiche Erweiterungen sind bereits auf dem Markt. Leider wurde mir noch nicht klar, wie gut die Sache für große Projekte einsetzbar ist, was ja auch am Play Server hängt – viel Erfahrung gibt es scheinbar noch nicht.

Als letzten Vortrag besuchte ich Michael Wiedekings Da Capo, bei dem  es um die Vorstellung des aktuellen Stands seiner derzeit in Entstehung befindlichen Programmiersprache (Arbeitstitel ALx) ging. Aktuell ist die Sprache erst mal auf ein mathematisch sauberes Fundament gestellt und vor allem konzeptionell existent. Die konkrete Erstellung eines Compilers, sowie die syntaktischen Details sind derzeit noch offen – „versprochen“ wurde aber, dass es zum Herbstcampus etwas zu sehen gibt. Alles in allem ein interessanter Ansatz mit einer begeisternden Definition – bin schon gespannt auf die nächsten Fortschritte.

Insgesamt hatte ich viel Spaß, interessante Themen, nette Leute, coole Ideen und Inspirationen – was will man mehr. Freue mich schon auf den Herbstcampus!

Share

MATHEMA Campus Tag 1 (24.02.2012)

Der erste Tag des diesjährigen MATHEMA Campus hat mir großen Spaß gemacht. Hier ein kurzer Bericht über die von mir besuchten Vorträge. Den Einstieg machte wie üblich, Michael Wiedeking mit frei vorgetragenen Analysen, Berichten und Betrachtungen rund um die Entwicklung aktueller Programmiersprachen.

Mein Favorit in diesem Jahr war gleich der erste Vortrag: Remote Control. Hier stellte Marco Knüttel die OpenSource Elektronik Plattform Arduino im Zusammenspiel mit Android vor. Absolut faszinierend, was man hier für wenig Geld so alles basteln kann. Vorgestellt wurde die Fernsteuerung eines Ferienhauses (Kameras, Heizungssteuerung, Sensoren) und ähnliches im Wohnmobil. Ich hoffe, dass ich bald Zeit finde, mich hier etwas rein zu vertiefen 🙂

Unter dem Titel Scriptease.js bot Golo Roden ein unterhaltsames Live-Coding in Sachen Javascript. Gerade für jemanden wie mich, der zwar oft mit JS arbeitet, dort aber kein echter Experte ist, waren sehr viele nützliche Tipps und Hinweise dabei. Vor allem Dinge, die einem eine zeitraubende Fehlersuche bescheren können, z.B. etwas wie: null + „ify“   // => „nullify“ ! Sein Fazit: „Nie vergessen, dass Javascript keine C-basierte Sprache ist, so sehr sie danach auch aussieht, sondern ihre Wurzeln bei LISP/Scheme hat!

Werner Eberling brachte eine praxisnahe Einführung in PhoneGap und jQuery Mobile – eine Kombination, die auch mein Topfavorit für eine schnelle Möglichkeit ist, native Apps auf allen gängigen mobilen Plattformen zu generieren.

Arduino Schlachtfeld

Sehr interessant, wenngleich aktuell noch nicht praxistauglich, war der Vortrag zu Web Intents von Willie Chieukam. Web Intents hat die Verknüpfung von Webseiten bzw. webbasierten Anwendungen mit nützlichen Diensten zum Ziel. Beispiel: Eine Webseite möchte die Möglichkeit bieten ein hochgeladenes Bild zuzuschneiden. Statt nun selbst ein Javascript-Monstrum zu implementieren, gibt man auf der Seite einfach an, dass man einen Service zum Zuschneiden benötigt. Der User kann dann aus einer Auswahl von Diensten wählen und dort sein Bild zuschneiden, welches bearbeitet zur Webseite zurück kommt. Die Auswahl kann im Browser für spätere Aufrufe gespeichert werden.

Nach einem guten Abendessen gab es eine Publikumsdiskussion mit dem Thema, ob die Objektorientierung sich überlebt hat. Ein echtes Fazit kam nicht zustande, aber die bekannten Probleme (Mehrfachvererbung, Vererbungshierarchien, Mapping Objekt zu relationaler DB, …) wurden heiß diskutiert.

Einen lustigen Abschluß bildete der späte Abend: unter dem Titel „Desaströs“ wurden Filmausschnitte gezeigt, bei denen so einiges schief geht – untermalt von entsprechend amüsanten Kommentaren seitens Michael Wiedeking.

Share

Ausdrücke mit der ScriptEngine auswerten

Immer wieder nützlich: die ScriptEngine in Java (oder auch in Groovy) ermöglicht das einfache Auswerten von Ausdrücken. Hier ein kleines Beispiel (in Groovy, lässt sich aber mit minimaler Anpassung in Java umsetzen (Cast in Zeile 7 und Alternative Ausgabe in Zeile 8)):

1
2
3
4
5
6
7
8
9
10
11
import javax.script.ScriptEngineManager;
import javax.script.ScriptEngine;
 
ScriptEngineManager mgr = new ScriptEngineManager();
ScriptEngine jsEngine = mgr.getEngineByName("JavaScript");
try {
  Boolean result = jsEngine.eval("a=19; b=2; c=2; a>b && c==b");
  print "Ergebnis: " + result;
} catch (ScriptException ex) {
    ex.printStackTrace();
}

In diesem Fall wird Ergebnis: true auf der Konsole ausgegeben. Dies nur zur Inspiration – die Vielfalt der Möglichkeiten lässt sich nun bestimmt schon erahnen …

Share