December 2, 2009

Spring Webanwendung generieren

Inspiriert durch den Artikel Spring ROO - Codegenerierung "the Spring Way" von Mike Wiesner in Novemberausgabe des Java Magazins, probierte ich das neue Framework vor Kurzem mal aus. Der Ansatz CRUD-Anwendungen zu generieren ist zwar nicht neu, allerdings wirkt die Entwicklungsumgebung enorm leistungsstark. Zudem erscheinen mir die verwendeten Konzepte zur Organisation/Trennung von generierten und manuellen Artefakten recht praktikabel, so dass ein leichter Einstieg in die Domain-Driven Entwicklung von Anwendungen möglich ist.

Mit Spring Roo können komplette CRUD-Webanwendungen inklusive Zugriff per REST erzeugt werden. Die umfangreiche Konfiguration, die dafür notwendig ist, wird einfach generiert. Das stellt natürlich eine enorme Erleichterung dar und die ersten Schritte zu einer minimalen Anwendung sind schnell erledigt. Wie aufwendig die manuelle Implementierung einer solchen einfachen Anwendung ist, musste ich bereits in diesem Posting feststellen.

November 25, 2009

(English) Wordpress Plugin: Download Counter Visualization

Widget Chart example
Widget Chart example

last update: 2010-04-14

This plugin adds a widget to display download statistics based on the Download Counter plugin on your site. The sidebar widget will show a highly configurable chart based on the Google Chart API. Furthermore it offers a dashboard widget that summarizes your downloads, to get information quick at a glance.

The plugin supports following chart types:
  • Bar (horizontal)
  • Pie
  • Pie 3D

You can include a chart of your downloads on a page or in a post using the downloadcounterchart-shortcut. Of course a download chart is includable in your theme. See extended documentation for detailed explanations for that.

August 21, 2009

Usain Bolts Auto?

Er läuft bei der Leichtathletik WM an diesen Tagen alles in Grund und Boden und stellt zwei neue Weltrekorde über 100 und 200 Meter auf. Aber wie bewegt sich der schnellste Mann der Welt im täglichen Leben von A nach B? Die Antwort fand ich heute zufällig auf der Straße vor meiner Wohnung...

Bolts Auto?
Bolts Auto?

July 6, 2009

REST-Anwendungen mit Spring 3.0

Die Interoperabilität zwischen heterogenen Softwaressystemen ist eine interessante Aufgabe. Zur Realisierung stehen heutzutage Web-Services über SOAP oder die Verwendung von REST zur Verfügung. Web-Services über SOAP sind unabhängig vom Übertragungsprotokoll und damit flexibler als REST, wobei HTTP verwendet wird. Außerdem sind für Web-Services ausführliche Definitionen der Schnittstellen (WSDL) und beim Austausch von Daten ein großer Anteil von Verwaltungsinformationen innerhalb der ausgetauschten XML-Nachrichten erforderlich. Das hat auch alles seine Vorteile, aber für eine einfache Anwendung, die lediglich Dienste/Informationen für andere Software zur Verfügung stellen möchte, scheint derzeit mit REST und der Verwendung des verbreiteten HTTP der pragmatischere Ansatz vorzuliegen.

In diesem Beitrag soll es aber nicht über die Unterschiede oder Vor- und Nachteile von Web-Services über SOAP gegenüber REST gehen, sondern die einfache Implementierung von Funktionalität über REST mit Spring 3.0 aufgezeigt werden. Anzumerken in diesem Zusammenhang sei noch, dass zum jetzigen Zeitpunkt Spring 3.0 noch nicht fertiggestellt ist und der Milestone 3 Verwendung findet. Allerdings sollte sich an der Anwendung nichts Grundlegendes ändern, da das Release von Spring 3.0 für das zweite Halbjahr 2009 angekündigt ist.

Zur Demonstration zeige ich in diesem und den folgenen Beiträgen die Implementierung einer rudimentären Webanwendung mit Sping MVC. Diese soll lediglich eine einfaches Ticketssystem abbilden, wobei lediglich Tickets angezeigt und die CRUD-Operationen unterstützt werden.

June 29, 2009

Quellcodeschnipsel in Eclipse

Innerhalb des WTP-Eclipse-Plugins gibt es eine Snippets-View, die zur Verwaltung von häufig verwendeten Quellcode-Abschnitten fungiert. Standardmässig sind bereits einige JSP-Codeschnipsel, wie z. B. der Include-Direktive, enthalten. Allerdings kann die Auswahl um weitere Kategorien (z. B. Java, PHP) und natürlich Codeschnipsel erweitert werden. Dabei lassen sich auch Platzhalter definieren, die beim einfügen per Doppelklick oder Drag´n Drop mit konkreten Werten ersetzt werden.

Interessant ist auch die Aktivierung/Deaktivierung der Anzeige von bestimmten Schnipsel-Kategorien je nachdem, was für ein Dateityp gerade in einem Editor geöffnet ist. Beispielsweise werden so Java-Schnippsel nur bei Java-Quellcode-Dateien angezeigt. Ebenso ist für einen Import und Export der Schnipsel im XML-Format gesorgt, so dass man seine Schnipsel auch mit anderen teilen kann.

June 27, 2009

Kurzevaluation Modellierungswerkzeuge (UML)

Auf der Suche nach einem leichtgewichtigen UML-Werkzeug zur Modellierung eines Klassendiagramms probierte ich einige aus und möchte kurz meine Eindrücke beschreiben. Der Fokus lag dabei auf kostenfreien Tools, die auch nur die grafische Modellierung von Klassendiagrammen ermöglichen sollen. Genauer gesagt kann ich gut auf die ganzen CASE- bzw- MDA-Features verzichten, da diese die Modellierung nur unnötig verkomplizieren. Außerdem kann ein solches Modell immer noch mit anderen Tool, wie beispielsweise oAW, nach eigenen Anforderungen verarbeitet werden.

Betrachtete Features:

  • Modellierung von Klassendiagrammen
  • Speicherung im XMI-Format bzw. Exportfunktion
  • Export für die Dokumentation (diverse Bildformate)

Fazit:

Für meine wenigen Anforderungen scheint ArgoUML am besten geeignet. Es ist schlank, also schnell heruntergeladen. Eine Installation ist nicht notwendig, da es als Java JAR ausführbar ist und somit auch auf allen Betriebssystemen läuft. Vom Funktionsumfang nimmt sich ArgoUML grob überblickt eigentlich nichts gegenüber den grafischen Editoren der Eclipse UML Tools. Allerdings lässt sich ArgoUML meiner Meinung nach einfacher bedienen und arbeitet direkt auf XMI in Version 1.2. Die UML Tools arbeiten dagegen mit einem XMI-Dialekt, der zwar auf XMI 2.x aufsetzt, sich aber einfach etwas von der originalen XMI-Spezifikation unterscheidet. Inwiefern sich beide Tools hinsichtlich der Weiterverarbeitung der Modelle - Stichwort MDA - eignen, lässt sich von mir nicht beurteilen.

Hinsichtlich der Komplexität der Handhabung der UML Tools könnte Topcased noch eine Alternative darstellen. Ich verwendete dieses Eclipse-Plugin, was auch auf dem Eclipse UML2-Projekt basiert vor zwei Jahren. Schon damals gab es eine reduzierte Property View, nichtsdestotrotz stellte sich die Modellierung mit diesem Werkzeug als enorm schierig dar. Ich kann nicht sagen, ob das Topcased-Plugin seither verbessert wurde, da zur Zeit die Website offline ist.

Die restlichen von mir kurz betrachteten Modellierungswerkzeuge sind hinsichtlich meiner Anforderungen schlichtweg ungeeignet, da meistens das XMI-Format nicht unterstützt wird oder eine Exportunktion für die Dokumentation fehlt.

Details zu verschiedenen Tools:

TinyUML

UMLet

  • kein XMI
  • merkwürdige Auswahl und Bearbeitung von Diagramm-Elementen
  • Java Standalone, Eclipse Plugin
  • viele Diagrammartens
  • Export in SVG, PDF, EPS
  • http://www.umlet.com/

BeoModeler

  • Webbasiert, Speicherung im XMI-Format (aber nicht valide, evtl. führt ein wenig Bearbeitung im Texteditor zu validen Dateien?!)
  • nur einfache Klassendiagramme (z. B. keine Typisierung von Attributen)
  • Export: Rational Software Modeler, Topcased
  • kein Bildexport
  • http://www.beotic.org/

Jink UML

ArgoUML

  • viele Diagrammarten
  • für den Funktionsumfang relativ schlank (8 MB)
  • Speicherung als komprimiertes XMI
  • Export und Import von XMI-Dateien
  • Bildexport: PNG, SVG, GIF, PS, EPS
  • Java, auch als Webstart Anwendung verfügbar
  • http://argouml.tigris.org/

Eclipse UML Tools

  • viele Diagrammarten
  • Modeling Distribution sehr groß (>300 MB)
  • arbeitet auf Basis vom Ecore UML2 XMI-Dialekt
  • Export: GIF, BMP, JPG, PNG, SVG, PDF
  • integriert in der Eclipse-IDE
  • Bearbeitung von Eigenschaften über die Property View ist immer noch etwa gewöhnungsbedürftig - hier wünscht man sich die Möglichkeit die angezeigten Eigenschaften zu definieren/einzuschränken, wie es z. B. bei MagicDraw funktioniert
  • Speicherverbrauch erfahrungsgemäß sehr hoch
  • http://www.eclipse.org/downloads/

Links

April 15, 2009

Kurzüberblick DSL-Frameworks

Erschien schon vor einiger Zeit, bietet aber einen guten, kurzen Überblick über das aktuelle Leistungsvermögen von Entwicklungsumgebungen zur Definition von DSLs.