Intro

Nun geLearn Jazz Standardsht es endlich los mit dem Software entwickeln. Ich habe mir mal von ein paar Kollegen sagen lassen,
dass sich mit Musik viel besser coden lässt. So wollen wir das nun fortan halten. Ein Standard pro Aufnahme.

 
All Of Me von von Gerald Marks and Seymour Simon , 1931
 

 

Die Quintessenz

 
Von 1999 bis Ende 2000 hab ich mit meinem Freund Michael Rist die beste Zeit als Software Entwickler (bei der nettesten Firma: LS telcom AG) erlebt. Wir hatten “freie Fahrt” für die Erstellung eines Internet-Marktplatzes für Funknetz Standorte nach dem damals noch frühen J2EE Standard (mittlerweile in Java EE gereift). Und der Orion Server war einfach unglaublich.

Dem Vertrieb fiel ein super Slogan ein: Place a Base. Platziere zum Schließen von “Funklöchern” eine Basis Station auf dem Dach eines Hausbesitzers.
 
Diese Erinnerung möchte ich gerne umdeuten: “Wie führe ich eine Basisklasse ein” aufwärmen.

 

Dabei gibt es allerdings einen “Knackpunkt”:

Die Basisklasse enthält einen Namen und eine Referenz auf eine map of constraints  (diese ist so schlank wie möglich und belegt daher im “Normalfall” keinen zusätzlichen Speicher).
 
Der enthaltene Name stößt aufgrund des “Overheads” sofort auf Ablehnung. Allerdings ist dies wohl in den meisten Fällen eher unkritisch, denn man sendet sowieso nur die Daten, die zur Presentation in der Dynmaischen UI gebraucht werden. Für Massen Daten werden wir noch die leichtgewichtigen Value Types kennen lernen.
 
Über die Jahre – unter Benutzung von verschiedenen NoSQL Datastores – bin ich zur Überzeugung gekommen, dass man eigentlich mehr mit kleinen Model-/Dokument Schnipseln hantieren sollte, zusammen gewoben über einen Graph Datastore. Dies ist flexibel und unterstützt eine mächtige und performante Suche nach kleinen Model Graph Ausschnitten. Polyglotte Persistenz ist angesagt.
 
Als weitere Einschränkung gibt es keine einfachen Getter und Setter mehr und so muss man doch ein bisschen mehr boilerplate code schreiben. Dies lässt sich später durch eine DSL oder einen speziellen Generator (am besten direkt in der Eclipse IDE) leicht verbessern. Ein schönes Feature, jedoch mit geringerer Priorität.
 

Features

 
Schon in der Basis enthalten sind:

  • Naming
  • Constraints für die Validierung und zur Steuerung der dynamischen Anzeige
  • Type Konvertierung
  • Null Support
  • Liste der children
  • Find-Methoden
  • Basic Exceptions