Escolar Documentos
Profissional Documentos
Cultura Documentos
desktop em Java:
presente e futuro
Michael Nascimento Santos
Conexo Java 2006
Agenda
11/18/06
Desktop em Java ?
Tecnologias de UI (Swing x SWT x Thinlet)
Produtividade no design
Programando a lgica de interface
Distribuindo a aplicao
Integrando com o backend
Demonstrao prtica
O futuro
Desktop em Java?
Muito se fala de Java na web, no servidor, no
backend...
E o desktop, cad?
11/18/06
Desktop em Java?
Problemas de performance resolvidos nas
verses mais novas
Distribuio resolvida com Java WebStart
Desenho e programao resolvidas mais
recentemente
Exemplos famosos:
Azureus
Imposto de Renda multi-plataforma
Eclipse, IntelliJ IDEA, NetBeans
11/18/06
Tecnologias de UI
Existem algumas opes de APIs para
desenvolvimento desktop. Principais:
Swing
SWT
Thinlet
11/18/06
Swing
Toolkit grfico presente no JDK
Padro, portado para todas as plataformas
Culpado pela m fama da lentido do Java no
desktop por ser emulado
Problemas de performance foram
superados
Swing
Exemplos de aplicaes:
Imposto de renda multiplataforma
NetBeans
IntelliJ IDEA
Ferramentas da Oracle
11/18/06
SWT
Criado com o objetivo de usar os
componentes grficos (widgets) de cada
sistema operacional, bem como sua aparncia
Performance muito boa no Windows, varia
muito em outras plataformas
Modelo de programao estranho
Desenvolvimento mantido pela Eclipse
Foundation
Exemplos:
Eclipse & WSAD
Azureus
11/18/06
Thinlet
Criado com o objetivo de ser leve, abrangente
e rodar em JVMs velhas e/ou limitadas
(browsers e PDAs)
Bastante pequeno (39 kb)
Muito fcil de desenhar telas (xml)
Muuuuuito difcil de estender
Consome realmente poucos recursos
Exemplo:
ThinFeeder
11/18/06
10
Quando usar...
Thinlet
Cliente leve, limitado graficamente
Swing x SWT
Mais uma questo de gosto do que uma
resposta direta...
Swing possui performance homognea e
suportado pela Sun
SWT tende a ser mais rpido no Windows e
ligado aos componentes nativos
Eu prefiro Swing :-D
11/18/06
11
Produtividade no design
Antes, bem, no havia :-)
Tudo feito na mo:
Muito tempo perdido em design
Qualidade do cdigo dependia do
desenvolvedor
Maior flexibilidade
12
11/18/06
13
Matisse x VEP
Matisse:
Mais intuitivo e completo por enquanto
No permite editar o cdigo
14
Programando a lgica de
interface
Estudar a API grfica e lidar com listeners,
models, jeitos diferentes de fazer as mesmas
coisas...
NO!!!!
Voc programa pra web com servlets e
JSPs nus e crus?
15
JGoodies Binding
Permite fazer binding de beans a componentes
grficos
Modelo explcito de programao: voc
define manualmente quais propriedades ligar
aos componentes e como ligar
Limitaes
Requer definio de JavaBean clssico com
PropertyChangeListener e eventos
disparados na mo
Exige que o model dos componentes seja
explicitamente declarado
11/18/06
16
genesis https://genesis.dev.java.net/
Permite fazer binding de qualquer JavaBean
Assume muitas coisas com base nos
componentes
Permite trabalhar com componentes existentes
(e seus models) e acrescentar outros
Possui conceitos/abstraes de mais alto nvel,
como aes, habilitao /desabilitao de
componentes, controle de visibilidade,
chamada condicional de mtodos, erros etc.
Suporta Swing, SWT e Thinlet
Possui documentao em portugus
11/18/06
17
Distribuindo a aplicao
Como instalar e atualizar a aplicao cliente:
Vou ter que ir instalar na mquina de cada
usurio?
E se quiser fazer upgrade da JVM? Ou usar
uma verso especfica?
No tenho como distribuir a aplicao;
muito grande pra banda que eu tenho
H soluo...
11/18/06
18
Java WebStart
Permite distribuir as atualizaes da aplicao
de forma simples
Usurio clica no cone e tudo funciona :-)
Permite distribuir apenas as classes
modificadas atravs do versionamento dos jars
da aplicao
Permite distribuir uma verso especfica de
JVM, se necessrio
Resolve maior limitao na adoo da
tecnologia desktop
11/18/06
19
20
Demonstrao prtica
Tecnologias:
Java 5
Swing (Thinlet, se der)
Matisse (NetBeans)
genesis (binding e integrao com backend)
JBoss (servidor)
Java WebStart
11/18/06
21
Demo
O futuro
Trs grandes esforos de padronizao no
JCP:
JSR-295: Beans Binding
JSR-296: Swing Application Framework
JSR-303: Bean Validation
23
11/18/06
24
11/18/06
25
26
11/18/06
27
Perguntas?
Obrigado!
https://genesis.dev.java.net
http://blog.michaelnascimento.com.br/
Michael Nascimento Santos
Conexo Java 2006