23
JavaFX goes Scala Farewell JavaFX Script Andreas Schosser

JavaFX goes Scala

Embed Size (px)

DESCRIPTION

Changes in GUI Development

Citation preview

Page 1: JavaFX goes Scala

JavaFX goes Scala

Farewell JavaFX Script

Andreas Schosser

Page 2: JavaFX goes Scala

Changes in GUI development

Page 3: JavaFX goes Scala

Conventional GUIs

• Often designed by a

software engineer

• Usage of common

widgets / controls

• Customized by skins

/ CSS

• Supported by

toolkits like SwingDeveloper +

WindowBuilder

Page 4: JavaFX goes Scala

Modern GUIs

• Often designed by a

graphics designer

• Usage of individual

widgets / controls

• Designed from soup

to nuts

• Supported by

toolkits like JavaFXDesigner +

Illustrator

Page 5: JavaFX goes Scala

The difference

Designer +

Illustrator

Developer +

WindowBuilder

Page 6: JavaFX goes Scala

Why are designers important?

Designer +

Illustrator

Developer +

Illustrator

Page 7: JavaFX goes Scala

What makes the difference …

Designers ….

• … describe a new

interface

• … focus on

appearance

Developers …

• … reuse existing

patterns

• … focus on

functionality

Page 8: JavaFX goes Scala

The JavaFX 2.0 API

Page 9: JavaFX goes Scala

Pure Java API

Java API including JavaFX 1.3 features

• Data-Binding

• Charts and diagrams

• Bitmap-Effects

• Animation

JavaFX Script => Java

Focus on

Functionality

Page 10: JavaFX goes Scala

"JavaFX 2.0" == "Swing 2.0" ?

• Swing-like controls

• Programmatic initialization:

common construction + alignment

• Swing interoperability[…]

Scene scene = new Scene(stage);

scene.setWidth(800);

scene.setHeight(600);

Label label = new Label(scene);

label.setText("Welcome");

scene.add(label);

[…]

Existing

patterns

Page 11: JavaFX goes Scala

Why another language?

• Design-related domain

• Interoperability with design tools

(e.g. Adobe Illustrator)

• Independence from devices

Focus on

Appearance

Page 12: JavaFX goes Scala

The GUI language

• Intuitive placement

• Mapping source-code with

layout definitions

• Innovative controls […]

scene = new Scene {

width = 800

height = 600

content = new Content {

label = new Label {

text = "Welcome"

}

[…]

Describe a

new interface

Page 13: JavaFX goes Scala

Java and GUI language

GUI language does ….

• … describe a new

interface

• … focus on

appearance

Java does …

• … reuse existing

patterns

• … focus on

functionality

Page 14: JavaFX goes Scala

Bringing both worlds together

Page 15: JavaFX goes Scala

Translating the GUI-DSL

GUI-DSL

to Java API

GUIDSL

API

JAVA[…]

scene = new Scene {

width = 800

height = 600

content = new Content {

label = new Label {

text = "Welcome"

}

[…]

[…]

Scene scene = new Scene(stage);

scene.setWidth(800);

scene.setHeight(600);

Label label = new Label(scene);

label.setText("Welcome");

scene.add(label);

[…]

Page 16: JavaFX goes Scala

Learning from JavaFX Script

• Focus on appearance

• Concise definitions

• Usage of Mixins

• Transparent Java integration

Good old

JavaFX Script

Page 17: JavaFX goes Scala

The Visage Project

• Unofficial successor to JavaFX Script

• Open Source Project

• Founded by

JavaFX Expert Stephen Chin

The unofficial

successor

Page 18: JavaFX goes Scala

Scala as DSL technology

• Established DSL-technology

• Runs on Android

• Static Type Checking

=> Performance

Reasons

for Scala

Page 19: JavaFX goes Scala

Transformation example

Speaking

Java API

[…]

Label label = new Label(scene);

label.setText(“Hello JavaFX Script");

scene.add(label);

[…]

[…]

label = new Label {

text = "Hello JavaFX„

}

[…]

[…]

def node = "new" ~> nodeType ^^ type => {

if ("Label" == type) {

new JLabel()

}

[…]

Page 20: JavaFX goes Scala

Which JVM-language?

Flexible

Integration

Visage

Scala

Groovy

JRuby

?

?

??

?

?Scala

JRuby

Visage

Page 22: JavaFX goes Scala

Thank you for your attention!

Page 23: JavaFX goes Scala

… und suchen ein paar der besten Arbeitnehmer!

COINOR bietet allen Mitarbeitern

Spannende Projekte

Individuelle Förderung

Die Möglichkeit, schnell Verantwortung zu übernehmen

Attraktive Vergütungsmodelle

Einen motivierenden Teamgeist

Wir gehören zu den 100 besten Arbeitgebern Deutschlands …