JavaFX: One codebase to rule them all!

Plattformübergreifende mobile Applikationen mit JavaFX

jd_run_anywhere

Mit Veröffentlichung der ersten Version von JavaFX (2+) führte sogleich “going mobile” die Hitlisten der am meisten gewünschten Features an. Die Vorstellung, auf einer Codebasis Applikationen für diverse Plattformen bereitstellen zu können (das berühmte WORA Paradigma – Write Once Run Anywhere) erscheint schon sehr verlockend.

Auf der JavaOne 2013 hat Oracle prototypisch gezeigt, dass es möglich ist, JavaFX-basierte Applikationen auf mobile Geräte, auf denen Android und iOS läuft, zu portieren. Danach zog sich Oracle aus dem Thema offiziell zurück und übergab den Code der Community.

Das daraufhin Ende 2013 von Johan Vos gestartete Projekt JavaFXPorts hatte es sich zunächst zur Aufgabe gemacht, JavaFX basierend auf OpenJFX nach Android zu portieren und gewann auf der JavaOne 2014 den Duke’s Choice Award.

Im Februar 2015 nun taten sich Johan’s Firma LodgOn (JavaFXPorts, JavaFX -> Android) und Trillian Mobile (das Unternehmen hinter RoboVM, JavaFX -> iOS) zusammen, um gemeinsam das Gradle JavaFX Plugin “javafxmobile-plugin” zu veröffentlichen.
weiterlesen

Jens Deters

Checked Builder Pattern in Java

Bei der Verwendung des Builder Pattern gibt es immer wieder die Herausforderung,
dass man bei der Erzeugung der finalen Instanz die Gültigkeit aller vorangegangenen
Schritte überprüfen muss. Anders formuliert: Wurde eine gültige Kombination der
Methoden, die die Attribute setzen, verwendet? Dazu sehen wir uns das nachfolgende Beispiel einmal genauer an.
Wir haben zum einen die Klasse, von der Instanzen erzeugt werden sollen. Hier wurde auch gleich ein passender Builder generiert.

weiterlesen

Sven Ruppert

Cascaded Builder Pattern in Java

Wenn man mit dem Builder Pattern arbeitet, gelangt man an den Punkt, an dem man komplexe Objekte aufbauen muss. Nehmen wir nun an, dass wir ein Auto erzeugen möchten. Dieses besteht aus den Attributen Motor, Maschine und einer Anzahl Räder. Hierfür verwenden wir nun das nachfolgende Klassenmodell.

public class Car {
    private Engine engine;
    private List<wheel> wheelList;
}
 
public class Engine {
    private int power;
    private int type;
}
 
public class Wheel {
    private int size;
    private int type;
    private int colour;
}
</wheel>

Nun kann man für jede Klasse einen entsprechenden Builder generieren lassen. Wenn man sich dabei an das Basispattern hält, sieht das für die Klasse Wheel in etwa so aus:

weiterlesen

Sven Ruppert