Blog

Alle Beiträge von Jan Galinski

Mit heißer Nadel: TDD, JEE und needle4j

Will man testgetrieben entwickeln (bzw. überhaupt Unit-testen) und gleichzeitig mit einem Dependency Injection Framework arbeiten, steht man zwangsläufig vor einem wesentlichen Problem beim Aufbau der Tests: Wie bekomme ich die, mitunter komplexen, Abhängigkeitsnetzwerke meiner Komponenten pro zu testender Unit aufgebaut oder besser gekapselt (bzw. gemockt)? Schließlich erfolgt die DI zur Laufzeit durch ein komplexes Framework, das ggf. aufwändig konfiguriert werden muss und wegen der Objekt-Beziehungen der Anwendung selten ohne Nebeneffekte ist, sprich sich für einzelne Klassen (die Unites-under-Test) nicht bzw. schwer isolieren lässt.

weiterlesen

Testgetriebene Geschäftsprozessmodellierung: Camunda Community Meeting bei Holisticon

Am 26.11.2013 luden camunda und Holisticon im Rahmen der  Camunda Community Meetings in die Räume der Holisticon AG in Hamburg. Die camunda Community Meetings sind eine Vortrags- und Diskussionsreihe rund um die Themen Business Process Management, BPMN, Modellierung und natürlich die Open Source Engine camunda BPM Platform.
Thema des Abends: Testgetriebene Geschäftsprozessmodellierung.

weiterlesen

@PostConstruct mit Guice

Guice ist ein leichtgewichtiges DI-Framework von Google, das ich, wie bereits in einigen Artikeln erwähnt, gern an Stelle von Spring einsetze, wenn ich mit einem Container ohne CDI-Support arbeite, zum Beispiel JBoss 5.1 oder Java SE. Guice unterstützt JSR-330 (Dependency Injection), leider jedoch nicht JSR-250 (Common Annotations).
weiterlesen

BPM/SOAgil auf der SEACON 2012

Am 04. Juni präsentierten die Kollegen Jo Ehm und Jan Galinski, unterstützt durch einen Projektbericht von Claudia Cordes, das holistische agile Vorgehensmodell für BPM/SOA-Projekte unter der Überschrift „BPM/SOAgil“ dem Publikum auf der SEACON in Hamburg.

Der Vortrag adressiert den scheinbaren Widerspruch zwischen agilen Methoden (konkret: Scrum mit User Stories) und BPM/SOA-Projekten und stellt Methoden und Werkzeuge vor, die helfen, diesen aufzulösen. Dabei stellt sich heraus, dass Agilität und BPM/SOA keineswegs gegensätzliche Konzepte sind, sondern sich im Gegenteil sehr gut kombinieren lassen. Die konsequente Einhaltung agiler Methodik bereits während der Modellierung der Prozesse und Architekturen kann die Erfolgsaussichten gerade mittlerer und großer Projekte massiv verbessern helfen.

weiterlesen

Das reine Vergnügen – RIA mit Vaadin und Guice

Vorweg: Vaadin ist cool. Das auf dem Google Web Toolkit basierende Framework erlaubt die komponenten-orientierte Entwicklung hochqualitativer Rich Internet Applications. Dabei wird weitestgehend vom HTML/Servlet Code abstrahiert – das Programmiermodell erinnert somit stark an die vom Desktop gewohnte Entwicklung mit Swing oder RCP. JSP-Taglibs, XML-Wüsten und Platzhalter-Replacements sucht man vergebens, und man vermisst sie auch nicht.

Eine typische Vaadin-Applikation (aus Book of Vaadin, Getting started):

public void init() {
   final Window mainWindow =
      new Window("Myproject Application");

   Label label = new Label("Hello Vaadin user");
   mainWindow.addComponent(label);

   mainWindow.addComponent(
      new Button("What is the time?",
         new Button.ClickListener() {
         public void buttonClick(ClickEvent event) {
            mainWindow.showNotification(
               "The time is " + new Date());
         }
      }));

 setMainWindow(mainWindow);
}

Sobald die Anwendung etwas größer wird, bekommt man jedoch zwangsläufig die klassischen Stand-Alone-Anwendungsprobleme: verschachtelte Komponenten, ausgelagerte Handler, implementierte Listener, gekapselte Service-Facaden … ein Haufen Instanzen will erzeugt und verwaltet werden. Nebenbei arbeitet man auf 3 Scopes (Application, Session, Request), bemüht sich um Separation of Concern und achtet auf maximale Testbarkeit.
Das wird „per Hand“ schnell unübersichtlich. Naheliegend ist, sich bei der Verwaltung der Instanzen helfen zu lassen. Wenn man das Pech hat, nicht auf JEE6 und CDI zurückgreifen zu können (konkret arbeiten wir nach wie vor auf JBoss 5.1), ist die Frage:

Wie?
Oder anders formuliert: Spring oder Guice?

weiterlesen