Java FX

Propaganda
JavaFX
Rafael W. Frasson
Danilo Felicio Jr.
João Otávio Dambrós Dezanet
INE5612 – Desenvolvimento de Sistemas Orientados a Objetos II
O que é JavaFX?

JavaFX é uma plataforma de software
multimídia baseada em java para criação de
RIA - Rich Internet Applications (Internet
Rica).

Internet Rica? Como assim? O que seria?

Primeiramente, explicarei o que é uma
Internet Rica…
Rich Internet Application (RIA)

De modo geral aplicacões RIA unem
a funcionalidade dos softwares com o
extenso alcance e facilidades
econômicas de aplicativos para
internet.

É um conceito inovador no modo de
pensar e desenvolver na web.

Proporciona um novo nível de
experiências para usuários e
desenvolvedores.

A tecnologia RIA fornece um
ambiente dinâmico com capacidade
de manusear aplicativos de forma
bastante interativa.
JavaFX

A Sun Microsystems é responsável pelo
desenvolvimento do JavaFX, baseado na tecnologia
Java e concebido para proporcionar uma maior
interatividade. Já possui uma vasta variedade de
aplicações em dispositivos, incluindo computadores
pessoais, conversores(set-top boxes), dispositivos
móveis e dispositivos que usam a tecnologia Blu-Ray.
JavaFX Script

Criado pelo engenheiro da Sun Chris Oliver, possibilita o
desenvolvimento rápido de interfaces Swing/AWT/Java2D de
forma mais fácil do que hoje.

A idéia da Sun é não só atacar o mercado Desktop, onde o Java
tem ganho certo mercado ultimamente, mas também atacar o
Adobe Flex e o MS Silverlight no mercado de Rich Internet
Applications, as RIAs.
JavaFX Mobile

É um novo sistema operacional
baseado no kernel do Linux e com
uma JVM portátil que pretende levar
o Java ao novo mercado dos
Smartphones.

Seria voltado ao desenvolvimento
fácil de aplicativos bonitos e usáveis
em ambiente móvel.
O que eu crio com JavaFX?

Você pode criar interfaces
com o usuário em JavaFX,
animações, jogos, applets,
e muito mais, com
somente uma linguagem!

Além de JavaFX ser
multiplataforma e portátil
como o Java
JavaFX é outra linguagem?

Sim. A sintaxe de JavaFX
é novidade, é chamada
"declarativa". Quer dizer
que você pode criar
aplicativos sem usar
variáveis, somente
declarando um objeto
dentro do outro.
JavaFX é compatível com Java?

Praticamente 100%.

Se você tem uma aplicação em Java
funcionando, você pode usar as classes com
JavaFX. Esta é uma das maiores vantagens
de JavaFX.
Há algo pronto em JavaFX?

Muita movimentação da
comunidade está sendo
feita. JFXtras, Griffon,
CRUDFx entre outros
são exemplos.
Por que não vejo material sobre
JavaFX tanto quanto em Java?

Parece óbvio, mas é uma dúvida comum,
pois JavaFX promete muito, mas a ausência
de material está no fato de JavaFX ainda
estar na adolescência.
Por que as empresas não adotam
JavaFX de cara?

A linguagem está evoluindo, da versão 1.1
para a 1.2 muitas mudanças aconteceram.

Palavras chaves foram removidas, novas
classes adicionadas entre outros.

A tendência é a evolução continuar, assim, é
normal uma espera das empresas e sites
para aderirem a tecnologia, mas tenha
certeza que todos estão de olho!
Características do JavaFX
É uma linguagem baseada no conceito de perfil
comum para permitir facilmente sua
disseminação através de dispositivos que a
suportam.
Esse conceito permite o desenvolvimento de
aplicações tanto para dispositivos móveis
quanto para desktop.
Características do JavaFX
O modelo “Drag to Install” permite ao usuário
final arrastar aplicações JavaFX de web
browsers para o desktop mantendo o
contexto original mesmo se o browser for
fechado.
A aplicação também pode ser reiniciada
através de um atalho que é
automaticamente criado na área de trabalho.
Características do JavaFX
A linguagem conta com diversos plug-ins que
permitem a integração de imagens vindas de
diversos programas, como Photoshop e
Illustrator.
É gerado um script code que preserva as
camadas e estruturas da imagem, mantendo
a integridade do arquivo original.
Estrutura do JavaFX
A sintaxe declarativa do JavaFX permite
construir certos aplicativos sem usar sequer
uma variável, por exemplo:
Estrutura do JavaFX
Apesar de ser baseada em Java, a sintaxe do
JavaFX traz algumas melhorias, como o uso
de Binding.
O Bind associa uma variável com uma
expressão, que pode ser uma simples
variável ou até uma função:
Estrutura do JavaFX
Com o Bind, a variável y sempre estará
associada à x, e será impossível modificá-la
singularmente. Afetando o valor de x causa
uma alteração direta em y.
O Binding pode ser usado com variáveis,
objetos, funções, expressões e até
sequências.
Estrutura do JavaFX
Juntamente de triggers, o Bind permite um
melhor desenvolvimento de jogos e
animações além de melhorar a visibilidade e
facilitar a leitura do código.
Estrutura do JavaFX

Declaração de variáveis:



Não existem tipos primitivos. Existem “tipos de
valor”, que são objetos derivados da classe Object
“Tipos de valor” não admitem null
Não existe o tipo char em JavaFX Script, apenas
String
Estrutura do JavaFX

Declaração de variáveis: var ou def
var
var
var
var
x // ilegal
x : // Integer Inicializada com zero
x=5
x : Integer = 5
-> def não pode ser inicializado sem valor
Estrutura do JavaFX

Declaração de variáveis: Durantion

Duration é um “tipo de valor” que representa uma
quantidade de tempo
var a: Duration = 10s;
var b: Duration = 250ms;
Estrutura do JavaFX

Sequences

Sequences são o equivalente aos arrays do Java

Não permitem aninhamento
def dias : String[] = [ "Dom", "Seg", "Ter" ]
def dias = [ "Dom", "Seg", "Ter" ]
Estrutura do JavaFX

Functions

Functions são equivalentes aos métodos do Java
function a( param : Tipo, param2 : Tipo ) : tipoDoRetorno { }
Estrutura do JavaFX

Declaração de blocos dentro de uma String
var verdade = true;
println("Sua afirmação é {if(verdade) 'verdadeira' else
'false'}")
Estrutura do JavaFX

Classes JavaFX

Não tem construtores
class Pessoa {
var nome : String;
var sobrenome : String;
function nomeCompleto () {
"{nome}{sobrenome}"
}
}
Estrutura do JavaFX

Instanciando objetos
def craque = Pessoa {
nome: "AAA"
sobrenome: "BBB"
}
def Craque = new Pessoa();
craque.nome = "AAA"
craque.sobrenome = "BBB"
JavaFX x Java

Hello World em Java:
JavaFX x Java

Hello World em JavaFX Script:
JavaFX

Criando a janela da aplicação:
Stage {
title: "Hello World JavaFX"
...
width:400 height:100
}
A classe Stage é necessária para desenhar uma janela;
Stage é um container independente;
As palavras title, visible, width, height, etc, são
chamadas de variáveis de instância.
JavaFX

Configurando o objeto Scene:
scene: Scene {
content: Text {
content: "Hello World!"
font: Font { size: 30 }
layoutX: 114
layoutY: 45
}
O objeto Scene é responsável por exibir o conteúdo
gráfico da aplicação, o que inclui objetos de texto,
linhas, círculos, botões e etc;
É um container para o SceneGraph.
JavaFX

O objeto scene possui uma variável chamada content
que é utilizada para manter os nós da aplicação;

Existem vários tipos de nós, como objetos gráficos,
textos e componentes de GUI, objetos de mídia, etc;

Cada nó pode ser transformado e animado;

É possível aplicar diferentes tipos de efeitos a cada nó;

Um nó do tipo Group é um Sequence de nós filhos.
Qualquer efeito ou transformação aplicada ao Group
será aplicada a todos os nós filhos.
JavaFX
content: [
Rectangle {
...propriedades...
},
Circle {
...propriedades...
},
Text {
...propriedades...
}
]
Stage
Scene
Circle
Rectangle
TEXT
JavaFX
Parte da API JavaFX
Fontes

http://download.oracle.com/javafx/index.html

http://openjfx.java.sun.com/current-build/doc/reference/JavaFXReference.html

http://download.oracle.com/docs/cd/E17802_01/javafx/javafx/1/docs/api/

http://www.javafx.com/

pt.wikipedia.org/wiki/JavaFX

http://javafree.uol.com.br/artigo/874587/Bind-em-JavaFX.html
Download