Anzeige
Anzeige
Software & Entwicklung
Artikel merken

Rich Internet für Web, Desktop und Mobiltelefon: JavaFX

RIA (Rich Internet Applications) ist aktuell eines der populärsten Schlagworte rund um das WWW – dabei geht es grob vereinfacht darum, im Clientrechner einer Web-Applikation „reichhaltigere“ Möglichkeiten zur Verfügung zu stellen. DHTML oder AJAX, etablierte Plugins wie Java-Applets oder Flash oder neue Web-Technologien wie AIR oder Silverlight können die Beschränkungen der klassischen Webbrowser aufheben.

6 Min. Lesezeit
Anzeige
Anzeige

Mit JavaFX [1] positioniert Sun Microsystems [2] eine weitere sehr mächtige Technologie, die eine neue Skripting-Plattform für Web- und Desktop-Applikationen sowie mobile Anwendungen zur Verfügung stellt. Diese Technologie soll hier anhand eines kleinen Workshops vorgestellt werden.

Anzeige
Anzeige

Die Skripting-Plattform JavaFX (oder vollständig JavaFX Technology) steht für ein vollständiges, erweiterbares Open-Source-System zur Entwicklung plattformneutraler Java-Applikationen über sämtliche potenziellen Zielebenen hinweg – von der Desktop-Applikation über mobile Anwendungen bis hin zu RIAs. Die verschiedenen Applikationstypen verschmelzen dabei nahezu nahtlos.

Der zentrale Bestandteil der gesamten JavaFX Technology ist mit JavaFX Script eine deklarative und statisch typisierte Skriptsprache auf Basis von Java. JavaFX Script sitzt quasi auf der „normalen“ Java-Plattform. Damit benötigen Sie für eine JavaFX-Applikation sowohl eine normale Java-Laufzeitumgebung (JRE – Java Runtime Environment – ab der Version 5.0) beziehungsweise Java-Entwicklungstools (JDK) als auch eine Erweiterung für JavaFX selbst.

Anzeige
Anzeige

Wozu JavaFX Script?

JavaFX Script hat im Gegensatz zu Java selbst eine recht eng fokussierte Zielrichtung – die möglichst einfache Erstellung von Benutzeroberflächen unter Verwendung der Java-Techniken Swing [3], Java 2D [4] und Java 3D [5]. Dazu hat Sun JavaFX Script als eine leicht zu erlernende Mischung aus Java, HTML, XML, JavaScript und PHP entwickelt, mit prozeduralen, deklarativen Ansätzen, die die strenge Objektorientierung von Java ergänzen. Dennoch ist JavaFX respektive JavaFX Script vollständig in die Infrastruktur von Java integriert. Vor allen Dingen jenseits der visuellen Ebene ist durch die Verwendung von reinen Java-APIs alles machbar, was sonst mit anderen Java-Applikation erreicht werden kann. Java-Klassen lassen sich also direkt in JavaFX-Script-Applikationen verwenden.

Anzeige
Anzeige

Ein Highlight von JavaFX Script ist sicher, dass damit bei der Entwicklung einer Java-Applikation Arbeitsschritte im Projekt auf Personen verteilt werden können, die keine Java-Kenntnisse benötigen. Manche Komponenten in JavaFX rendern sogar reines HTML in Java-Swing- und Java-2D-Oberflächen. Das bedeutet, dass sogar Personen, die nur über HTML-Kenntnisse verfügen oder einen Webeditor bedienen können, an der Erstellung einer Oberfläche für die Applikation mitarbeiten können. Wie das funktioniert, zeigen wir im Folgenden.

Voraussetzungen

JavaFX liegt zwar immer noch in der (sehr ausgereiften)
Betaversion vor, es gibt aber mittlerweile mächtige
Entwicklungstools, etwa Plugins für Eclipse und NetBeans. Der Quelltext
kann bei JavaFX Script jedoch auch in jedem Klartexteditor
erstellt werden. Allerdings muss der Code, der mit der Dateierweiterung
„.fx“ zu speichern ist, noch übersetzt und dann ausgeführt werden.

Anzeige
Anzeige

Im Zentrum dieser Schritte (auch der JavaFX-Erweiterungen von Eclipse und NetBeans) steht die sogenannte JavaFX Shell. Damit wird – auch unter Verwendung des JDK, das ebenfalls installiert sein muss – aus JavaFX-Code „normaler“ Java-Bytecode erzeugt, der dann in einer (erweiterten) JRE wie eine gewöhnliche Java-Applikation laufen kann.

Die JavaFX Shell können Sie samt weiterer Utilities als komprimierte Datei kostenlos aus dem Internet laden [6]. Damit erhalten Sie zudem die gesamte JavaFX-API samt diverser Beispielapplikationen.

Wenn Sie die komprimierte Datei auf Ihrem Rechner extrahieren, erhalten Sie im Hauptordner verschiedene Unterverzeichnisse. Die wichtigsten Strukturen liegen im Verzeichnis „trunk“. Dort befindet sich unter anderem das Unterverzeichnis „bin“, das die JavaFX Shell beziehungsweise die zugehörige Aufrufapplikationen javafx.sh und javafx.bat enthält. Wenn diese als Argumente angegeben werden, lassen sich damit letztendlich alle JavaFX-Applikationen ausführen.

Anzeige
Anzeige

Zusätzlich sind in diesem Verzeichnis Beispiele, Bibliotheken, verschiedene Quelltexte sowie eine Dokumentation enthalten, die wie andere Java-APIs eine analoge Struktur aus HTML und CSS hat und mit jedem Browser angesehen werden kann. Sie steht auch online [7] zur Verfügung.

Der Quelltext der ersten Version

Mit dem folgenden Quelltext lässt sich ein erstes, einfaches JavaFX-Programm mit einer grafischen Swing-Oberfläche erstellen. Es ist dabei allerdings auf die strikte Einhaltung der Groß- und Kleinschreibung zu achten, sämtliche Kommata, Klammern, Punkte, Doppelpunkte, Semikola etc. müssen exakt so notiert werden, wie Sie es im Listing sehen.

JavaFX Script
import javafx.ui.*;
Frame {
	width: 300
	height: 100
	visible: true
}

Listing 1

Einfacher geht es kaum: Aus einer Standardklasse von JavaFX (javafx.ui.Frame – das entspricht einem Swing-Fenster javax.swing.JFrame) wird auf deklarative Weise ein Objekt mit definierter Breite und Höhe erzeugt und angezeigt.

Anzeige
Anzeige

Gerade Java-Programmierer werden hier kaum eine Ähnlichkeit zu „normalem“ Java ausmachen können. JavaFX Script hat zwar in wesentlichen Bestandteilen die selbe Syntaxstruktur wie Java, unterscheidet sich jedoch massiv in vielen syntaktischen Elementen. Noch stärkere Abweichungen ergeben sich in Hinsicht auf die Konzeption.

JavaFX Script ist – wie schon das kleine Listing hier zeigt – deklarativ und hybrid. Es gibt also sowohl objektorientierte Techniken wie Klassen und Objekte, aber auch prozedurale Techniken wie Funktionen und Prozeduren. Die deklarative Erzeugung von Objekten soll samt einer eigenen JavaFX-API insbesondere Programmierern ohne fundierten Java- und/oder OO-Background die Erstellung von Objekten erleichtern.

Wie im obigen Beispiel geschehen, notiert man bei dieser deklarativen Erzeugung im Quellcode den Bezeichner einer Klasse sowie in einem nachfolgenden Block in geschweiften Klammern die Werte für alle verfügbaren und relevanten Attribute beziehungsweise Eigenschaften für eine Instanz dieser Klasse. Dabei wird der Wert eines Attributs per Doppelpunkt abgetrennt hinter dem Attribut notiert.

Anzeige
Anzeige

Das erste Programm ausführen

Speichern Sie den Quelltext unter „ErstesJavaFXProgramm.fx“ – zum Beispiel in einem Verzeichnis „JavaFXBeispiele“. Das Ausführen des Programms erfolgt über das Shell-Skript oder die Batch-Datei in dem bin-Verzeichnis der JavaFX Shell. Dazu öffnen Sie eine Konsole, wechseln in das Verzeichnis JavaFXBeispiele und geben dann in der Konsole den Namen der Quellcodedatei als Parameter von javafx.bat (oder javafx.sh unter Unix/Linx) an.

Auf Windows-Systemen wäre dies – unter Beachtung von Pfadangaben – der folgende Programmaufruf:

Shell
javafx.bat ErstesJavaFXProgramm.fx

Listing 2

In der Betaversion der JavaFX Shell ist noch ein ergänzender Schritt unter Windows notwendig, bevor Sie die JavaFX-Applikation über den Aufruf der Batch-Datei ausführen können: In der Batch-Datei javafx.bat muss eine Erweiterung des Klassenpfads vorgenommen werden. Sie finden dort eine solche oder ähnlich lautende Zeile:

Anzeige
Anzeige
Windows Batch
%java% %opts% %debug% %opengl% -classpath %~dp0../javafxrt/src/javafx

Listing 3

Diese muss wie folgt erweitert werden:

Windows Batch
%java% %opts% %debug% %opengl% -classpath .;%~dp0../javafxrt/src/javafx

Listing 4

Die minimale Erweiterung ist der Punkt (.) hinter -classpath und vor dem Zeichen %. Damit binden Sie explizit das aktuelle Verzeichnis in dem Klassenpfad ein.

Wenn bei Ihnen nun alles richtig konfiguriert ist und Sie keinen Fehler im Quelltext gemacht haben, sollten Sie nach dem Start eine Java-Applikation mit einem Swing-Fenster sehen.

Anzeige
Anzeige

Das Programm erweitern

Das Programm soll nun um eine Titelzeile und ein Bild erweitert und das Fenster etwas vergrößert werden. Das Listing soll anschließend so aussehen:

JavaFX Script
import javafx.ui.*;
Frame {
	width: 400
	height: 200
	visible: true
	title: "Meine erste JavaFX-Applikation"
	content: Label {
			text: "<html><div align='center'>
			<h1 style='background:red'>
			Willkommen auf meiner Homepage</h1>
			<img xsrc='http://rjs.de/bilder/devil.gif' /></div></html>"
		}
}

Listing 5

Im Grunde wurden nur die Werte für die Höhe und Breite des Fensters angepasst und zwei weitere Eigenschaften (title und content) ergänzt.

Die folgenden Details dürften aber wieder einige Leser zum
Staunen bringen:

  1. Der Wert von content ist wieder ein Objekt (vom Typ Label), das deklarativ notiert wird.
  2. Der Inhalt von der Eigenschaft text eines Labels kann HTML sein, der zu Java gerendert wird. Inklusive der Angabe von Referenzen auf externe Ressourcen wie Bilder, die auch aus dem Web nachgeladen werden können – hier sehen Sie die neuen Trends von RIA. Auch das Verarbeiten von CSS funktioniert (eingeschränkt). Das Gestalten kann sogar über die Verknüpfung von HTML mit dynamischen JavaFX-Anweisungen kombiniert werden, was nahezu unbegrenzte Möglichkeiten eröffnet. Letztendlich kommt aber eine Java-Swing-Oberfläche heraus, die eine reine Desktop-Applikation, eine mobile Applikation, eine RIA oder was auch immer visuell repräsentiert.
  3. Ein String kann in JavaFX über mehrere Zeilen verteilt werden, ohne Stringverknüpfung! Das erleichtert zum Beispiel das Kopieren von HTML-Quellcodepassagen aus HTML-Editoren.

Fazit

Insbesondere die einfache deklarative Erstellung von Swing-Oberflächen, die sogar unter Verwendung von HTML und CSS (auch aus dem Web) erfolgen kann, die Verwendung von etabliertem Java unterhalb der Oberfläche sowie die plattformneutrale potenzielle Ausführung dieser Applikationen eröffnen JavaFX große Möglichkeiten. Es wird spannend sein, die Entwicklung zu beobachten.

Mehr zu diesem Thema
Fast fertig!

Bitte klicke auf den Link in der Bestätigungsmail, um deine Anmeldung abzuschließen.

Du willst noch weitere Infos zum Newsletter? Jetzt mehr erfahren

Anzeige
Anzeige
Schreib den ersten Kommentar!
Bitte beachte unsere Community-Richtlinien

Wir freuen uns über kontroverse Diskussionen, die gerne auch mal hitzig geführt werden dürfen. Beleidigende, grob anstößige, rassistische und strafrechtlich relevante Äußerungen und Beiträge tolerieren wir nicht. Bitte achte darauf, dass du keine Texte veröffentlichst, für die du keine ausdrückliche Erlaubnis des Urhebers hast. Ebenfalls nicht erlaubt ist der Missbrauch der Webangebote unter t3n.de als Werbeplattform. Die Nennung von Produktnamen, Herstellern, Dienstleistern und Websites ist nur dann zulässig, wenn damit nicht vorrangig der Zweck der Werbung verfolgt wird. Wir behalten uns vor, Beiträge, die diese Regeln verletzen, zu löschen und Accounts zeitweilig oder auf Dauer zu sperren.

Trotz all dieser notwendigen Regeln: Diskutiere kontrovers, sage anderen deine Meinung, trage mit weiterführenden Informationen zum Wissensaustausch bei, aber bleibe dabei fair und respektiere die Meinung anderer. Wir wünschen Dir viel Spaß mit den Webangeboten von t3n und freuen uns auf spannende Beiträge.

Dein t3n-Team

Melde dich mit deinem t3n Account an oder fülle die unteren Felder aus.

Bitte schalte deinen Adblocker für t3n.de aus!
Hallo und herzlich willkommen bei t3n!

Bitte schalte deinen Adblocker für t3n.de aus, um diesen Artikel zu lesen.

Wir sind ein unabhängiger Publisher mit einem Team von mehr als 75 fantastischen Menschen, aber ohne riesigen Konzern im Rücken. Banner und ähnliche Werbemittel sind für unsere Finanzierung sehr wichtig.

Schon jetzt und im Namen der gesamten t3n-Crew: vielen Dank für deine Unterstützung! 🙌

Deine t3n-Crew

Anleitung zur Deaktivierung
Artikel merken

Bitte melde dich an, um diesen Artikel in deiner persönlichen Merkliste auf t3n zu speichern.

Jetzt registrieren und merken

Du hast schon einen t3n-Account? Hier anmelden

oder
Auf Mastodon teilen

Gib die URL deiner Mastodon-Instanz ein, um den Artikel zu teilen.

Anzeige
Anzeige