© Excellent backgrounds/Shutterstock.com
Ab JDK 1.8 wird JavaFX um eine Dimension reicher

Ab JDK 1.8 wird JavaFX um eine Dimension reicher


JavaFX bekommt ab JDK 1.8 ein verbessertes 3D-API, das es relativ einfach macht, sich virtuelle 3-D-Welten zu erschaffen, vielleicht auch die eigene Applikation etwas aufzupeppen oder einfach nur, um etwas zu experimentieren. Wir wollen im Folgenden ein Programm entwerfen, das baumähnliche Strukturen auf den Bildschirm zeichnet – keine abstrakten, sondern tatsächliche, organische Bäume.

Als Implementierungssprache wird Scala verwendet. Diese Programmiersprache bedarf wohl keiner weiteren Vorstellung im Java Magazin (Lesetipp). JavaFX als offizieller Nachfolger von Swing sollte dem interessierten Java-Entwickler ebenso präsent sein.

JM6_13.tif_fmt2.jpg

Lesetipp

Über den aktuellen Stand von Scala informiert der große Schwerpunkt in der Ausgabe 6.2013 des Java Magazins: www.jaxenter.de/magazines/Java-Magazin-613

Die grundlegenden Designentscheidungen von JavaFX machen es möglich, in wenigen Zeilen Code schon ein recht komplexes Verhalten zu modellieren. Da JavaFX im Wesentlichen auf einem Scene-Graph basiert (es gibt Knoten mit Eltern-Kind-Beziehungen), ist der Schritt, ein 3D-API für JavaFX einzuführen, naheliegend. Um den im Artikel beschriebenen Sourcecode selbst ausprobieren zu können, muss man einen Early Access Build vom JDK 8 installieren [1].

Der vollständige Sourcecode zu diesem Artikel befindet sich auf meiner GitHub-Seite [2], sodass man sich das Abtippen sparen kann. In Abbildung 1 sieht man das Ergebnis des Programms, und unter [3] gibt es dazu ein kurzes Video.

ladstaetter_1a.tif_fmt2.jpg Abb. 1: Screenshots des Programms

Los geht’s

Das Programm zeigt also im besten Fall eine Struktur, die einem Baum nicht unähnlich ist. Sicherlich nicht perfekt, aber gut genug, um sich mit ein paar Konzepten des 3D-API vertraut zu machen. Des Weiteren ist die Fingerübung auch ein nettes Beispiel für einen rekursiven Algorithmus, Pattern Matching, Implicits und Traits, sodass es von dieser Seite gesehen auch seinen Reiz hat. In Listing 1 sind die neuen Klassen aufgelistet, die ab JDK 1.8 dabei sind und von dem Beispiel benötigt werden.

Listing 1

 import javafx.scene.PointLight import javafx.scene.paint.Material import javafx.scene.paint.PhongMaterial import javafx.scene.shape.Cylinder import javafx.scene.shape.Shape3D import javafx.scene.shape.Sphere
ladstaetter_2.tif_fmt1.jpgAbb. 2: Screenshot des Typs „Shape3D“

Es gibt also neue Shapes, die man verwenden kann – Cylinder und Sphere leiten von einer abstrakten Klasse Shape3D ab. Wie in Abbildung 2 ersichtlich, gibt es noch weitere Shapes wie MeshView oder Box.

Die Klasse...

Neugierig geworden?

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang