mynethome.de

17. Mai 2013

AfterburnerDolphin – Effective enterprise JavaFX development

Der folgende Post ist ein Cross-Post zum Canoo RIA Blog und daher auf englisch. Es geht um die Verknüpfung von OpenDolphin und Afterburner.fx – also um Java und Softwareentwicklung. ;-)

OpenDolphin

During the last JavaOne, Canoo announced the open sourcing of Dolphin.
OpenDolphin is a library that provides a remoting solution to bridge the world of Enterprise Java and Desktop Java or other client technologies (mobile, web).

Since then, a lot has happened around OpenDolphin and it keeps gaining more and more attention.
For me personally, it was from the first time I heard of it a very interesting project, but due to daily business and other projects I didn’t have the time to get into it.
Using JavaFx as the first client technology to be implemented was also a little hurdle as I haven’t done any serious work with JavaFX, yet.
(Besides, there is an JS implementation of OpenDolphin – it proves that OpenDolphin doesn’t tie you to a client UI technology.) But now, I’ve finally found some time to play with JavaFx and OpenDolphin ;-) .

Afterburner.fx

As I attended to Adam Bien’s Airhacks Workshops in March, he introduced the Afterburner.fx mini-framework to the audience and released it a few days later.

Afterburner.fx is a minimalistic MVP framework for JavaFX that provides
“Zero-Configuration” dependency injection (DI) of models and services
and
Convention-based unification of presenter, view, FXML and css.

ScenceBuilder

Thus it enables the usage of the JavaFX scene builder (a UI design tool) to implement a clear seperation of layout and logic (as the layout is encapsulted in the xml). In his talk “Enterprise JavaFX 8″ Adam describes it as an implementation of “inversion of control”.
The outcome is a very powerful set of lightweight technologies to build JavaFx applications.

The wiring between the UI XML and the code a pretty minimal. On the one hand, in XML, you just need to define the controller class:

<AnchorPane id="AnchorPane" ... fx:controller="de.mynethome.presentation.DemoPresenter">

And optionally, event handler methods can also be set via XML with

<Button ... fx:id="button" onAction="#buttonClicked"  />

In the code, the UI components get injected by the @FXML annotation and the name used as fx:id :

  @FXML
  Button button;

Combine the power

My idea on the moment I saw it was to bring those two projects together to benefit from the features of both projects:

  • A clean and easy way to create the UI and build up the client
  • a powerful and non the less easy to use library for client-server communication and clear speration between logic on the server-side and UI-related code on the client with open-dolphin.

AfterburnerDolphin

You can find the outcome of this idea at my AfterburnerDolphin project at github.

It demonstrates the things mentioned above:

client structure

In the client module, you can find a clearly structured app, the design and layout clearly seperated (as extracted to xml and css files) from the logic (look at the App class and the DemoPresenter).

It’s all tied together via DI and convention-based confguration of afterburner.fx .

The client creates a PresentationModel and binds the button text value to the value of that model.
(DemoPresenter, Line 43)

  public void initialize(URL location, ResourceBundle res){
    JFXBinder.bind(ATT_ATTR_ID).of(textAttributeModel).to("text").of(button);
  }

On a button click, the client communicates via OpenDolphin with the server (server module, ApplicationAction) where the command for a new value (current date) of the presentation model’s attribute is created and send as a response.

(ApplicationAction, Line 17)

actionRegistry.register(ApplicationConstants.COMMAND_ID, new CommandHandler<Command>() {
            public void handleCommand(Command command, List<Command> response) {
              ValueChangedCommand valueChangedCommand = new ValueChangedCommand();
              long id = getServerDolphin().getAt(PM_APP).getAt(ATT_ATTR_ID).getId();
              valueChangedCommand.setAttributeId(id);
              valueChangedCommand.setNewValue(new Date());
              response.add(valueChangedCommand);
            }
        });

That demonstrates how easy this set of technologies lets you set up a well structured multi-tier application ;-) and implement a roundtrip between client and server.

Any business logic can be handled on the server, the client only need to implement the presentation. And the implementation and maintenance of the client UI is eased up by the clear structure implemented with the help of afterburner.fx .

The UI of this sample application is very simple, as you can see from the screen shot – before and after click on the button. The date used as die new button text is set on server side.

demo-beforeclickdemo-afterclick

Conclusion

I think, the combination of AfterBurner.fx and OpenDolphin provides a very powerful featureset.
At first, it’s easy and quick to setup and design UI Layout with Scence Builder.
After that, AfterBurner.fx and OpenDolphin allow you to build an application with clear, distinct seperation between layers:

  • UI layout (in XML)
  • UI logic (in client code)
  • Business Logic (and more) (in server code)

You can be up and running very quickly with a short time to initiate application development. With the clear seperation, I would expected the setup to provide the foundation for a very maintainable project.
And with OpenDolphin you protect your investment as you can very quickly provide an multi-channel application (providing an mobile app UI based on the already developed server code) or switch to another UI technology and reuse the business logic implemented on server side.

Further steps

Fork AfterburnerDolphin on github.

Find out more about Afterburner.fx, visit the Afterburner.fx Homepage.

Get more information on OpenDolphin with the OpenDolphin documentation.
Or look at the OpenDolphin videos on youtube.

20. März 2013

Google Reader Shutdown – was man daraus lernen kann

Ein lesenswerter Kommentar über den Wert und die Wichtigkeit frei verfügbarer Schnittstellen und Formate und den negativen Effekt, den geschlossene Dienste haben, aufgehangen am “Shutdown” des Google Readers:

http://www.marco.org/2013/03/19/free-works

Die zentrale Aussage wird nochmal zusammengefasst mit den Worten:

And we lucked out with Reader — imagine how much worse it would be if website owners weren’t publishing open RSS feeds for anyone to fetch and process, but were instead posting each item to a proprietary Google API. We’d have almost no chance of building a successful alternative.

That’s Twitter, Facebook, and Google+. (Does the shutdown make more sense now?)

Auch zeigt das Statement sehr deutlich, warum es immer noch Sinn ergibt, ein eigenes Blog oder eine eigene Bildergalerie zu pflegen und nicht alles einfach via G+, Facebook und Twitter zu machen. Denn dort sind es nur Beiträge in einem grossen System, über das Ihr keine Kontrolle (und zum Teil auch weniger Rechte) habt.

Übrigens wurde in der letzten Binärgewitter Folge auch über das Ende des Google Reader gesprochen, in den Shownotes finden sich also ein paar Hinweise auf Alternativen.

22. Februar 2013

Fix-It: Spotify – 30 Tage Premium aktivieren

Falls noch jemand fast daran verzweifelt, die 30 Tage Premium Test-Periode zu aktivieren, hier ein kleiner Tipp.

Kurz zum Kontext: Spotify ist ein Musik-Streaming-Dienst, bei dem man per Computer, Tablet oder Smartphone auf eine unermessliche Musikauswahl zurückgreifen kann. Für werbefreies Hören werden per Computer 5 € / Monat fällig, wenn man auch unterwegs oder auch einfach zuhause per Smartphone oder Tablet hören möchte, braucht man den “Premium” Zugang, für den 9,99 € fällig werden.
Streaming-Dienste bewegen sich zur Zeit im wesentlichen im der gleichen Preis-Liga, so dass man z.B. bei Simfy und Napster in etwa das gleiche für ähnliche Beträge bekommt.

Da man nach Möglichkeit nicht einfach mal kurz 9,99 € zum ausprobieren ausgeben möchte (schließlich könnte man sich davon auch eine CD kaufen – zwar “nur” eine, aber die gehört einem dann wenigstens und geht nicht weg wenn man das Abo kündigt, aber das ist einen eigenen Post wert…), wird ein 30 Tage-Test angeboten.

Geht man nun nicht direkt den Weg über die Website, sondern registiert sich nach Installation der App auf Telefon oder Tablet (selbstverständlich zum Test ersteinmal ohne Facebook-Verknüpfung) und versucht erst später, per Login auf der Website den 30 Tage Test zu aktualisieren, kann man in die komische Situation kommen, dass man zwar noch eine Zahlungsmethode auswählen darf, danach aber nur noch “Loading data…” sieht…und vergeblich auf das Laden des Kreditkartenformulars etc. wartet.

Des Rätsels Lösung ist nun, dass man sich zurück in seine Kontoeinstellungen hangeln muss und dort unbedingt eine gültige Postleitzahl (im erlebten Fall hatte sich dort beim Anmelden via App eine simple “1″ eingetragen) und ein passendes Geburtsdatum eintragen sollte. Ist das geschehen, klappt es auch endlich mit dem Formular für die Zahlungsdaten und man kann erstmal 30 Tage testen :-)

(Aber nicht vergessen, die Erinnerung für die pünktliche Kündigung in den Kalender zu setzen – damit man wenn, dann doch bewusst für Spotify zahlt und nicht erstmal 10 € los ist, bevor man merkt dass man da was ausprobiert hatte… ;-) )

Viel Spass beim Musik hören und stöbern! :)

30. Januar 2013

Weltuntergangsszenarien: Gamma-Stürme!

Nachdem es vor kurzem mit dem Weltuntergang nicht wie versprochen geklappt hat, gibt es neuen Stoff, mit dem die Geschichte zum Ende dieser Welt gesponnen werden kann:

.. könnte ein ähnliches Ereignis heute die empfindlichen elektronischen Systeme verwüsten, von denen fortgeschrittene Gesellschaften abhängen…

aus heise.de: Erde vor 1200 Jahren von starkem Gammablitz getroffen

Und ein Ausfall unserer technischen Umwelt würde mit Sicherheit einiges verändern und so in gewisser Weise auch ein Ende der Welt bedeuten.

Es bleibt spannend. :)

25. Januar 2013

LaTeX für Archäologen

Gerne weise ich immer wieder Mitmenschen, die sich an die Ausarbeitung längerer (oder gar wissenschaftlicher) Texte machen, auf die Vorzüge von Latex hin. Schliesslich habe ich damit zu meiner Studienzeit (und auch davor und danach) gute Erfahrung gemacht.

So kam es, dass ich kürzlich mit der Bitte konfrontiert wurde, das Literaturverzeichnis für eine Hausarbeit gemäss den Anforderungen des deutschen Archäologischen Institut (DAI) anzupassen.

Da ich bei meinen Recherchen zu dieser Aufgabe nicht den Eindruck hatte, dass es im Netz zu Hilfen zu diesem Thema wimmelt, habe ich mich entschlossen, das Ergebnis in Form einer Vorlage via github zur Verfügung zu stellen.

Die Vorlage basiert grundsätzlich auf dem KOMA Script, die Dokumentation zu diesem ist unbedingt zu empfehlen.
Des weiteren habe ich die Latex-Diplomarbeit-Vorlage von Matthias Pospiech genutzt – auf seiner Homepage finden sich auch andere Vorlagen und gute Dokumentation.
Schlussendlich habe ich das ganze dann entsprechend der Hinweise aus dem Mr Unix Forum (http://www.mrunix.de/forums/showthread.php?t=70006) erweitert.

Das Repository mit der Vorlage findet sich auf github: archaeologyLatexTemplate

Ein Beispiel PDF kann man von dort auch abrufen.

Wen interessiert, wie man während der Arbeit an seinem Dokument sinnvoll die Zwischenstände sichert (und auch einfach auf frühere Versionen zugreifen kann), dem sei dieser Artikel zur Verwendung von git als Versionsverwaltung (VCS) für Latex Quellen bei uselessness.de empfohlen. Vieles dort gilt auch, wenn man SVN oder ein anderes VCS verwendet.

23. Januar 2013

Schlüssel und Schlösser

Nachdem am Wochenende schon bei der Sendung mit der Maus erklärt wurde, wie eigentlich Schlüssel und Schlösser funktionieren, bin ich nun noch auf einen guten Blogpost gestossen, der in einer kurzen Animation zeigt, was da eigentlich passiert:

How Do Keys Work? Explained In One GIF

Viel Spass :)

13. Januar 2013

Neue Kopfhörer: Teufel Aureol Fidelity

Danke nodch.de ! Dank eurem Weihnachts-/Geburtstagsgewinnspiel bin ich nun im Besitz der Teufel Aureol Fidelity (Amazon) In-Ear Kopfhörer.

Wie auf den Bildern und in der Produktbeschreibung zu sehen, werden sie mit einer Menge Zubehör und Austausch-Ohrstöpseln geliefert, und das in edler Verpackung. Da beeindruckt schon das Auspacken ;-)

Das wichtigste ist aber, das das kein Blendversuch ist – die Kopfhörer selbst machen einen sehr wertigen Eindruck und scheinen wirklich gut verarbeitet zu sein. Und der Klang kann sich auch sehr gut hören lassen.

Insgesamt ein sehr schönes nachträgliches Weihnachtsgeschenk! Danke :)

Anbei noch ein paar Bilder vom Auspacken – nicht über die Qualität wundern, die Schnappschüsse sind beim Auspacken und Freuen entstanden ;-)

12. Januar 2013

Der richtige Fahrradsattel….

Aus gegebenem Anlass ein Hinweis auf einen schönen Artikel zum Thema ‘Sattelwahl’:

48zwoelf.de: Gut gesessen ist gut geradelt

Denn schließlich ist bald Frühling und man will ja vorbereitet sein ;-)

Viel Spass und allezeit gute Fahrt :)

 
 

24. Dezember 2012

Frohe Weihnachten 2012!

Ich wünsche allen ein frohes, wundervolles Weihnachtsfest :-)

Genießt die Zeit die lasst es euch gut gehen – und lasst Stress und Unmut vor der Tür ;-)

19. Dezember 2012

Android: Nachfolger für k-9 Mail: k-10!

Der Emailclient K-9 für Android ist schon etwas älter (schon 2009 habe ich schon was zu der gelungenen App geschrieben) und wirkt, wie man auf Androidpit richtig bemerkt, auf einem aktuellen Android 4, wie es zum Glück auf meinem Handy und Tablet zuhause ist, etwas angestaubt.

Wie ich also auf AndroidPit gelesen habe, gibt es ab heute endlich einen Nachfolger. In der kostenpflichtigern Version für 2.95 € (als Weihnachtsaktion). Aber so lange, wie ich mit K-9 schon zufrieden bin, denke ich dass ich die Vorschusslorbeeren geben werde und mich direkt mit der Bezahlversion versuchen werde.
Zumal ich meine Signatur gerne anpassen möchte ;-) . Bleibt nur noch zu hoffen, dass die Einstellungen von k-9 importierbar und die Integration mit APG, der App zur Mailverschlüsselung auf Androidgeräten, ebenso gut wie bisher sind.

Bis jetzt kann ich k-10 noch nicht im Play Store finden und installieren, also muss ich mich für den ersten Eindruck noch gedulden.

Ich bin gespannt. :)

Update

So, k-10 Mail war gestern Abend dann noch vor “Tageswechsel” im Market – Ich hab es direkt ausprobiert und bin bisher sehr zufrieden. Einige Punkte, die vielleicht ganz nützlich sind, in Stichpunkten:

  • Import von k-9 Mail Einstellungen funktionierte problemlos.
  • Kryptographie mit APG als OpenPGP Provider funktioniert auch tadellos.
  • Aktzeptieren von self- oder cacert signed SSL Zertifikaten des Mailservers nach dem Import der Einstellungen muss manuell angestoßen werden. Das kann man über die Einstellungen des jeweiligen Kontos für Postausgangs- oder -eingangsserver (“Nachrichten abrufen” / “Nachrichten senden” -> Einstellungen Posteingang/Postausgang ).
    Dort die Einstellungen überprüfen und auf “weiter” drücken, um die Verbindung testen zu lassen – und hier erscheint dann auch ein Dialog zum aktzeptieren des unbekannten Zertifikats. Beim Versuch, vorher Mails abrufen erscheint keine Fehlermeldung o.ä., es werden einfach keine Nachrichten angezeigt.
  • Der Abruf der Ordner im IMAP Account funktioniert leider nicht vollautomatisch nach erfolgtem Import der Einstellungen. Hier war ich auf die Hilfe des Autors von k-10 angewiesen, aber er hat noch letzte Nacht auf meine Mail reagiert und mir geholfen, was direkt nochmal 10 Bonuspunkte für guten Support gibt :D
    Die Lösung ist, dass man die Account-Daten neu erstellen (mit dem Server abgleichen) muss. Um das zu tun, muss man in der Kontenliste lange auf das Emailkonto für das man die Ordner neu laden möchte gedrückt halten und im erscheinenden Menü “Alle Daten wiederherstellen (für Experten)” auswählen. Dabei werden keine Daten auf dem Server geändert und die Einstellungen in K-10 bleiben auch erhalten.
    Der Autor hat laut seiner Antwort durch meine Frage ralisiert, dass es sich um eine Schwäche im UI handelt und will die Synchronisierung der IMAP Verzeichnisse in Zukunft prominenter / eindeutiger im UI zugänglich machen.
  • Das neue UI verleiht demmächtigen k9 quasi Flügel, ich halte es für gelungen.
  • Gerade auf dem Tablet kommt die neue UI richtig gut zur Geltung.

Also insgesamt eine sehr gelungende Überarbeitung des UI. Ich bin gespannt, was die weitere Entwicklung bringt :)

mynethome.de wird erstellt mit WordPress
Beiträge (RSS) und Kommentare (RSS)

(c) 2005 - 2009 Markus Schlichting