This presentation introduces JavaFX 1.0 and demonstrates its capabilities. It is given by three members of the JavaFX SDK team. The presentation covers JavaFX Script, the scene graph, working with images, text, and creating a simple application with buttons and images. Code examples are provided and live demos are shown to illustrate key JavaFX concepts.
Don't be fooled by the thumbnail - the first couple of slides are a silly joke I forgot to remove before uploading.
Presentation derived from the "What's new in Python 2.4" document on http://www.python.org/ including much reformatting for presenting and presenter notes.
Please download the Keynote original - that way the presentation notes aren't burned into the slides.
This presentation introduces some advanced concepts of threads, as implemented in the Java platform. It is part of a series of slides dedicated to threads. This slides introduces the following concepts:
- Callable
- Futures
- Executors and executor services
- Deadlocks (brief introduction)
The presentation is took from the Java course I run in the bachelor-level informatics curriculum at the University of Padova.
Presentation derived from the "What's new in Python 2.5" document on http://www.python.org/ including much reformatting for presenting and presenter notes.
Please download the Keynote original - that way the presentation notes aren't burned into the slides.
This presentation introduces some advanced concepts of generics in Java. These slides introduce the following concepts:
- Generic classes and methods
- Type variable bounds
- Type erasure process
- Generics and inheritance
- Wildcard types
The presentation is took from the Java course I run in the bachelor-level informatics curriculum at the University of Padova.
This presentation introduces the concept of synchronization beatween threads, as implemented in the Java platform. It is the first part of a series of slides dedicated to thread synchronization. This slides introduces the following concepts:
- Thread safety
- Types of race conditions
- Locking (reentrant locks, intrinsic locks, synchronized blocks)
- Locking pitfalls
The presentation is took from the Java course I run in the bachelor-level informatics curriculum at the University of Padova.
Don't be fooled by the thumbnail - the first couple of slides are a silly joke I forgot to remove before uploading.
Presentation derived from the "What's new in Python 2.4" document on http://www.python.org/ including much reformatting for presenting and presenter notes.
Please download the Keynote original - that way the presentation notes aren't burned into the slides.
This presentation introduces some advanced concepts of threads, as implemented in the Java platform. It is part of a series of slides dedicated to threads. This slides introduces the following concepts:
- Callable
- Futures
- Executors and executor services
- Deadlocks (brief introduction)
The presentation is took from the Java course I run in the bachelor-level informatics curriculum at the University of Padova.
Presentation derived from the "What's new in Python 2.5" document on http://www.python.org/ including much reformatting for presenting and presenter notes.
Please download the Keynote original - that way the presentation notes aren't burned into the slides.
This presentation introduces some advanced concepts of generics in Java. These slides introduce the following concepts:
- Generic classes and methods
- Type variable bounds
- Type erasure process
- Generics and inheritance
- Wildcard types
The presentation is took from the Java course I run in the bachelor-level informatics curriculum at the University of Padova.
This presentation introduces the concept of synchronization beatween threads, as implemented in the Java platform. It is the first part of a series of slides dedicated to thread synchronization. This slides introduces the following concepts:
- Thread safety
- Types of race conditions
- Locking (reentrant locks, intrinsic locks, synchronized blocks)
- Locking pitfalls
The presentation is took from the Java course I run in the bachelor-level informatics curriculum at the University of Padova.
This presentation introduces the Java concept of thread. It is the first part of a series of slides dedicated to concurrent programming. This slides introduces some basics concepts, such as:
- Differences between processes and threads
- Thread's basics
- Thread's states
- Introduction to UML sequence diagrams
The presentation is took from the Java course I run in the bachelor-level informatics curriculum at the University of Padova.
Java Exception Handling, Assertions and LoggingRiccardo Cardin
This presentation introduces the java exception handling mechanisms. In detail, the main focus of the slides is to show how the language implements its exception handling polices, such as:
- Checked and uncheked exception
- Try / catch blocks
- Assertions
- Logging
The presentation is took from the Java course I run in the bachelor-level informatics curriculum at the University of Padova.
Building Amazing Applications with JavaFXRichard Bair
This presentation from Devoxx Belgium 2012 is a breakdown of the software behind the conference scheduling Kiosks that were shown at JavaOne 2012 and Devox 2012. Good content on Styling and CSS, Custom Controls, and Animated Transitions in JavaFX 2.0
Part of a presentation at Devoxx Belgium in 2011 targeted at "Rich Clients" (aka Rich Internet Applications) using JavaFX. It looks like some of the content went missing after slide 40!
This presentation introduces the Java concept of thread. It is the first part of a series of slides dedicated to concurrent programming. This slides introduces some basics concepts, such as:
- Differences between processes and threads
- Thread's basics
- Thread's states
- Introduction to UML sequence diagrams
The presentation is took from the Java course I run in the bachelor-level informatics curriculum at the University of Padova.
Java Exception Handling, Assertions and LoggingRiccardo Cardin
This presentation introduces the java exception handling mechanisms. In detail, the main focus of the slides is to show how the language implements its exception handling polices, such as:
- Checked and uncheked exception
- Try / catch blocks
- Assertions
- Logging
The presentation is took from the Java course I run in the bachelor-level informatics curriculum at the University of Padova.
Building Amazing Applications with JavaFXRichard Bair
This presentation from Devoxx Belgium 2012 is a breakdown of the software behind the conference scheduling Kiosks that were shown at JavaOne 2012 and Devox 2012. Good content on Styling and CSS, Custom Controls, and Animated Transitions in JavaFX 2.0
Part of a presentation at Devoxx Belgium in 2011 targeted at "Rich Clients" (aka Rich Internet Applications) using JavaFX. It looks like some of the content went missing after slide 40!
Employee Management System UML Diagrams Use Case Diagram, Activity Diagram, S...Mohammad Karim Shahbaz
The system as such as it is designed is called Employee Management System (EMS). Employee Management System is documented using UML Diagrams very easy to understand. This Employee Management System is designed to Manage the Recruitment & new Employee Registration process and Manage each Employee data. Attendance Management System and Salary Management Systems are also embedded. UML Diagrams ( Use Case Diagram, Activity Diagram, State Chart Diagram or State Machine, Sequence Diagram, Class Diagram, Deployment Diagram, Component Diagram ) and text are for this documentation. NU,BCS
NOTE: this is total documentation, You can also find this Documentation Related Presentation (.ppt) here:
http://www.slideshare.net/mohammadkarim3785/employee-management-system-uml
Java basic part 2 : Datatypes Keywords Features Components Security Exceptions Soumen Santra
Features
JVM
Architecture
Security
Data Types
Class and Object
Program
First Java Application
Declaring and creating objects
Arrays
Constructors
this keyword
static keyword
Inheritance
Overriding
Access Modifiers
super keyword
final keyword
abstract classes
interfaces
Exceptions (error handling)
User Defining exceptions
According to Mark Reinhold we can expect (after Java 9) a time-based model with a new feature release every six months, update releases every quarter, and a long-term support release every three years. This session will have a closer look at the possible Java language features we can expect in the near future.
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...Ramesh Iyer
In today's fast-changing business world, Companies that adapt and embrace new ideas often need help to keep up with the competition. However, fostering a culture of innovation takes much work. It takes vision, leadership and willingness to take risks in the right proportion. Sachin Dev Duggal, co-founder of Builder.ai, has perfected the art of this balance, creating a company culture where creativity and growth are nurtured at each stage.
UiPath Test Automation using UiPath Test Suite series, part 4DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 4. In this session, we will cover Test Manager overview along with SAP heatmap.
The UiPath Test Manager overview with SAP heatmap webinar offers a concise yet comprehensive exploration of the role of a Test Manager within SAP environments, coupled with the utilization of heatmaps for effective testing strategies.
Participants will gain insights into the responsibilities, challenges, and best practices associated with test management in SAP projects. Additionally, the webinar delves into the significance of heatmaps as a visual aid for identifying testing priorities, areas of risk, and resource allocation within SAP landscapes. Through this session, attendees can expect to enhance their understanding of test management principles while learning practical approaches to optimize testing processes in SAP environments using heatmap visualization techniques
What will you get from this session?
1. Insights into SAP testing best practices
2. Heatmap utilization for testing
3. Optimization of testing processes
4. Demo
Topics covered:
Execution from the test manager
Orchestrator execution result
Defect reporting
SAP heatmap example with demo
Speaker:
Deepak Rai, Automation Practice Lead, Boundaryless Group and UiPath MVP
UiPath Test Automation using UiPath Test Suite series, part 3DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 3. In this session, we will cover desktop automation along with UI automation.
Topics covered:
UI automation Introduction,
UI automation Sample
Desktop automation flow
Pradeep Chinnala, Senior Consultant Automation Developer @WonderBotz and UiPath MVP
Deepak Rai, Automation Practice Lead, Boundaryless Group and UiPath MVP
Connector Corner: Automate dynamic content and events by pushing a buttonDianaGray10
Here is something new! In our next Connector Corner webinar, we will demonstrate how you can use a single workflow to:
Create a campaign using Mailchimp with merge tags/fields
Send an interactive Slack channel message (using buttons)
Have the message received by managers and peers along with a test email for review
But there’s more:
In a second workflow supporting the same use case, you’ll see:
Your campaign sent to target colleagues for approval
If the “Approve” button is clicked, a Jira/Zendesk ticket is created for the marketing design team
But—if the “Reject” button is pushed, colleagues will be alerted via Slack message
Join us to learn more about this new, human-in-the-loop capability, brought to you by Integration Service connectors.
And...
Speakers:
Akshay Agnihotri, Product Manager
Charlie Greenberg, Host
Securing your Kubernetes cluster_ a step-by-step guide to success !KatiaHIMEUR1
Today, after several years of existence, an extremely active community and an ultra-dynamic ecosystem, Kubernetes has established itself as the de facto standard in container orchestration. Thanks to a wide range of managed services, it has never been so easy to set up a ready-to-use Kubernetes cluster.
However, this ease of use means that the subject of security in Kubernetes is often left for later, or even neglected. This exposes companies to significant risks.
In this talk, I'll show you step-by-step how to secure your Kubernetes cluster for greater peace of mind and reliability.
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Albert Hoitingh
In this session I delve into the encryption technology used in Microsoft 365 and Microsoft Purview. Including the concepts of Customer Key and Double Key Encryption.
Key Trends Shaping the Future of Infrastructure.pdfCheryl Hung
Keynote at DIGIT West Expo, Glasgow on 29 May 2024.
Cheryl Hung, ochery.com
Sr Director, Infrastructure Ecosystem, Arm.
The key trends across hardware, cloud and open-source; exploring how these areas are likely to mature and develop over the short and long-term, and then considering how organisations can position themselves to adapt and thrive.
GraphRAG is All You need? LLM & Knowledge GraphGuy Korland
Guy Korland, CEO and Co-founder of FalkorDB, will review two articles on the integration of language models with knowledge graphs.
1. Unifying Large Language Models and Knowledge Graphs: A Roadmap.
https://arxiv.org/abs/2306.08302
2. Microsoft Research's GraphRAG paper and a review paper on various uses of knowledge graphs:
https://www.microsoft.com/en-us/research/blog/graphrag-unlocking-llm-discovery-on-narrative-private-data/
JMeter webinar - integration with InfluxDB and GrafanaRTTS
Watch this recorded webinar about real-time monitoring of application performance. See how to integrate Apache JMeter, the open-source leader in performance testing, with InfluxDB, the open-source time-series database, and Grafana, the open-source analytics and visualization application.
In this webinar, we will review the benefits of leveraging InfluxDB and Grafana when executing load tests and demonstrate how these tools are used to visualize performance metrics.
Length: 30 minutes
Session Overview
-------------------------------------------
During this webinar, we will cover the following topics while demonstrating the integrations of JMeter, InfluxDB and Grafana:
- What out-of-the-box solutions are available for real-time monitoring JMeter tests?
- What are the benefits of integrating InfluxDB and Grafana into the load testing stack?
- Which features are provided by Grafana?
- Demonstration of InfluxDB and Grafana using a practice web application
To view the webinar recording, go to:
https://www.rttsweb.com/jmeter-integration-webinar
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualityInflectra
In this insightful webinar, Inflectra explores how artificial intelligence (AI) is transforming software development and testing. Discover how AI-powered tools are revolutionizing every stage of the software development lifecycle (SDLC), from design and prototyping to testing, deployment, and monitoring.
Learn about:
• The Future of Testing: How AI is shifting testing towards verification, analysis, and higher-level skills, while reducing repetitive tasks.
• Test Automation: How AI-powered test case generation, optimization, and self-healing tests are making testing more efficient and effective.
• Visual Testing: Explore the emerging capabilities of AI in visual testing and how it's set to revolutionize UI verification.
• Inflectra's AI Solutions: See demonstrations of Inflectra's cutting-edge AI tools like the ChatGPT plugin and Azure Open AI platform, designed to streamline your testing process.
Whether you're a developer, tester, or QA professional, this webinar will give you valuable insights into how AI is shaping the future of software delivery.
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...Jeffrey Haguewood
Sidekick Solutions uses Bonterra Impact Management (fka Social Solutions Apricot) and automation solutions to integrate data for business workflows.
We believe integration and automation are essential to user experience and the promise of efficient work through technology. Automation is the critical ingredient to realizing that full vision. We develop integration products and services for Bonterra Case Management software to support the deployment of automations for a variety of use cases.
This video focuses on the notifications, alerts, and approval requests using Slack for Bonterra Impact Management. The solutions covered in this webinar can also be deployed for Microsoft Teams.
Interested in deploying notification automations for Bonterra Impact Management? Contact us at sales@sidekicksolutionsllc.com to discuss next steps.
Elevating Tactical DDD Patterns Through Object CalisthenicsDorra BARTAGUIZ
After immersing yourself in the blue book and its red counterpart, attending DDD-focused conferences, and applying tactical patterns, you're left with a crucial question: How do I ensure my design is effective? Tactical patterns within Domain-Driven Design (DDD) serve as guiding principles for creating clear and manageable domain models. However, achieving success with these patterns requires additional guidance. Interestingly, we've observed that a set of constraints initially designed for training purposes remarkably aligns with effective pattern implementation, offering a more ‘mechanical’ approach. Let's explore together how Object Calisthenics can elevate the design of your tactical DDD patterns, offering concrete help for those venturing into DDD for the first time!
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf91mobiles
91mobiles recently conducted a Smart TV Buyer Insights Survey in which we asked over 3,000 respondents about the TV they own, aspects they look at on a new TV, and their TV buying preferences.
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...James Anderson
Effective Application Security in Software Delivery lifecycle using Deployment Firewall and DBOM
The modern software delivery process (or the CI/CD process) includes many tools, distributed teams, open-source code, and cloud platforms. Constant focus on speed to release software to market, along with the traditional slow and manual security checks has caused gaps in continuous security as an important piece in the software supply chain. Today organizations feel more susceptible to external and internal cyber threats due to the vast attack surface in their applications supply chain and the lack of end-to-end governance and risk management.
The software team must secure its software delivery process to avoid vulnerability and security breaches. This needs to be achieved with existing tool chains and without extensive rework of the delivery processes. This talk will present strategies and techniques for providing visibility into the true risk of the existing vulnerabilities, preventing the introduction of security issues in the software, resolving vulnerabilities in production environments quickly, and capturing the deployment bill of materials (DBOM).
Speakers:
Bob Boule
Robert Boule is a technology enthusiast with PASSION for technology and making things work along with a knack for helping others understand how things work. He comes with around 20 years of solution engineering experience in application security, software continuous delivery, and SaaS platforms. He is known for his dynamic presentations in CI/CD and application security integrated in software delivery lifecycle.
Gopinath Rebala
Gopinath Rebala is the CTO of OpsMx, where he has overall responsibility for the machine learning and data processing architectures for Secure Software Delivery. Gopi also has a strong connection with our customers, leading design and architecture for strategic implementations. Gopi is a frequent speaker and well-known leader in continuous delivery and integrating security into software delivery.
4. www.devoxx.com
Our qualifications
Richard, Jasper, and Martin are all on the JavaFX SDK
team
Martin lead the team responsible for the JavaFX
Production Suite
Richard is one of the API leads for JavaFX SDK
Jasper is one of the key engineers on the JavaFX SDK
4
7. www.devoxx.com
Common APIs across devices
Scales from small devices to powerful desktops
Brings rich media and graphical APIs to Java
Simplifies building graphical consumer and enterprise
applications
7
Introduction to JavaFX™
11. www.devoxx.com
JavaFX Script source files are called “scripts”
Scripts which expose no public API may be “loose”
Everything* in JavaFX Script is an expression
All blocks are expressions and the last line is the result
The result of the println expression is null
The JavaFX String primitive is java.lang.String
11
Hello World Explained
13. www.devoxx.com
var s = “Hello World”;
var s2 = ‘I can use single quotes too’;
var i = 10;
var s3 = “The number is {i}”;
var even = i mod 2 == 0;
var s4 = “The number is {if (even) then ‘even’ else ‘odd’}”;
var s5 = “The hex code for 1024 is {%x 1024}”;
var s6 = “You can declare multiline strings”
“Just like this. Notice no ‘+’ sign”;
13
Declaring Strings
14. www.devoxx.com
var d = 23s;
var d2 = 2.3ms;
var d3 = 25.5 * 1.13s;
var d4 = 5m;
var d5 = 10h;
14
Declaring Durations
15. www.devoxx.com
JavaFX has “Sequences”, not arrays
A Sequence is an immutable ordered list of non-null
elements
JavaFX supports sequence comprehensions
Sequences can be “sliced”
Sequences can optimize memory usage
15
Declaring Sequences
16. www.devoxx.com
// A sequence of all the positive non zero integers. This
// actually uses very little memory since the range is
// remembered, not the values (since sequences are
// immutable)
var ints = [1..java.lang.Integer.MAX_INT];
println(sizeof ints);
// creates a subsequence which contains all positive non
// zero even integers
var even = ints[n | n mod 2 == 0];
// a simple sequence of strings
var names = [“Jasper”, “Richard”, “Martin”];
16
Declaring Sequences
17. www.devoxx.com
// A sequence of one can omit the brackets
var names:String[] = “Richard”;
// Empty sequences are not null
var names:String[];
println(sizeof names); // prints 0
// elements are accessed by index
var names = [“Jasper”, “Richard”, “Martin”];
var martin = names[2];
// and you can populate a sequence using a for loop
var hellos = for (i in [1..3]) { “Hello #{i}” }
17
Declaring More Sequences
18. www.devoxx.com
// Inserting items into a sequence
var names:String[] = “Richard”;
insert “Jasper” into names;
// Inserting before a certain index
insert “Martin” before names[1];
// Inserting after a certain index
insert “Duke” after names[1];
// Deleting from the sequence
delete “Duke” from names;
18
Modifying Sequences
20. www.devoxx.com
if ( booleanExpression) then a else b
if (booleanExpression) a else b
if (booleanExpression) { a } else { b }
while (booleanExpression) { ... }
for (i in sequence) { ... }
Can get index of item “i” by “indexof i”
break
continue
20
Flow Control
21. www.devoxx.com
if ( booleanExpression) then a else b
An if expression returns either “a” or “b” as the result
If “a” or “b” is a block, then it returns the last line of the
block that was selected by the if statement
While and For are expressions which return a sequence
filled with the result of the last line of the block
21
Flow Control Expressions
23. www.devoxx.com
// I cannot be changed. I’m inferred to be a Number.
def pi = 3.141592;
// I can be changed. And I’ve been explicitly declared
// as a Number
var radius:Number = 7;
// same as above except by type inference it thinks it is an
// Integer
var radius2 = 7;
23
Declaring Variables
24. www.devoxx.com
name(args):type style syntax
Type inference
Must use keyword function
Must use keyword override when overriding a function
May be public, package, protected, or implicitly private
May be anonymous (ie: closure)
24
Declaring Functions
25. www.devoxx.com
// A private function which returns the min of the two args
function min(first:Number, second:Number):Number {
if (first <= second) then first else second
}
// a function variable and anonymous function declaration
// and function invocation
var onError:function(e:Exception):Void;
onError = function(e:Exception):Void {
e.printStackTrace();
}
onError(e);
25
Declaring Functions
26. www.devoxx.com
Classes extend classes or interfaces
Scope modifiers: public, protected, package
Implicitly “script private”
init { } and postinit { } blocks take place of Constructors
Functions and variables declared outside a class are static
Multiple classes may be defined in a single Script
26
Declaring Classes
27. www.devoxx.com
// This class extends a Java interface
public class FooModel extends TableModel { ... }
// This class defines two variables and a function
public class Location {
public var x:Number;
public var y:Number;
public function move(newX:Number, newY:Number):Void {
x = newX;
y = newY;
}
}
27
Declaring Classes
28. www.devoxx.com
Variables use scope modifiers for read & write access
public
protected
package
“script private” by default
Variables can have additional modifiers to modify write
access
public-read
public-init
28
Variable Scope Modifiers
29. www.devoxx.com
public class ImmutableFoo {
// This variable can be initialized by anyone, but
// modified only by this script
public-init var name:String;
}
public class ReadOnly extends {
public var x1:Number;
public var x2:Number;
// This variable can only be read by everyone, it cannot
// be initialized or mutated outside this script
public-read var distance:Number;
}
29
Variable Scope Modifiers
30. www.devoxx.com
Variables are initialized from base class to child class in
the order in which they are declared
Variables are only initialized once
init { } blocks are called after all variables in the class have
been initialized
Parent class init { } blocks are called before child init { }
postinit { } blocks are called after the init { } block
Parent class postinit { } blocks are called after child
postinit { } blocks
30
Class Initialization
31. www.devoxx.com
public class Parent {
public var name = “Richard”;
init {
println(“name is {name}”);
}
}
public class Child extends Parent {
override var name = “Luke”;
}
31
Variable Initialization Order
32. www.devoxx.com
// prints out “Richard”
var parent = Parent { };
// prints out “Luke”
var child = Child { };
32
Variable Initialization Order
33. www.devoxx.com
Variables can have on replace triggers to execute
procedural code when the bound variable is updated
Triggers execute in an undefined order
Variables can have multiple triggers
Triggers are fired for every set, including initialization
33
Triggers
34. www.devoxx.com
public class Location {
public var x:Number on replace {
println(“New X Value is {x}”);
}
public var y:Number on replace {
println(“New Y Value is {y}”);
}
}
34
Triggers
35. www.devoxx.com
bind is a way to tie the value of one variable to the value
of an expression
binding must be defined when the variable is initialized
bindings are statically compiled
bound variables cannot be set manually
use bind with inverse for bidirectional binding
35
Bind
36. www.devoxx.com
public class Distance extends {
public var x1:Number;
public var x2:Number;
// Whenever x2 or x1 changes, distance will be updated
// Binding can be used for invariants
public-read var distance:Number = bind x2 - x1;
}
36
Simple Binding Example
37. www.devoxx.com
Concise declarative syntax for object creation
Similar to JavaScript
Combine with binding for maximum effect
variable: initial-value
initial-value is an expression
37
Object Literals
38. www.devoxx.com
// creates a Rectangle
// x: 10 is not an assignment, it is an initialization!
var rect = Rectangle {
x: 10
y: 10
width: 100
height: 100
}
38
Object Literal
39. www.devoxx.com
// creates a Rectangle with a Color for its fill
var rect = Rectangle {
x: 10
y: 10
width: 100
height: 100
fill: Color {
red: 1
green: 0
blue: 0
}
}
39
Nesting Object Literals
40. www.devoxx.com
// Notice that I can declare a var and use it in the literal
var rect = Rectangle {
var color = Color {
red: 1
green: 0
blue: 0
}
x: 10
y: 10
width: 100
height: 100
fill: color
}
40
Vars in Object Literals
41. www.devoxx.com
// A variation that allows me to reference the color later
var color:Color;
var rect = Rectangle {
x: 10
y: 10
width: 100
height: 100
fill: color = Color {
red: 1
green: 0
blue: 0
}
}
41
Vars in Object Literals
42. www.devoxx.com
// Here I’ll choose the color to use based on some boolean
var highContrast = false;
var rect = Rectangle {
x: 10
y: 10
width: 100
height: 100
fill: bind if (highContrast) then BLACK else GRAY
}
highContrast = true;
42
Object Literal With If
43. www.devoxx.com
Describes the graphics and controls in a scene
Each node in the graph has a single parent
Special “group” nodes have zero or more children
“leaf” nodes have no children
Graph is set on a Scene
Scene is set in a Stage
43
Scene Graph
46. www.devoxx.com
Canvas upon which the Scene Graph is displayed
Can set multiple CSS Stylesheets
Can set background color (or set to null)
Can set canvas width / height
46
Scene
49. www.devoxx.com
Top-level container for the scene
Contains only one Scene
Can set Stage width / height
Potentially represented by:
JFrame on desktop
JApplet on web page
SVG player on mobile
49
Stage
52. www.devoxx.com
Node is the base class of the entire scene graph
Every Node has bounds
Every Node has transforms
translate
scale
rotate
affine
Every Node has a parent
52
Nodes
55. www.devoxx.com
Have zero or more children as “content”
Can specify a blend mode
The children are composited within the group according
to the blend mode
55
Groups
Top Source
Bottom Source
None OVERLAY
56. www.devoxx.com
Primary method of Scene Graph encapsulation
All other nodes are not extendable
Simply override the create() method
56
Custom Node
57. www.devoxx.com
// A Rectangle with a round top and square bottom
public class HalfRoundRectangle extends CustomNode {
protected override function create():Node {
Group {
content: [
Rectangle {
width:50, height:35, arcWidth:12, arcHeight:12
}
Rectangle { y:20, width:50, height:30 }
]
}
}
}
57
Half-round Rectangle
60. www.devoxx.com
x, y, width, height
Use arcWidth, arcHeight to make a rounded rect
Rectangles are positioned with the top left corner at (x, y)
60
Rectangle
62. www.devoxx.com
Colors
150+ built in colors (all the HTML & CSS built in values)
Color.web(“#aabbcc”)
Color.web(“blue”)
Color.rgb(128, 222, 21)
62
Colors
63. www.devoxx.com
startX, startY, endX, endY
Define the direction of the gradient
On the unit square
Stops define each step in the gradient. Each stop
Has an offset between 0...1
Has a Color
63
Linear Gradients
65. www.devoxx.com
ImageView node shows images
Image represents an in memory Image
Image can load images in FG thread or BG thread
Both ImageView and Image can scale
Preserve ratio
Fit within a specific width/height
When fit on Image level, keeps smaller image in memory
65
Images
67. www.devoxx.com
x, y, TextOrigin
By default, text positioned such that (x, y) is left baseline
Fonts can be specified on Text
Favor “fill” over “stroke”
Supports multiline text
Use alignment to align multiline text
To center text, compute the center via layout bounds
67
Text
68. www.devoxx.com
Used for text input
Use CSS to style the TextBox
“text” is changed to reflect the actual text in the TextBox
“value” is changed when the text is “committed” via
ENTER, TAB, etc
“action” function is invoked when ENTER pressed
“columns” specifies the preferred width based on the font
size and number of characters to display
68
Text Box
69. www.devoxx.com
Use wrapped Swing components
SwingButton
SwingComboBox
etc
Wrap any Swing component
SwingComponent.wrap(someSwingComponent)
69
Swing
70. www.devoxx.com
Effects are placed on Nodes
Many standard built in
DropShadow
ColorAdjust
GaussianBlur
Glow
Reflection
more...
70
Effects
72. www.devoxx.com
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
No built in Movie playing Control
72
Media
73. www.devoxx.com
Summary
JavaFX 1.0 SDK provides the APIs necessary for building
creative applications
Future updates to JavaFX will come regularly and quickly
1.1 release around Februrary 2009
1.5 release around June 2009
JavaFX 1.0 Production Suite allows you to use
professional graphics in your apps
73