+ All Categories
Transcript
Page 1: Desktop wiederentdeckt? - Moderne Anwendungen mit JavaFX

Thomas Künneth 1 Copyright © 2012 MATHEMA Software GmbH

Desktop wiederentdeckt?

Moderne Anwendungen mit JavaFX

Thomas Künneth

[email protected]

http://kuennetht.blogspot.com/

Page 2: Desktop wiederentdeckt? - Moderne Anwendungen mit JavaFX

Thomas Künneth 2 Copyright © 2012 MATHEMA Software GmbH

Zur Person

Arbeitgeber:

Bundesagentur für Arbeit

Vorgaben, Richtlinien und Best Practices

zur Softwarearchitektur von

Eigenentwicklungen und Kaufprodukten

Unterstützung bei der Fortentwicklung der

Gesamtarchitektur

privat:

Autor von Fachbüchern und –artikeln zu

Java, Eclipse und Android

Gadget Junkie

Old-School-Gaming

Page 3: Desktop wiederentdeckt? - Moderne Anwendungen mit JavaFX

Thomas Künneth 3 Copyright © 2012 MATHEMA Software GmbH

Werbung (Was ist JavaFX?)

“the premier platform for rich enterprise client applications”

“the next step in the evolution of Java as a rich client platform”

“designed to provide a modern Java environment that

shortens the development time and eases the deployment of

data driven business and enterprise client applications”

“enables application developers to easily create and deploy

Rich Internet Applications that behave consistently across

multiple platforms”

http://www.oracle.com/technetwork/java/javafx/overview/javafx-2-datasheet-496523.pdf

Page 4: Desktop wiederentdeckt? - Moderne Anwendungen mit JavaFX

Thomas Künneth 4 Copyright © 2012 MATHEMA Software GmbH

Was bedeutet das?

JavaFX ist ein Technologiestapel für den Bau von

Benutzeroberflächen

Soll moderne Programmierschnittstellen bieten

Oberflächen sollen sich schnell umsetzen lassen

Oberflächen sollen „sexy“ aussehen

Soll zeitgemäße multimediale Fähigkeiten haben

Page 5: Desktop wiederentdeckt? - Moderne Anwendungen mit JavaFX

Thomas Künneth 5 Copyright © 2012 MATHEMA Software GmbH

Java? Oberflächen? Da war doch was...?

JavaFX ist offiziell der Nachfolger von Swing

Swing bleibt aber weiterhin Teil der Java SE Runtime

Swing- und JavaFX-Komponenten können in Anwendungen

gemischt werden

Derzeit ist JavaFX kein integraler Bestandteil der Java

Plattform. Dies soll sich mit Java 8 ändern.

Page 6: Desktop wiederentdeckt? - Moderne Anwendungen mit JavaFX

Thomas Künneth 6 Copyright © 2012 MATHEMA Software GmbH

Oracle hat JavaFX also im Griff

Aber: Stabile Sicht war nicht immer vorhanden

Lange Zeit viel Slide-Ware

Geschichte von JavaFX hat viele unerwartete Wendungen

Page 7: Desktop wiederentdeckt? - Moderne Anwendungen mit JavaFX

Thomas Künneth 7 Copyright © 2012 MATHEMA Software GmbH

Agenda

Ein Blick in die Geschichtsbücher

Wie lange gibt es JavaFX schon?

Wie hat es sich entwickelt?

Anatomie einer JavaFX-Anwendung

Struktur und Inhalt einer einfachen Anwendung

Ähnlichkeiten mit und Unterschiede zu Swing

Glaskugel

Hat JavaFX eine Chance?

Wie hält es Oracle mit seinem „neuen Liebling“?

Page 8: Desktop wiederentdeckt? - Moderne Anwendungen mit JavaFX

Thomas Künneth 8 Copyright © 2012 MATHEMA Software GmbH

Agenda

Ein Blick in die Geschichtsbücher

Anatomie einer JavaFX-Anwendung

Glaskugel

Page 9: Desktop wiederentdeckt? - Moderne Anwendungen mit JavaFX

Thomas Künneth 9 Copyright © 2012 MATHEMA Software GmbH

Schauspiel in mehreren Akten: 2007

JavaOne 2007: Sun kündigt JavaFX, JavaFX Script und

JavaFX Mobile an

Idee: mit der Programmiersprache JavaFX Script und

bestimmten weiteren Tools grafisch opulente Anwendungen

für unterschiedliche Gerätekategorien entwickeln.

Nicht mehr nur Programmierer, sondern Designer sollen UIs

gestalten

2007: starker Fokus auf Mobility (Smartphones treten ihren

Siegeszug an)

Page 10: Desktop wiederentdeckt? - Moderne Anwendungen mit JavaFX

Thomas Künneth 10 Copyright © 2012 MATHEMA Software GmbH

2008

JavaOne 2008: Sun nennt drei JavaFX-Profile: JavaFX

Mobile, JavaFX Desktop und JavaFX TV

Juli 2008: Developer Previews des JavaFX SDKs für Windows

und Macintosh sowie ein Plugin für NetBeans

Veröffentlichung von JavaFX (Desktop) 1.0 am 4. Dezember

2008

Page 11: Desktop wiederentdeckt? - Moderne Anwendungen mit JavaFX

Thomas Künneth 11 Copyright © 2012 MATHEMA Software GmbH

2009

JavaFX Mobile wird als Teil von JavaFX 1.1 veröffentlicht

Es folgen mehrere Updates des JavaFX 1.x-Releases

die letzte 1er Version ist JavaFX 1.3.1 (August 2010)

Page 12: Desktop wiederentdeckt? - Moderne Anwendungen mit JavaFX

Thomas Künneth 12 Copyright © 2012 MATHEMA Software GmbH

JavaFX Mobile

War als Plattform für mobile Geräte gedacht

Sun hatte die Rechte an SavaJe, einem Java-basierten

Betriebssystem, übernommen

später eher Aufsatz auf bestehende Plattformen

Apps sollten mit der Programmiersprache JavaFX Script

geschrieben werden

Page 13: Desktop wiederentdeckt? - Moderne Anwendungen mit JavaFX

Thomas Künneth 13 Copyright © 2012 MATHEMA Software GmbH

JavaFX Script

eine übersetzte, statisch typisierte, deklarative

Programmiersprache

läuft in der JVM

kam als F3 (Form follows Function) mit der Übernahme von

Chris Oliver und SeeBeyond im September 2005 in den Besitz

von Sun

Wurde 2007 open source

Page 14: Desktop wiederentdeckt? - Moderne Anwendungen mit JavaFX

Thomas Künneth 14 Copyright © 2012 MATHEMA Software GmbH

JavaFX Script-Demo

import javafx.stage.Stage;

import javafx.scene.Scene;

import javafx.scene.text.Text;

import javafx.scene.text.Font;

Stage {

title: "Hello World"

width: 250

height: 80

scene: Scene {

content: Text {

font : Font {

size : 24

}

x: 10, y: 30

content: "Hello World"

}

}

}

Page 15: Desktop wiederentdeckt? - Moderne Anwendungen mit JavaFX

Thomas Künneth 15 Copyright © 2012 MATHEMA Software GmbH

Vision von JavaFX 1.x

ästhetische, plattformübergreifende Anwendungen

Erschließung neuer Entwicklerschichten durch

leichtgewichtige JavaScript-artige Programmiersprache

Fokus mehr auf Design als auf Programmierung

JavaFX Production Suite als Brücke zu Designerwerkzeugen

Silverlight und Flash/Flex als Vorbilder und Konkurrenten

Page 16: Desktop wiederentdeckt? - Moderne Anwendungen mit JavaFX

Thomas Künneth 16 Copyright © 2012 MATHEMA Software GmbH

Wandel

September 2010: JavaFX Script wird abgekündigt und JavaFX

2.0 angekündigt

Ende 2011: Verfügbarkeit von JavaFX 2.0 für Windows und

Preview für Mac

JavaFX soll quelloffen und perspektivisch durch die

Community weiterentwickelt werden

fundamental: JavaFX enthält Java-API

Page 17: Desktop wiederentdeckt? - Moderne Anwendungen mit JavaFX

Thomas Künneth 17 Copyright © 2012 MATHEMA Software GmbH

Agenda

Ein Blick in die Geschichtsbücher

Anatomie einer JavaFX-Anwendung

Glaskugel

Page 18: Desktop wiederentdeckt? - Moderne Anwendungen mit JavaFX

Thomas Künneth 18 Copyright © 2012 MATHEMA Software GmbH

Voraussetzungen

Nutzung

Java SE 6 oder 7

JavaFX 2.0 Runtime

Entwicklung

ein entsprechendes JDK

JavaFX 2.0 SDK

Unterstützung in IDEs (optional)

Eclipse: e(fx)clipse (http://efxclipse.org/)

NetBeans 7.1: "out of the box"

Page 19: Desktop wiederentdeckt? - Moderne Anwendungen mit JavaFX

Thomas Künneth 19 Copyright © 2012 MATHEMA Software GmbH

Setup (am Beispiel von Eclipse)

Page 20: Desktop wiederentdeckt? - Moderne Anwendungen mit JavaFX

Thomas Künneth 20 Copyright © 2012 MATHEMA Software GmbH

Hallo Welt

public class HalloWelt extends Application {

public static void main(String[] args) {

launch(args);

}

@Override

public void start(Stage primaryStage)

throws Exception {

primaryStage.setTitle("Hallo Welt");

Group group = new Group();

Scene scene = new Scene(group);

// anzuzeigender Text...

Text text = new Text("Hallo Welt!");

text.setTextOrigin(VPos.TOP);

// Font

text.setFont(new Font(72));

// anzeigen

group.getChildren().add(text);

primaryStage.setScene(scene);

primaryStage.show();

}

}

Page 21: Desktop wiederentdeckt? - Moderne Anwendungen mit JavaFX

Thomas Künneth 21 Copyright © 2012 MATHEMA Software GmbH

Minimalstruktur einer Anwendung

leitet von javafx.application.Application ab

überschreibt die Methode start()

main()-Methode ruft launch() auf

...aber was sind Stage, Group und Scene?

Page 22: Desktop wiederentdeckt? - Moderne Anwendungen mit JavaFX

Thomas Künneth 22 Copyright © 2012 MATHEMA Software GmbH

Stage

Die Stage ist der Top Level-Container einer Anwendung

Sie enthält eine oder mehrere Scenes

Eine Scene bildet die Zeichenoberfläche für den Inhalt einer

Anwendung (die Benutzeroberfläche bzw. einen Teil davon)

Die so genannte primary stage wird durch die Plattform

erzeugt

Das Enum javafx.stage.StageStyle steuert in Teilen

das Aussehen (transparent, …)

Fensterstatus (minimiert, Vollbild) werden über setter

gesteuert

Page 23: Desktop wiederentdeckt? - Moderne Anwendungen mit JavaFX

Thomas Künneth 23 Copyright © 2012 MATHEMA Software GmbH

Scene

Die Scene ist ein Container für alle Elemente eines so

genannten Scene Graphs

Sie legt fest, was wann wo wie angezeigt wird

Eine Anwendung kann viele Scenes enthalten

Page 24: Desktop wiederentdeckt? - Moderne Anwendungen mit JavaFX

Thomas Künneth 24 Copyright © 2012 MATHEMA Software GmbH

Scene Graph

Der Scene Graph ist eine Baumstruktur

JavaFX hält ein internes Modell aller grafischen Objekte

einer Anwendung

Zu jeder Zeit ist bekannt,

welche Objekte angezeigt werden müssen

welche Bereiche neu gezeichnet werden müssen

wie Objekte am effizientesten gerendert werden

Page 25: Desktop wiederentdeckt? - Moderne Anwendungen mit JavaFX

Thomas Künneth 25 Copyright © 2012 MATHEMA Software GmbH

Elemente des Scene Graphs

Elemente des Scene Graphs heißen nodes

nodes sind entweder branches oder leafs

Der erste node wird root node genannt - er hat keinen

Elternknoten

Page 26: Desktop wiederentdeckt? - Moderne Anwendungen mit JavaFX

Thomas Künneth 26 Copyright © 2012 MATHEMA Software GmbH

Beispiele für nodes

JavaFX kennt eine ganze Reihe von Klassen, die als nodes

fungieren.

…und viele mehr…

Page 27: Desktop wiederentdeckt? - Moderne Anwendungen mit JavaFX

Thomas Künneth 27 Copyright © 2012 MATHEMA Software GmbH

Evolution

// Effekt

text.setEffect(new Reflection());

// Linie

text.setStrokeType(StrokeType.OUTSIDE);

text.setStroke(Color.BLUE);

text.setStrokeWidth(2);

// Füllung

text.setFill(new LinearGradient(0f, 1f, 1f, 0f,

true,

CycleMethod.NO_CYCLE, new Stop[] {

new Stop(0, Color.web("#f8bd55")),

new Stop(0.14, Color.web("#c0fe56")),

new Stop(0.28, Color.web("#5dfbc1")),

new Stop(0.43, Color.web("#64c2f8")),

new Stop(0.57, Color.web("#be4af7")),

new Stop(0.71, Color.web("#ed5fc2")),

new Stop(0.85, Color.web("#ef504c")),

new Stop(1, Color.web("#f2660f")), }));

Page 28: Desktop wiederentdeckt? - Moderne Anwendungen mit JavaFX

Thomas Künneth 28 Copyright © 2012 MATHEMA Software GmbH

Na und…?

Die angedeuteten grafischen Objekte sind natürlich auch mit

Java2D und Swing möglich…

Der Unterschied zum klassischen Komponentenkonzept von

AWT und Swing ist unter anderem…

…dass der Scene Graph zu jedem Zeitpunkt weiß, wann was wie

gezeichnet werden muss, in AWT bzw. Swing Komponenten aber

nur sich selbst kennen

es in AWT/Swing keine Plattform-Konzepte für Übergänge oder

Animationen gibt

Page 29: Desktop wiederentdeckt? - Moderne Anwendungen mit JavaFX

Thomas Künneth 29 Copyright © 2012 MATHEMA Software GmbH

Schön und gut, aber…

Eye Candy allein

macht keine

moderne

Anwendung

JavaFX bietet

deshalb eine

ganze Reihe von

Standard-Controls

...und hat in 2.0

deutlich zugelegt

Page 30: Desktop wiederentdeckt? - Moderne Anwendungen mit JavaFX

Thomas Künneth 30 Copyright © 2012 MATHEMA Software GmbH

...wie war das nochmal...?

Page 31: Desktop wiederentdeckt? - Moderne Anwendungen mit JavaFX

Thomas Künneth 31 Copyright © 2012 MATHEMA Software GmbH

Architektur von Swing-Anwendungen

Benutzeroberfläche wird durch Komponentenbäume definiert

Position und Größe von Komponenten wird von Layout

Managern gesteuert

Manipulationen von Komponenten finden in einem speziellen

Thread (EDT) statt

Anwendungsaktivitäten (u. a. Serviceaufrufe) werden unter

Nutzung von SwingWorker in eigene Threads ausgelagert

Kommunikation zwischen Komponenten durch

Nachrichtenaustausch

Page 32: Desktop wiederentdeckt? - Moderne Anwendungen mit JavaFX

Thomas Künneth 32 Copyright © 2012 MATHEMA Software GmbH

Aussehen von Swing-Anwendungen

wird durch das verwendete Look and Feel bestimmt

von der Fähigkeit der Entwickler, Komponenten mit

geeigneten Layout Managern positionieren zu lassen

viele ästhetische Eigenschaften (Ausrichtung an der

Grundlinie) hat Swing erst im Laufe der Zeit gelernt

Page 33: Desktop wiederentdeckt? - Moderne Anwendungen mit JavaFX

Thomas Künneth 33 Copyright © 2012 MATHEMA Software GmbH

Abbildung von Bedienelementen auf nodes

Da JavaFX die Benutzeroberfläche in Scenes abbildet,

müssen sich einzelne Bedienelemente in dieses Konzept

einfügen

Die Position und Größe von Bedienelementen wird mit

Layouts festgelegt

Layouts sind vergleichbar mit Swing-Panels, für die ein

bestimmter Layout Manager gesetzt wurde

Beispiele für Layouts sind BorderPane, HBox und GridPane

Page 34: Desktop wiederentdeckt? - Moderne Anwendungen mit JavaFX

Thomas Künneth 34 Copyright © 2012 MATHEMA Software GmbH

Eine Beispieloberfläche

Page 35: Desktop wiederentdeckt? - Moderne Anwendungen mit JavaFX

Thomas Künneth 35 Copyright © 2012 MATHEMA Software GmbH

Beispiel: Leiste mit Schaltflächen

HBox hboxButtons = new HBox();

hboxButtons.setPadding(new Insets(10,

0, 0, 0));

hboxButtons.setAlignment(Pos.BOTTOM_RIG

HT);

hboxButtons.setSpacing(10);

Button buttonDiscard = new

Button("Discard");

buttonDiscard.setOnAction(new

EventHandler<ActionEvent>() {

@Override

public void handle(ActionEvent

event) {

listviewContacts.getSelectionModel

().clearSelection();

}

});

Button buttonSave = new Button("Save");

hboxButtons.getChildren().addAll(button

Discard, buttonSave);

Page 36: Desktop wiederentdeckt? - Moderne Anwendungen mit JavaFX

Thomas Künneth 36 Copyright © 2012 MATHEMA Software GmbH

Beispiel: Texte und Textfelder

GridPane gridpaneDetails = new

GridPane();

gridpaneDetails.setHgap(10);

gridpaneDetails.setVgap(10);

gridpaneDetails.setPadding(new

Insets(10, 10, 10, 20));

Label labelForename = new

Label("Forename:");

gridpaneDetails.add(labelForename, 0,

0);

GridPane.setHalignment(labelForename,

HPos.RIGHT);

textfieldForename = new TextField();

gridpaneDetails.add(textfieldForename,

1, 0);

Label labelSirname = new

Label("Sirname:");

gridpaneDetails.add(labelSirname, 0, 1);

GridPane.setHalignment(labelSirname,

HPos.RIGHT);

textfieldSirname = new TextField();

gridpaneDetails.add(textfieldSirname, 1,

1);

Label labelBirthday = new

Label("Birthday:");

gridpaneDetails.add(labelBirthday, 0,

2);

GridPane.setHalignment(labelBirthday,

HPos.RIGHT);

gridpaneDetails.add(hboxBirthday, 1, 2);

gridpaneDetails.add(hboxButtons, 0, 3);

GridPane.setColumnSpan(hboxButtons,

GridPane.REMAINING);

Page 37: Desktop wiederentdeckt? - Moderne Anwendungen mit JavaFX

Thomas Künneth 37 Copyright © 2012 MATHEMA Software GmbH

Gesamtstruktur

Page 38: Desktop wiederentdeckt? - Moderne Anwendungen mit JavaFX

Thomas Künneth 38 Copyright © 2012 MATHEMA Software GmbH

Trennung von Gestaltung und Code

Mit FXML können Oberflächen außerhalb des

Programmcodes geschrieben werden

Der Scene Builder soll ein Werkzeug für Designer werden

ist für Ende 2012 angekündigt

Page 39: Desktop wiederentdeckt? - Moderne Anwendungen mit JavaFX

Thomas Künneth 39 Copyright © 2012 MATHEMA Software GmbH

Zusammenfassung

JavaFX 2 hat mit Swing nichts mehr zu tun

Aber auch JavaFX muss Probleme lösen, die schon in Swing

aufgetreten sind:

Umgang mit Nebenläufigkeit/Threading

Internationalisierung

ggf. Barrierefreiheit

Anpassbarkeit der Komponenten

Page 40: Desktop wiederentdeckt? - Moderne Anwendungen mit JavaFX

Thomas Künneth 40 Copyright © 2012 MATHEMA Software GmbH

Agenda

Ein Blick in die Geschichtsbücher

Anatomie einer JavaFX-Anwendung

Glaskugel

Page 41: Desktop wiederentdeckt? - Moderne Anwendungen mit JavaFX

Thomas Künneth 41 Copyright © 2012 MATHEMA Software GmbH

Erfolgschancen

Wer steigt auf JavaFX um?

Werden neue Anwendungen anstelle von Swing mit JavaFX

gebaut?

Ist der Mehrwert von JavaFX groß genug?

Oder ist der Trend zu Web-Frameworks weiterhin

ungebrochen?

Page 42: Desktop wiederentdeckt? - Moderne Anwendungen mit JavaFX

Thomas Künneth 42 Copyright © 2012 MATHEMA Software GmbH

Oracle investiert viel

viele Tutorials

gute Dokumentation

nachvollziehbare Roadmap

Page 43: Desktop wiederentdeckt? - Moderne Anwendungen mit JavaFX

Thomas Künneth 43 Copyright © 2012 MATHEMA Software GmbH

Walled Gardens

Oracle wirbt mit leichter Deploybarkeit und Nutzbarkeit auf

vielen Endgeräten

Aber wollen Endnutzer überhaupt noch Downloads jenseits

geschützter Einkaufsmeilen?

Sowohl Apple als auch Microsoft drängen zur Distribution über

die jeweiligen Softwareläden

Oracle hat Demos von JavaFX unter iOS und Android gezeigt

– ob daraus ein fertiges Produkt werden kann, ist auch von

rechtlichen Fragen abhängig

Mit Windows 8 wird diese Welt in zwei Teile geteilt – es bleibt

abzuwarten, in welchen Teilen sich JavaFX niederlassen

kann/wird

Page 44: Desktop wiederentdeckt? - Moderne Anwendungen mit JavaFX

Thomas Künneth 44 Copyright © 2012 MATHEMA Software GmbH

Links

http://javafx.com/ - Offizielle JavaFX-Homepage

http://efxclipse.org/ - e(fx)clipse, JavaFX 2.0 Tooling and

Runtime for Eclipse and OSGi

http://docs.oracle.com/javafx/ - Oracle JavaFX 2

Documentation

Page 45: Desktop wiederentdeckt? - Moderne Anwendungen mit JavaFX

Thomas Künneth 45 Copyright © 2012 MATHEMA Software GmbH

Fragen?

Vielen Dank!

[email protected]


Top Related