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