Wie man JavaFX in Eclipse einbindet

Mit JavaFX zu arbeiten bietet einige Vorzüge:

–          angenehmer als Swing.

–          Abhängigkeiten zu AWT sind nur in Ausnahmefälle vorhanden (Beispiel System Tray).

–          saubere Trennung zwischen Aufbau (FXML), Gestaltung (CSS) und Funktionalität (Java)

–         neue Möglichkeiten durch Film, Musik, 3D-Programmierung und mehr.

–          Uvm.

Prinzipiell gilt seit Java 7 Update 6, dass man JavaFX nicht mehr separat handhaben muss. Es ist im SDK und auch in der Laufzeitumgebung integriert. Mit NetBeans kann man direkt loslegen. Die IDE von Oracle ist schon vorkonfiguriert und bietet beim Projekt-Setup auch direkt die Möglichkeit, ein Projekt als JavaFX Anwendung zu erstellen.

Bei Eclipse fehlt diese Möglichkeit. Der Nachteil ist allerdings nur minimal. Als erstes möchte ich kurz zeigen, wie man das Javaprojekt „JavaFX ready“ macht. Im Anschluss möchte ich noch kurz das eine oder andere Plugin vorstellen, welche ein gutes Stück Luxus für das Arbeiten  mit JavaFX bieten.

Das Projekt für JavaFX vorbereiten

JavaFX ist wie bereits erwähnt schon im JDK enthalten. Das macht ja auch Sinn. Immerhin soll es eines Tages Swing vollständig ablösen [Anm.: Je früher umso besser]. Wer so jungfräulich an die Sache geht, wie ich es bei meinem ersten Projekt tat, könnte sich spätestens dann eine Überraschung erleben, wenn die Importe scheitern.

Bei diesem Import handelt es sich um den vielleicht sogar wichtigsten. Ohne den Einsatz von Application kann nämlich die Anwendung nicht als JavaFX Anwendung realisiert werden.
Des Rätsels Lösung lautet wie folgt: Obwohl JavaFX mit dem JDK mitgeliefert wird, ist es noch nicht richtig integriert.

Ich traue zwar durchaus dem geneigten Leser zu, dass er spätestens an dieser Stelle weiß, wie er das Problem lösen kann. Der Vollständigkeit halber möchte ich aber trotzdem gerne kurz schildern, wie vorgegangen wird.

  1. Für das jeweilige Projekt, das JavaFX anwenden soll, öffnen wir die Einstellungen.
    Man kann auch direkt über Rechtsklick->Build Path->Configure Build Path… gehen.
  2. Unter dem Reiter Libraries gehen wir auf Add External JARs….
  3. Unter [Pfad zum JDK]\jdk1.7.[0_06 oder höher]\jre\lib finden wir die jfxrt.jar, welche wir auswählen.
  4. Wir freuen uns, dass wir endlich loslegen können.
Bild 1: Die Einstellungen für den Build Path öffnen um die jfxrt.jar hinzuzufügen

Bild 1: Die Einstellungen für den Build Path öffnen um die jfxrt.jar hinzuzufügen

Das ist alles, was notwendig ist. JavaFX hat eine eigene Runtime, wofür das rt im Namen steht. Ab der nächsten Javaversion soll übrigens die jfxrt.jar im Classpath enthalten sein, wodurch diese Lösung obsolet wird.

Enhance the FX-Experience!

Und schon sind wir beim zweiten Teil des Blogs. Nachdem wir nun so weit sind, dass wir ungestört coden können, kommen hier noch ein paar Plugins, die einem das Arbeiten etwas versüßen.

Wer in den Weiten des Internets nach Plugins sucht, wird so ziemlich sofort auf e(fx)clipse stoßen.

Das Packet besteht aus einem Sammelbecken von mehreren (mehr oder weniger) nützlichen Tools, welche nicht nur das Arbeiten mit JavaFX als angenehmer gestalten, sondern auch Themen wie Deployment aufgreifen. Das Packet beinhaltet 9 Komponenten und unterstützt Eclipse in den Versionen 4.2 und 3.8 (nach Angaben der Seite).

Die Plugins um JDT und PDE sollen dem Anwender ein „Swing-Feeling“ geben. Um ehrlich zu sein habe ich mir die Sachen dazu nicht einmal angeschaut. Der Grund dafür steht im ersten Satz des Absatzes….

Das RRobot DSL Plugin könnte für Entwickler interessant sein, welche schon mit der alten Version von JavaFX gearbeitet haben und diesen Stil gerne behalten würden. Das Plugin bietet eine Metasprache, welche an die von JavaFX 1.3 angelehnt ist. Diese wird dann in FXML übersetzt.

Meine beiden Favoriten sind für mich auf jeden Fall die CSS und die FXML Plugins. Wer eines von beiden anwenden will, sollte sich die Plugins unbedingt installieren. Die Plugins liefern jeweils Editoren, welche die Dialekte sprechen. Und um die Sache abzurunden: Beide bieten jeweils Syntax- Highlighting an. Wer sich also an die Dialekte gewöhnen muss, bekommt einen wunderbaren „Spickzettel“, während der Profi wie gewohnt mit hohem Tempo codet, indem er fast nur noch „durchtabbt“.

 

Bild 2: Beispiel für das Syntax-Highlighting

Bild 2: Beispiel für das Syntax-Highlighting

Das Packet enthält noch weitere Plugins, wie etwa das zur Unterstützung von OSGi. Aus Mangel an Bedarf habe ich mich mit den anderen Plugins nicht beschäftigt. Wer sich allerdings einen weiteren Überblick verschaffen will, den würde ich an dieser Stelle einfach auf die Homepage von e(fx)clipse verweisen: http://efxclipse.org/

Für diejenigen, die gleich mit den Plugins loslegen wollen:

Release build: http://downloads.efxclipse.org/p2-repos/releases/latest/

Nightly builds: http://www.efxclipse.org/p2-repos/nightly/site/

Veröffentlicht in Java, Softwareentwicklung Getagged mit: , , , , , , , ,
2 commenti su “Wie man JavaFX in Eclipse einbindet
  1. ProZo sagt:

    Bekommt man das Syntax- Highlighting auch im Einzelnen ohne den ganze Rest?
    Danke für den Beitrag, war hilfreich.
    Grüße

    • Oliver Baumann sagt:

      Entschuldige bitte die späte Antwort. Ich war die letzten 3 Wochen verhindert und habe gerade erst den Kommentar entdeckt.

      Die Syntax-Vervollständigung / das Syntax-Highlighting funktioniert soweit ohne weiteren Aufwand.
      Seit dem Release von Java 8 befindet sich JavaFX zudem im Classpath, so dass die Einbindung von Hand wegfällt.
      Der obere Teil des Blogs ist nur für die Entwicklung mit Java 7 notwendig.
      Das CSS-Modul aus dem e(fx)clipse würde ich aber dennoch weiter empfehlen.
      Falls ich mich richtig erinnere kennt der Standard-CSS-Editor von Eclipse den FX spezifischen Dialekt nicht.

      Ich hoffe, dass ich die Frage richtig verstanden habe.
      Mit freundlichen Grüßen,
      Oliver Baumann

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *

*

* Copy This Password *

* Type Or Paste Password Here *