SlideShare ist ein Scribd-Unternehmen logo
1 von 79
Downloaden Sie, um offline zu lesen
Introduction to JavaFX
A rich client platform for all screens

Richard Bair
Sun Microsystems, Inc.
A rich client platform for all screens


Introduction to JavaFX

 • JavaFX is the next generation client stack for the Java Platform
    > Consumer & Enterprise
    > Consistent cross-device API and development model
 • Designed for high performance graphics on desktop, mobile, tv
    > Leverages OpenGL, Direct3D, SSE3 when possible on any target device
    > Ground-up rewrite of fonts, image handling, rasterization
 • Designed for multi-language support
    > Java
    > JavaFX Script
    > more...



2009 Sun Microsystems, Incorporated. All Rights Reserved.                               2
A rich client platform for all screens


Outline

 • JavaFX Script – a new programming language
 • JavaFX scene graph
 • User interface controls
 • Styling
 • Charts
 • Layout
 • Developer tools




2009 Sun Microsystems, Incorporated. All Rights Reserved.                               3
A rich client platform for all screens




                                             What is JavaFX Script?




2009 Sun Microsystems, Incorporated. All Rights Reserved.
A rich client platform for all screens




            “DSL for the care and feeding of the Scenegraph”




2009 Sun Microsystems, Incorporated. All Rights Reserved.
A rich client platform for all screens




                                        Null Pointer-less Language




2009 Sun Microsystems, Incorporated. All Rights Reserved.
A rich client platform for all screens




                                               Expression Language




2009 Sun Microsystems, Incorporated. All Rights Reserved.
A rich client platform for all screens




                                                      Object Oriented




2009 Sun Microsystems, Incorporated. All Rights Reserved.
A rich client platform for all screens




                                                       JVM Language




2009 Sun Microsystems, Incorporated. All Rights Reserved.
A rich client platform for all screens




                                                       Strongly Typed




2009 Sun Microsystems, Incorporated. All Rights Reserved.
A rich client platform for all screens




                                                       Type Inference




2009 Sun Microsystems, Incorporated. All Rights Reserved.
A rich client platform for all screens




                                      Javascript / Scala like syntax




2009 Sun Microsystems, Incorporated. All Rights Reserved.
A rich client platform for all screens


Why A New Language?

 • A programming language is not about telling the computer what to do, but
      instead is about expressing the programmer’s intent.
 • A programming language needs to embody new, higher-level concepts and to
      abstract away irrelevant detail. (Brooks 1993, HOPL-II keynote)
 • JavaFX Script is tightly integrated with, and works extremely effectively with
       the JavaFX runtime and scenegraph
 • Itʼs fun!




2009 Sun Microsystems, Incorporated. All Rights Reserved.                                13
A rich client platform for all screens




                                               println(“Hello, world!”)




2009 Sun Microsystems, Incorporated. All Rights Reserved.
A rich client platform for all screens




                                                def PI = 3.14159265;




2009 Sun Microsystems, Incorporated. All Rights Reserved.
A rich client platform for all screens




                                              var name = “Richard”;




2009 Sun Microsystems, Incorporated. All Rights Reserved.
A rich client platform for all screens




                                                   var name:String;
                                                   name = “Richard”;




2009 Sun Microsystems, Incorporated. All Rights Reserved.
A rich client platform for all screens


Data Types

 • Primitive types from Java:
    > Boolean, Integer, Long, String, ...
    > New: string interpolation expressions
         – println("The value of x is {x}");
 • Object references (similar to Java)
 • Number
 • Duration
 • Sequences




2009 Sun Microsystems, Incorporated. All Rights Reserved.                              18
A rich client platform for all screens


Sequences

 • An ordered collection of objects
 • Sequences are flat — they do not nest
 • A sequence cannot be null (but it can be empty)

                    var numbers = [3, 1, 4, 1, 5];
                    insert [9, 2, 6] into numbers;
                    delete numbers[2];




2009 Sun Microsystems, Incorporated. All Rights Reserved.                              19
A rich client platform for all screens


Expressions, For-Loops, and Sequences

 • Every “statement” is actually an expression that has a value

                    var b = if (a >= 0) a else -a;


 • The value of a for-loop is a sequence of values from its body

                    for (x in [1..5]) {
                        x * x
                    }

                    [1, 4, 9, 16, 25]


2009 Sun Microsystems, Incorporated. All Rights Reserved.                              20
A rich client platform for all screens


Classes, Mixins, and APIs

 • Classes are normal classes similar to Java classes
 • Mixin classes like Java interfaces
    > Can include function implementations
    > Can include variable declarations and initial values
 • Extending classes
    > At most one normal superclass
    > Arbitrary number of mixin classes




2009 Sun Microsystems, Incorporated. All Rights Reserved.                               21
A rich client platform for all screens


Object Literals

 • Concise “declarative” syntax for object creation
 • A series of variable:initial-value pairs
 • Can be used on public and public-init variables
 • Can be nested arbitrarily
    > Useful for creating scene graph structures

                    var rect = Rectangle {
                        x: 10
                        y: 20
                        width: 30
                        height: 40
                    }
2009 Sun Microsystems, Incorporated. All Rights Reserved.                              22
A rich client platform for all screens


Object Literals and Binding

                                                              when leftMargin
                    var leftMargin = 472;                   changes the x-value
                                                             of both Rectangles
                                                                  changes
                    var r1 = Rectangle {
                        x: bind leftMargin
                        ...
                    };

                    var r2 = Rectangle {
                        x: bind leftMargin
                        ...
                    }


2009 Sun Microsystems, Incorporated. All Rights Reserved.                                23
A rich client platform for all screens


JavaFX Library API Style

 • The x, y, width, height variables on Rectangle are public!
    > What about encapsulation? Enforcing invariants?
 • No getters
    > Variables can be public-read
 • No setters
    > Variables are public and have a trigger
 • No constructors
    > Variables are public-init allowing use in object literals
 • Few listeners and callbacks
    > State variables exposed (public, public-init, or public-read)
    > This allows binding on them

2009 Sun Microsystems, Incorporated. All Rights Reserved.                                  24
A rich client platform for all screens


Binds and Triggers


     public var x1;
     public var x2;
     public-read var width = bind x2 - x1;



     public var radius = 10 on replace {
         diameter = 2 * radius
     }




2009 Sun Microsystems, Incorporated. All Rights Reserved.                              25
A rich client platform for all screens


Outline

 • JavaFX Script – a new programming language
 • JavaFX scene graph
 • User interface controls
 • Styling
 • Charts
 • Layout
 • Developer tools




2009 Sun Microsystems, Incorporated. All Rights Reserved.                              26
A rich client platform for all screens


Scenegraph

 • Data structure which represents all visual elements
 • Easily reference any visual element in the app and manipulate it
 • Comprised of Nodes
    > Leaf Nodes (shapes, images, text, etc)
    > Parent Nodes (Groups, Containers, etc)




2009 Sun Microsystems, Incorporated. All Rights Reserved.                              27
A rich client platform for all screens




                                                            Group




                                           Image                      Group




                                                             Circle           Media




2009 Sun Microsystems, Incorporated. All Rights Reserved.                                                        28
A rich client platform for all screens


Scenegraph Sample

     Group {
       content: [
         ImageView { }                                              Group
         Group {
           content: [
             Circle { },
             MediaView { }                                  Image              Group

           ]
         }
       ]
     }                                                               Circle              Media




2009 Sun Microsystems, Incorporated. All Rights Reserved.                                                29
A rich client platform for all screens


Nodes

       • Group                                              • MediaView
       • CustomNode                                         • Text
       • Container                                          • more...
       • Control
       • Line
       • Path
       • Rectangle
       • ImageView



2009 Sun Microsystems, Incorporated. All Rights Reserved.                                          30
A rich client platform for all screens


ImageView

 • Image represents an in-memory bitmap
    > loaded via URL, from jar
 • ImageView Node contains an Image
 • Both ImageView and Image can scale
    > Preserve ratio
    > Fit within a specific width/height




2009 Sun Microsystems, Incorporated. All Rights Reserved.                              31
A rich client platform for all screens


Text Node

 • x, y, TextOrigin
 • Fonts can be specified on Text
 • Supports multiline text
 • By default, text positioned such that (x, y) is left baseline




2009 Sun Microsystems, Incorporated. All Rights Reserved.                                     32
A rich client platform for all screens




    (0, -10)



      (0, 0)
                            Example
2009 Sun Microsystems, Incorporated. All Rights Reserved.
A rich client platform for all screens


Effects

 • Any Node can have an Effect
 • Many standard built in
    > Blend modes
    > Bloom
    > DisplacementMap
    > DropShadow
    > ColorAdjust
    > BoxBlur
    > Glow
    > Reflection
    > InnerShadow
    > more...
2009 Sun Microsystems, Incorporated. All Rights Reserved.                              34
A rich client platform for all screens


Media

 • JavaFX supports both visual and audio media
 • Cross platform JavaFX Media file (fxm, mp3)
 • Also plays native formats (mov, wmv)
 • Media class represents a media file
 • MediaPlayer plays a Media file
 • MediaView is the Node which displays the Media




2009 Sun Microsystems, Incorporated. All Rights Reserved.                              35
A rich client platform for all screens


Animation

 • Animation is a key feature of every rich graphics application platform
 • There are two supported animation types in JavaFX
    > Keyframe animations
    > Transitions




2009 Sun Microsystems, Incorporated. All Rights Reserved.                               36
A rich client platform for all screens


KeyFrame Animation

 • KeyFrame: specifies that a variable should have...
    > a particular value
    > at a particular time
 • Timeline
    > Modifies values of variables specified by KeyFrames
    > Doesn’t necessarily do any animation itself
 • How is animation actually done?
    > Arrange for a KeyFrame to modify an interesting Node variable
        – x, rotate, opacity, fill, ...




2009 Sun Microsystems, Incorporated. All Rights Reserved.                              37
A rich client platform for all screens


KeyFrame Animation Setup


     var text = Text {
         x: 50
         y: 80
         content: "Hello, world!"
         rotate: 30
     }

     Timeline {
         keyFrames: at (4s) { text.rotate => 210.0 }
     }.play();



2009 Sun Microsystems, Incorporated. All Rights Reserved.                              38
A rich client platform for all screens


Transitions

 • Predefined, single-purpose animations
         > Fade, Path, Pause, Rotate, Scale, Translate
         > Can specify to, from, and by values
 • Container transitions:
         > Parallel, Sequential
         > Can be nested arbitrarily




2009 Sun Microsystems, Incorporated. All Rights Reserved.                              39
A rich client platform for all screens


DEMO – Simple Scene Graph




2009 Sun Microsystems, Incorporated. All Rights Reserved.                              40
A rich client platform for all screens


Outline

 • JavaFX Script – a new programming language
 • JavaFX scene graph
 • User interface controls
 • Styling
 • Charts
 • Layout
 • Developer tools




2009 Sun Microsystems, Incorporated. All Rights Reserved.                              41
A rich client platform for all screens


JavaFX UI Controls

      • Simple
      • Useful
      • Rich




2009 Sun Microsystems, Incorporated. All Rights Reserved.                              42
A rich client platform for all screens


Architecture


                                                                  Skin

                                       Control




                                                            Behavior



2009 Sun Microsystems, Incorporated. All Rights Reserved.                                           43
A rich client platform for all screens



                                                                                Dark color
                                                                                buttons on
                                                                                toolbar




          Light color
          controls on
          almost white
          background




2009 Sun Microsystems, Incorporated. All Rights Reserved.                              44
A rich client platform for all screens


Controls in JavaFX

• Button                                            • TextBox           • Multiline TextBox
• ToggleButton                                      • ListView          • Horizontal ListView
• RadioButton                                       • TreeView          • Popup
• CheckBox                                          • PasswordBox       • Tooltip
• Slider                                            • ChoiceButton
• Label                                             • MenuButton
• ScrollBar                                         • SplitMenuButton
• Hyperlink                                         • Menus
• ProgressIndicator                                 • ToolBar
• ProgressBar                                       • ScrollView
2009 Sun Microsystems, Incorporated. All Rights Reserved.                                          45
A rich client platform for all screens


Button

 • action:function()
 • Example:
            Button {
                text: “Cancel”
                action: function() {
                     println(“I’ve been clicked!”);
                }
            }




2009 Sun Microsystems, Incorporated. All Rights Reserved.                              46
A rich client platform for all screens


Progress Indicator

 • progress:Number (0..1)
 • progress bar is-a progress indicator
 • Example:
            var task = HttpRequest { ... }
            ProgressIndicator { progress: bind task.percentDone }




2009 Sun Microsystems, Incorporated. All Rights Reserved.                              47
A rich client platform for all screens


TextBox

 • text:String
 • promptText:String
 • font:Font
 • action:function()
 • Example:
            var t:TextBox = TextBox {
                promptText: “Search”
                action: function() {
                    startSearch(t.text);
                    t.text = “”;
                }
            }




2009 Sun Microsystems, Incorporated. All Rights Reserved.                              48
A rich client platform for all screens


Multiline TextBox

 • columns:Integer
 • lines:Integer
 • multiline:Boolean
 • Example:
            var t:TextBox = TextBox {
                columns: 30
                lines: 10
                multiline: true
            }




2009 Sun Microsystems, Incorporated. All Rights Reserved.                              49
A rich client platform for all screens


List View

 • Horizontal or Vertical
 • Massively Scalable
 • Custom Cells
 • Dynamically variable row height
 • Example:
            ListView {
                items: [“Apples”, “Oranges”, “Bananas”]
                cellMaker: function() {
                    ListCell { ... }
                }
            }




2009 Sun Microsystems, Incorporated. All Rights Reserved.                              50
A rich client platform for all screens


DEMO – UI Controls




2009 Sun Microsystems, Incorporated. All Rights Reserved.                              51
A rich client platform for all screens


Outline

 • JavaFX Script – a new programming language
 • JavaFX scene graph
 • User interface controls
 • Styling
 • Charts
 • Layout
 • Developer tools




2009 Sun Microsystems, Incorporated. All Rights Reserved.                              52
A rich client platform for all screens


Styling

 • Easy and Powerful (CSS)
 • Highly Customized (fxz)
 • Complete Control (code)




2009 Sun Microsystems, Incorporated. All Rights Reserved.                              53
A rich client platform for all screens


Styling

 • Easy and Powerful (CSS)
 • Highly Customized (fxz)
 • Complete Control (code)




2009 Sun Microsystems, Incorporated. All Rights Reserved.                              54
A rich client platform for all screens


Styling




2009 Sun Microsystems, Incorporated. All Rights Reserved.                              55
A rich client platform for all screens


Styling

 • CSS is our strategy for styling
 • Caspian is our default CSS stylesheet
 • CSS is fast, and works on mobile, desktop, and tv
 • Stick to the spirit of HTML CSS
    > but do not be bound by it




2009 Sun Microsystems, Incorporated. All Rights Reserved.                              56
A rich client platform for all screens


Styling

 • Break control skins in styleable parts
 • In some ways similar to HTML CSS’s Box
 • Rectangle with independently rounded corners
    > or any arbitrary path
 • Can have multiple
    > background fills
    > background images
    > border strokes
    > border images




2009 Sun Microsystems, Incorporated. All Rights Reserved.                              57
A rich client platform for all screens


Styling




2009 Sun Microsystems, Incorporated. All Rights Reserved.                              58
A rich client platform for all screens




2009 Sun Microsystems, Incorporated. All Rights Reserved.                              59
A rich client platform for all screens




       Left Button                 Track                    Thumb   ScrollBar        Right Button




                   Left Arrow                                                        Right Arrow




2009 Sun Microsystems, Incorporated. All Rights Reserved.                                          61
A rich client platform for all screens


Outline

 • JavaFX Script – a new programming language
 • JavaFX scene graph
 • User interface controls
 • Styling
 • Charts
 • Layout
 • Developer tools




2009 Sun Microsystems, Incorporated. All Rights Reserved.                              62
A rich client platform for all screens


Charts

 • A basic set of charts for everyday use
    > Simple
    > Customizable
 • To provide tools to help you build your own charts




2009 Sun Microsystems, Incorporated. All Rights Reserved.                              63
A rich client platform for all screens


Pie Chart




2009 Sun Microsystems, Incorporated. All Rights Reserved.                              64
A rich client platform for all screens


Sample Pie

     PieChart {
         title: "Sample Pie"
         data: [
             PieChart.Data {
                 label: "Apples" value: 34
                 action: function(){ Alert.inform("Clicked") }
             },
             PieChart.Data { label: "Oranges" value: 27 },
             PieChart.Data { label: "Bananas" value: 16 },
             PieChart.Data { label: "Grapes" value: 50 },
             PieChart.Data { label: "Cherries" value: 6 },
             PieChart.Data { label: "Strawberry" value: 5 },
             PieChart.Data { label: "Raspberry" value: 7 }
         ]
     }


2009 Sun Microsystems, Incorporated. All Rights Reserved.                              65
A rich client platform for all screens


Bar Chart




2009 Sun Microsystems, Incorporated. All Rights Reserved.                              66
A rich client platform for all screens


Line Chart




2009 Sun Microsystems, Incorporated. All Rights Reserved.                              67
A rich client platform for all screens


Area Chart




2009 Sun Microsystems, Incorporated. All Rights Reserved.                              68
A rich client platform for all screens


Scatter Chart




2009 Sun Microsystems, Incorporated. All Rights Reserved.                              69
A rich client platform for all screens


Bubble Chart




2009 Sun Microsystems, Incorporated. All Rights Reserved.                              70
A rich client platform for all screens


3D Bar Chart




2009 Sun Microsystems, Incorporated. All Rights Reserved.                              71
A rich client platform for all screens


3D Pie Chart




2009 Sun Microsystems, Incorporated. All Rights Reserved.                              72
A rich client platform for all screens


Outline

 • JavaFX Script – a new programming language
 • JavaFX scene graph
 • User interface controls
 • Styling
 • Charts
 • Layout
 • Developer tools




2009 Sun Microsystems, Incorporated. All Rights Reserved.                              73
A rich client platform for all screens


Layout Containers

 • Container-based layout
 • Container is-a Node
 • Built-in Containers in 1.2
    > Stack: stack all content nodes on top of each other
    > HBox: lay out content horizontally
    > VBox: lay out content vertically
    > Flow: layout out content either horizontally or vertically and line wrap
    > Panel: Customizable layout container




2009 Sun Microsystems, Incorporated. All Rights Reserved.                               74
A rich client platform for all screens


Flow Sample

     Flow {
       width: 800
       height: 600
       content: for (img in images) {
         ImageView { image: img }
       }
     }




2009 Sun Microsystems, Incorporated. All Rights Reserved.                              75
A rich client platform for all screens


Developer Tools

 • NetBeans with JavaFX plug-in
    > Syntax highlighting
    > Code completion
    > SDK integration
 • Eclipse, IntelliJ
 • JavaFX Production Suite
    > Imports artwork from content creation tools
    > ... into the scenegraph as a Node
 • JavaFX Authoring Tool
    > Creating JavaFX Content
    > Built completely on top of JavaFX and UI Controls

2009 Sun Microsystems, Incorporated. All Rights Reserved.                              76
A rich client platform for all screens


Developer-Designer Workflow




2009 Sun Microsystems, Incorporated. All Rights Reserved.                              77
A rich client platform for all screens


DEMO – JavaFX Production Suite




2009 Sun Microsystems, Incorporated. All Rights Reserved.                              78
A rich client platform for all screens


Call To Action

 • fxexperience.com
 • Visit javafx.com
    > Download JavaFX SDK + NetBeans
    > See demos
    > Download example code
    > Read tutorials, FAQs, white papers, documentation
    > Browse API Documentation



                                                      Thank You!

2009 Sun Microsystems, Incorporated. All Rights Reserved.                                     79

Weitere ähnliche Inhalte

Ähnlich wie Introduction to JavaFX with Richard Bair

JavaFX - Bringing rich Internet applications ...
JavaFX - Bringing rich Internet applications ...JavaFX - Bringing rich Internet applications ...
JavaFX - Bringing rich Internet applications ...
terrencebarr
 
Intro to Java ME and Asha Platform
Intro to Java ME and Asha PlatformIntro to Java ME and Asha Platform
Intro to Java ME and Asha Platform
Jussi Pohjolainen
 
Nicholas Foo
Nicholas FooNicholas Foo
Nicholas Foo
fndc
 

Ähnlich wie Introduction to JavaFX with Richard Bair (20)

JavaFX - Bringing rich Internet applications ...
JavaFX - Bringing rich Internet applications ...JavaFX - Bringing rich Internet applications ...
JavaFX - Bringing rich Internet applications ...
 
QCon Shanghai: Trends in Application Development
QCon Shanghai: Trends in Application DevelopmentQCon Shanghai: Trends in Application Development
QCon Shanghai: Trends in Application Development
 
tranning synopsis(java programming).pdf
tranning synopsis(java programming).pdftranning synopsis(java programming).pdf
tranning synopsis(java programming).pdf
 
Digital Security by Design: Imperas’ Interests - Simon Davidmann, Imperas Sof...
Digital Security by Design: Imperas’ Interests - Simon Davidmann, Imperas Sof...Digital Security by Design: Imperas’ Interests - Simon Davidmann, Imperas Sof...
Digital Security by Design: Imperas’ Interests - Simon Davidmann, Imperas Sof...
 
Running and Supporting MQ Light Applications
Running and Supporting MQ Light ApplicationsRunning and Supporting MQ Light Applications
Running and Supporting MQ Light Applications
 
The Future of Cross-Platform is Native
The Future of Cross-Platform is NativeThe Future of Cross-Platform is Native
The Future of Cross-Platform is Native
 
Ospf
OspfOspf
Ospf
 
Symbian os
Symbian osSymbian os
Symbian os
 
Tizen Window System
Tizen Window SystemTizen Window System
Tizen Window System
 
CATIZ Project
CATIZ ProjectCATIZ Project
CATIZ Project
 
invokedynamic: Evolution of a Language Feature
invokedynamic: Evolution of a Language Featureinvokedynamic: Evolution of a Language Feature
invokedynamic: Evolution of a Language Feature
 
X plat dev - part ii publish
X plat dev - part ii publishX plat dev - part ii publish
X plat dev - part ii publish
 
Java1 in mumbai
Java1 in mumbaiJava1 in mumbai
Java1 in mumbai
 
Design - Exploring Hybrid Cloud Infrastructure Choices
Design - Exploring Hybrid Cloud Infrastructure ChoicesDesign - Exploring Hybrid Cloud Infrastructure Choices
Design - Exploring Hybrid Cloud Infrastructure Choices
 
Cross-Platform Native Apps in Java (budapest.mobile)
Cross-Platform Native Apps in Java (budapest.mobile)Cross-Platform Native Apps in Java (budapest.mobile)
Cross-Platform Native Apps in Java (budapest.mobile)
 
Symbian OS
Symbian OSSymbian OS
Symbian OS
 
Intro to Java ME and Asha Platform
Intro to Java ME and Asha PlatformIntro to Java ME and Asha Platform
Intro to Java ME and Asha Platform
 
Cloud IBM IaaS - SoftLayer e PaaS - BlueMix
Cloud IBM IaaS - SoftLayer e PaaS - BlueMixCloud IBM IaaS - SoftLayer e PaaS - BlueMix
Cloud IBM IaaS - SoftLayer e PaaS - BlueMix
 
DevCon Summit 2014 #DevelopersUnitePH: Klab Cyscorpions
DevCon Summit 2014 #DevelopersUnitePH: Klab CyscorpionsDevCon Summit 2014 #DevelopersUnitePH: Klab Cyscorpions
DevCon Summit 2014 #DevelopersUnitePH: Klab Cyscorpions
 
Nicholas Foo
Nicholas FooNicholas Foo
Nicholas Foo
 

Mehr von Stephen Chin

Mehr von Stephen Chin (20)

DevOps Tools for Java Developers v2
DevOps Tools for Java Developers v2DevOps Tools for Java Developers v2
DevOps Tools for Java Developers v2
 
10 Ways Everyone Can Support the Java Community
10 Ways Everyone Can Support the Java Community10 Ways Everyone Can Support the Java Community
10 Ways Everyone Can Support the Java Community
 
Java Clients and JavaFX: The Definitive Guide
Java Clients and JavaFX: The Definitive GuideJava Clients and JavaFX: The Definitive Guide
Java Clients and JavaFX: The Definitive Guide
 
DevOps Tools for Java Developers
DevOps Tools for Java DevelopersDevOps Tools for Java Developers
DevOps Tools for Java Developers
 
Java Clients and JavaFX - Presented to LJC
Java Clients and JavaFX - Presented to LJCJava Clients and JavaFX - Presented to LJC
Java Clients and JavaFX - Presented to LJC
 
RetroPi Handheld Raspberry Pi Gaming Console
RetroPi Handheld Raspberry Pi Gaming ConsoleRetroPi Handheld Raspberry Pi Gaming Console
RetroPi Handheld Raspberry Pi Gaming Console
 
JavaFX on Mobile (by Johan Vos)
JavaFX on Mobile (by Johan Vos)JavaFX on Mobile (by Johan Vos)
JavaFX on Mobile (by Johan Vos)
 
Confessions of a Former Agile Methodologist (JFrog Edition)
Confessions of a Former Agile Methodologist (JFrog Edition)Confessions of a Former Agile Methodologist (JFrog Edition)
Confessions of a Former Agile Methodologist (JFrog Edition)
 
Devoxx4Kids Lego Workshop
Devoxx4Kids Lego WorkshopDevoxx4Kids Lego Workshop
Devoxx4Kids Lego Workshop
 
Raspberry Pi with Java (JJUG)
Raspberry Pi with Java (JJUG)Raspberry Pi with Java (JJUG)
Raspberry Pi with Java (JJUG)
 
Confessions of a Former Agile Methodologist
Confessions of a Former Agile MethodologistConfessions of a Former Agile Methodologist
Confessions of a Former Agile Methodologist
 
Internet of Things Magic Show
Internet of Things Magic ShowInternet of Things Magic Show
Internet of Things Magic Show
 
Zombie Time - JSR 310 for the Undead
Zombie Time - JSR 310 for the UndeadZombie Time - JSR 310 for the Undead
Zombie Time - JSR 310 for the Undead
 
JCrete Embedded Java Workshop
JCrete Embedded Java WorkshopJCrete Embedded Java Workshop
JCrete Embedded Java Workshop
 
Oracle IoT Kids Workshop
Oracle IoT Kids WorkshopOracle IoT Kids Workshop
Oracle IoT Kids Workshop
 
OpenJFX on Android and Devices
OpenJFX on Android and DevicesOpenJFX on Android and Devices
OpenJFX on Android and Devices
 
Java on Raspberry Pi Lab
Java on Raspberry Pi LabJava on Raspberry Pi Lab
Java on Raspberry Pi Lab
 
Java 8 for Tablets, Pis, and Legos
Java 8 for Tablets, Pis, and LegosJava 8 for Tablets, Pis, and Legos
Java 8 for Tablets, Pis, and Legos
 
DukeScript
DukeScriptDukeScript
DukeScript
 
Devoxx4Kids NAO Workshop
Devoxx4Kids NAO WorkshopDevoxx4Kids NAO Workshop
Devoxx4Kids NAO Workshop
 

Kürzlich hochgeladen

IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
Enterprise Knowledge
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
Earley Information Science
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
giselly40
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
vu2urc
 

Kürzlich hochgeladen (20)

08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdf
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 

Introduction to JavaFX with Richard Bair

  • 1. Introduction to JavaFX A rich client platform for all screens Richard Bair Sun Microsystems, Inc.
  • 2. A rich client platform for all screens Introduction to JavaFX • JavaFX is the next generation client stack for the Java Platform > Consumer & Enterprise > Consistent cross-device API and development model • Designed for high performance graphics on desktop, mobile, tv > Leverages OpenGL, Direct3D, SSE3 when possible on any target device > Ground-up rewrite of fonts, image handling, rasterization • Designed for multi-language support > Java > JavaFX Script > more... 2009 Sun Microsystems, Incorporated. All Rights Reserved. 2
  • 3. A rich client platform for all screens Outline • JavaFX Script – a new programming language • JavaFX scene graph • User interface controls • Styling • Charts • Layout • Developer tools 2009 Sun Microsystems, Incorporated. All Rights Reserved. 3
  • 4. A rich client platform for all screens What is JavaFX Script? 2009 Sun Microsystems, Incorporated. All Rights Reserved.
  • 5. A rich client platform for all screens “DSL for the care and feeding of the Scenegraph” 2009 Sun Microsystems, Incorporated. All Rights Reserved.
  • 6. A rich client platform for all screens Null Pointer-less Language 2009 Sun Microsystems, Incorporated. All Rights Reserved.
  • 7. A rich client platform for all screens Expression Language 2009 Sun Microsystems, Incorporated. All Rights Reserved.
  • 8. A rich client platform for all screens Object Oriented 2009 Sun Microsystems, Incorporated. All Rights Reserved.
  • 9. A rich client platform for all screens JVM Language 2009 Sun Microsystems, Incorporated. All Rights Reserved.
  • 10. A rich client platform for all screens Strongly Typed 2009 Sun Microsystems, Incorporated. All Rights Reserved.
  • 11. A rich client platform for all screens Type Inference 2009 Sun Microsystems, Incorporated. All Rights Reserved.
  • 12. A rich client platform for all screens Javascript / Scala like syntax 2009 Sun Microsystems, Incorporated. All Rights Reserved.
  • 13. A rich client platform for all screens Why A New Language? • A programming language is not about telling the computer what to do, but instead is about expressing the programmer’s intent. • A programming language needs to embody new, higher-level concepts and to abstract away irrelevant detail. (Brooks 1993, HOPL-II keynote) • JavaFX Script is tightly integrated with, and works extremely effectively with the JavaFX runtime and scenegraph • Itʼs fun! 2009 Sun Microsystems, Incorporated. All Rights Reserved. 13
  • 14. A rich client platform for all screens println(“Hello, world!”) 2009 Sun Microsystems, Incorporated. All Rights Reserved.
  • 15. A rich client platform for all screens def PI = 3.14159265; 2009 Sun Microsystems, Incorporated. All Rights Reserved.
  • 16. A rich client platform for all screens var name = “Richard”; 2009 Sun Microsystems, Incorporated. All Rights Reserved.
  • 17. A rich client platform for all screens var name:String; name = “Richard”; 2009 Sun Microsystems, Incorporated. All Rights Reserved.
  • 18. A rich client platform for all screens Data Types • Primitive types from Java: > Boolean, Integer, Long, String, ... > New: string interpolation expressions – println("The value of x is {x}"); • Object references (similar to Java) • Number • Duration • Sequences 2009 Sun Microsystems, Incorporated. All Rights Reserved. 18
  • 19. A rich client platform for all screens Sequences • An ordered collection of objects • Sequences are flat — they do not nest • A sequence cannot be null (but it can be empty) var numbers = [3, 1, 4, 1, 5]; insert [9, 2, 6] into numbers; delete numbers[2]; 2009 Sun Microsystems, Incorporated. All Rights Reserved. 19
  • 20. A rich client platform for all screens Expressions, For-Loops, and Sequences • Every “statement” is actually an expression that has a value var b = if (a >= 0) a else -a; • The value of a for-loop is a sequence of values from its body for (x in [1..5]) { x * x } [1, 4, 9, 16, 25] 2009 Sun Microsystems, Incorporated. All Rights Reserved. 20
  • 21. A rich client platform for all screens Classes, Mixins, and APIs • Classes are normal classes similar to Java classes • Mixin classes like Java interfaces > Can include function implementations > Can include variable declarations and initial values • Extending classes > At most one normal superclass > Arbitrary number of mixin classes 2009 Sun Microsystems, Incorporated. All Rights Reserved. 21
  • 22. A rich client platform for all screens Object Literals • Concise “declarative” syntax for object creation • A series of variable:initial-value pairs • Can be used on public and public-init variables • Can be nested arbitrarily > Useful for creating scene graph structures var rect = Rectangle { x: 10 y: 20 width: 30 height: 40 } 2009 Sun Microsystems, Incorporated. All Rights Reserved. 22
  • 23. A rich client platform for all screens Object Literals and Binding when leftMargin var leftMargin = 472; changes the x-value of both Rectangles changes var r1 = Rectangle { x: bind leftMargin ... }; var r2 = Rectangle { x: bind leftMargin ... } 2009 Sun Microsystems, Incorporated. All Rights Reserved. 23
  • 24. A rich client platform for all screens JavaFX Library API Style • The x, y, width, height variables on Rectangle are public! > What about encapsulation? Enforcing invariants? • No getters > Variables can be public-read • No setters > Variables are public and have a trigger • No constructors > Variables are public-init allowing use in object literals • Few listeners and callbacks > State variables exposed (public, public-init, or public-read) > This allows binding on them 2009 Sun Microsystems, Incorporated. All Rights Reserved. 24
  • 25. A rich client platform for all screens Binds and Triggers public var x1; public var x2; public-read var width = bind x2 - x1; public var radius = 10 on replace { diameter = 2 * radius } 2009 Sun Microsystems, Incorporated. All Rights Reserved. 25
  • 26. A rich client platform for all screens Outline • JavaFX Script – a new programming language • JavaFX scene graph • User interface controls • Styling • Charts • Layout • Developer tools 2009 Sun Microsystems, Incorporated. All Rights Reserved. 26
  • 27. A rich client platform for all screens Scenegraph • Data structure which represents all visual elements • Easily reference any visual element in the app and manipulate it • Comprised of Nodes > Leaf Nodes (shapes, images, text, etc) > Parent Nodes (Groups, Containers, etc) 2009 Sun Microsystems, Incorporated. All Rights Reserved. 27
  • 28. A rich client platform for all screens Group Image Group Circle Media 2009 Sun Microsystems, Incorporated. All Rights Reserved. 28
  • 29. A rich client platform for all screens Scenegraph Sample Group { content: [ ImageView { } Group Group { content: [ Circle { }, MediaView { } Image Group ] } ] } Circle Media 2009 Sun Microsystems, Incorporated. All Rights Reserved. 29
  • 30. A rich client platform for all screens Nodes • Group • MediaView • CustomNode • Text • Container • more... • Control • Line • Path • Rectangle • ImageView 2009 Sun Microsystems, Incorporated. All Rights Reserved. 30
  • 31. A rich client platform for all screens ImageView • Image represents an in-memory bitmap > loaded via URL, from jar • ImageView Node contains an Image • Both ImageView and Image can scale > Preserve ratio > Fit within a specific width/height 2009 Sun Microsystems, Incorporated. All Rights Reserved. 31
  • 32. A rich client platform for all screens Text Node • x, y, TextOrigin • Fonts can be specified on Text • Supports multiline text • By default, text positioned such that (x, y) is left baseline 2009 Sun Microsystems, Incorporated. All Rights Reserved. 32
  • 33. A rich client platform for all screens (0, -10) (0, 0) Example 2009 Sun Microsystems, Incorporated. All Rights Reserved.
  • 34. A rich client platform for all screens Effects • Any Node can have an Effect • Many standard built in > Blend modes > Bloom > DisplacementMap > DropShadow > ColorAdjust > BoxBlur > Glow > Reflection > InnerShadow > more... 2009 Sun Microsystems, Incorporated. All Rights Reserved. 34
  • 35. A rich client platform for all screens Media • JavaFX supports both visual and audio media • Cross platform JavaFX Media file (fxm, mp3) • Also plays native formats (mov, wmv) • Media class represents a media file • MediaPlayer plays a Media file • MediaView is the Node which displays the Media 2009 Sun Microsystems, Incorporated. All Rights Reserved. 35
  • 36. A rich client platform for all screens Animation • Animation is a key feature of every rich graphics application platform • There are two supported animation types in JavaFX > Keyframe animations > Transitions 2009 Sun Microsystems, Incorporated. All Rights Reserved. 36
  • 37. A rich client platform for all screens KeyFrame Animation • KeyFrame: specifies that a variable should have... > a particular value > at a particular time • Timeline > Modifies values of variables specified by KeyFrames > Doesn’t necessarily do any animation itself • How is animation actually done? > Arrange for a KeyFrame to modify an interesting Node variable – x, rotate, opacity, fill, ... 2009 Sun Microsystems, Incorporated. All Rights Reserved. 37
  • 38. A rich client platform for all screens KeyFrame Animation Setup var text = Text { x: 50 y: 80 content: "Hello, world!" rotate: 30 } Timeline { keyFrames: at (4s) { text.rotate => 210.0 } }.play(); 2009 Sun Microsystems, Incorporated. All Rights Reserved. 38
  • 39. A rich client platform for all screens Transitions • Predefined, single-purpose animations > Fade, Path, Pause, Rotate, Scale, Translate > Can specify to, from, and by values • Container transitions: > Parallel, Sequential > Can be nested arbitrarily 2009 Sun Microsystems, Incorporated. All Rights Reserved. 39
  • 40. A rich client platform for all screens DEMO – Simple Scene Graph 2009 Sun Microsystems, Incorporated. All Rights Reserved. 40
  • 41. A rich client platform for all screens Outline • JavaFX Script – a new programming language • JavaFX scene graph • User interface controls • Styling • Charts • Layout • Developer tools 2009 Sun Microsystems, Incorporated. All Rights Reserved. 41
  • 42. A rich client platform for all screens JavaFX UI Controls • Simple • Useful • Rich 2009 Sun Microsystems, Incorporated. All Rights Reserved. 42
  • 43. A rich client platform for all screens Architecture Skin Control Behavior 2009 Sun Microsystems, Incorporated. All Rights Reserved. 43
  • 44. A rich client platform for all screens Dark color buttons on toolbar Light color controls on almost white background 2009 Sun Microsystems, Incorporated. All Rights Reserved. 44
  • 45. A rich client platform for all screens Controls in JavaFX • Button • TextBox • Multiline TextBox • ToggleButton • ListView • Horizontal ListView • RadioButton • TreeView • Popup • CheckBox • PasswordBox • Tooltip • Slider • ChoiceButton • Label • MenuButton • ScrollBar • SplitMenuButton • Hyperlink • Menus • ProgressIndicator • ToolBar • ProgressBar • ScrollView 2009 Sun Microsystems, Incorporated. All Rights Reserved. 45
  • 46. A rich client platform for all screens Button • action:function() • Example: Button { text: “Cancel” action: function() { println(“I’ve been clicked!”); } } 2009 Sun Microsystems, Incorporated. All Rights Reserved. 46
  • 47. A rich client platform for all screens Progress Indicator • progress:Number (0..1) • progress bar is-a progress indicator • Example: var task = HttpRequest { ... } ProgressIndicator { progress: bind task.percentDone } 2009 Sun Microsystems, Incorporated. All Rights Reserved. 47
  • 48. A rich client platform for all screens TextBox • text:String • promptText:String • font:Font • action:function() • Example: var t:TextBox = TextBox { promptText: “Search” action: function() { startSearch(t.text); t.text = “”; } } 2009 Sun Microsystems, Incorporated. All Rights Reserved. 48
  • 49. A rich client platform for all screens Multiline TextBox • columns:Integer • lines:Integer • multiline:Boolean • Example: var t:TextBox = TextBox { columns: 30 lines: 10 multiline: true } 2009 Sun Microsystems, Incorporated. All Rights Reserved. 49
  • 50. A rich client platform for all screens List View • Horizontal or Vertical • Massively Scalable • Custom Cells • Dynamically variable row height • Example: ListView { items: [“Apples”, “Oranges”, “Bananas”] cellMaker: function() { ListCell { ... } } } 2009 Sun Microsystems, Incorporated. All Rights Reserved. 50
  • 51. A rich client platform for all screens DEMO – UI Controls 2009 Sun Microsystems, Incorporated. All Rights Reserved. 51
  • 52. A rich client platform for all screens Outline • JavaFX Script – a new programming language • JavaFX scene graph • User interface controls • Styling • Charts • Layout • Developer tools 2009 Sun Microsystems, Incorporated. All Rights Reserved. 52
  • 53. A rich client platform for all screens Styling • Easy and Powerful (CSS) • Highly Customized (fxz) • Complete Control (code) 2009 Sun Microsystems, Incorporated. All Rights Reserved. 53
  • 54. A rich client platform for all screens Styling • Easy and Powerful (CSS) • Highly Customized (fxz) • Complete Control (code) 2009 Sun Microsystems, Incorporated. All Rights Reserved. 54
  • 55. A rich client platform for all screens Styling 2009 Sun Microsystems, Incorporated. All Rights Reserved. 55
  • 56. A rich client platform for all screens Styling • CSS is our strategy for styling • Caspian is our default CSS stylesheet • CSS is fast, and works on mobile, desktop, and tv • Stick to the spirit of HTML CSS > but do not be bound by it 2009 Sun Microsystems, Incorporated. All Rights Reserved. 56
  • 57. A rich client platform for all screens Styling • Break control skins in styleable parts • In some ways similar to HTML CSS’s Box • Rectangle with independently rounded corners > or any arbitrary path • Can have multiple > background fills > background images > border strokes > border images 2009 Sun Microsystems, Incorporated. All Rights Reserved. 57
  • 58. A rich client platform for all screens Styling 2009 Sun Microsystems, Incorporated. All Rights Reserved. 58
  • 59. A rich client platform for all screens 2009 Sun Microsystems, Incorporated. All Rights Reserved. 59
  • 60.
  • 61. A rich client platform for all screens Left Button Track Thumb ScrollBar Right Button Left Arrow Right Arrow 2009 Sun Microsystems, Incorporated. All Rights Reserved. 61
  • 62. A rich client platform for all screens Outline • JavaFX Script – a new programming language • JavaFX scene graph • User interface controls • Styling • Charts • Layout • Developer tools 2009 Sun Microsystems, Incorporated. All Rights Reserved. 62
  • 63. A rich client platform for all screens Charts • A basic set of charts for everyday use > Simple > Customizable • To provide tools to help you build your own charts 2009 Sun Microsystems, Incorporated. All Rights Reserved. 63
  • 64. A rich client platform for all screens Pie Chart 2009 Sun Microsystems, Incorporated. All Rights Reserved. 64
  • 65. A rich client platform for all screens Sample Pie PieChart { title: "Sample Pie" data: [ PieChart.Data { label: "Apples" value: 34 action: function(){ Alert.inform("Clicked") } }, PieChart.Data { label: "Oranges" value: 27 }, PieChart.Data { label: "Bananas" value: 16 }, PieChart.Data { label: "Grapes" value: 50 }, PieChart.Data { label: "Cherries" value: 6 }, PieChart.Data { label: "Strawberry" value: 5 }, PieChart.Data { label: "Raspberry" value: 7 } ] } 2009 Sun Microsystems, Incorporated. All Rights Reserved. 65
  • 66. A rich client platform for all screens Bar Chart 2009 Sun Microsystems, Incorporated. All Rights Reserved. 66
  • 67. A rich client platform for all screens Line Chart 2009 Sun Microsystems, Incorporated. All Rights Reserved. 67
  • 68. A rich client platform for all screens Area Chart 2009 Sun Microsystems, Incorporated. All Rights Reserved. 68
  • 69. A rich client platform for all screens Scatter Chart 2009 Sun Microsystems, Incorporated. All Rights Reserved. 69
  • 70. A rich client platform for all screens Bubble Chart 2009 Sun Microsystems, Incorporated. All Rights Reserved. 70
  • 71. A rich client platform for all screens 3D Bar Chart 2009 Sun Microsystems, Incorporated. All Rights Reserved. 71
  • 72. A rich client platform for all screens 3D Pie Chart 2009 Sun Microsystems, Incorporated. All Rights Reserved. 72
  • 73. A rich client platform for all screens Outline • JavaFX Script – a new programming language • JavaFX scene graph • User interface controls • Styling • Charts • Layout • Developer tools 2009 Sun Microsystems, Incorporated. All Rights Reserved. 73
  • 74. A rich client platform for all screens Layout Containers • Container-based layout • Container is-a Node • Built-in Containers in 1.2 > Stack: stack all content nodes on top of each other > HBox: lay out content horizontally > VBox: lay out content vertically > Flow: layout out content either horizontally or vertically and line wrap > Panel: Customizable layout container 2009 Sun Microsystems, Incorporated. All Rights Reserved. 74
  • 75. A rich client platform for all screens Flow Sample Flow { width: 800 height: 600 content: for (img in images) { ImageView { image: img } } } 2009 Sun Microsystems, Incorporated. All Rights Reserved. 75
  • 76. A rich client platform for all screens Developer Tools • NetBeans with JavaFX plug-in > Syntax highlighting > Code completion > SDK integration • Eclipse, IntelliJ • JavaFX Production Suite > Imports artwork from content creation tools > ... into the scenegraph as a Node • JavaFX Authoring Tool > Creating JavaFX Content > Built completely on top of JavaFX and UI Controls 2009 Sun Microsystems, Incorporated. All Rights Reserved. 76
  • 77. A rich client platform for all screens Developer-Designer Workflow 2009 Sun Microsystems, Incorporated. All Rights Reserved. 77
  • 78. A rich client platform for all screens DEMO – JavaFX Production Suite 2009 Sun Microsystems, Incorporated. All Rights Reserved. 78
  • 79. A rich client platform for all screens Call To Action • fxexperience.com • Visit javafx.com > Download JavaFX SDK + NetBeans > See demos > Download example code > Read tutorials, FAQs, white papers, documentation > Browse API Documentation Thank You! 2009 Sun Microsystems, Incorporated. All Rights Reserved. 79