Você está na página 1de 29

Desenvolvendo aplicaes

desktop em Java:
presente e futuro
Michael Nascimento Santos
Conexo Java 2006

Michael Nascimento Santos


7 anos de experincia com Java
Expert nas JSRs 207, 250, 270 (Java 6), 296
(Swing Application Framework) e 303 (Bean
Validation)
Co-fundador do SouJava
Fundador do genesis (
https://genesis.dev.java.net ) e do ThinNB (
https://thinnb.dev.java.net )
Palestrante no JavaOne, JustJava, Abaporu,
FISL, COMDEX, BrasilOne e Conexo Java
11/18/06

Desenvolvendo aplicaes desktop em Java: presente e futuro

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

Desenvolvendo aplicaes desktop em Java: presente e futuro

Desktop em Java?
Muito se fala de Java na web, no servidor, no
backend...
E o desktop, cad?

Havia razes para isso:


Problemas de performance
Dificuldade de distribuio
Dificuldade de desenho das telas
Dificuldade de programao

11/18/06

Desenvolvendo aplicaes desktop em Java: presente e futuro

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

Desenvolvendo aplicaes desktop em Java: presente e futuro

Tecnologias de UI
Existem algumas opes de APIs para
desenvolvimento desktop. Principais:
Swing
SWT
Thinlet

Cada uma tem as suas caractersticas.


preciso conhecer, comparar e analisar para
escolher corretamente

11/18/06

Desenvolvendo aplicaes desktop em Java: presente e futuro

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

Criticado por no ter aparncia nativa


JGoodies Looks
Melhoras significativas, especialmente no
Java 6
11/18/06

Desenvolvendo aplicaes desktop em Java: presente e futuro

Swing
Exemplos de aplicaes:
Imposto de renda multiplataforma
NetBeans
IntelliJ IDEA
Ferramentas da Oracle

11/18/06

Desenvolvendo aplicaes desktop em Java: presente e futuro

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

Desenvolvendo aplicaes desktop em Java: presente e futuro

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

Desenvolvendo aplicaes desktop em Java: presente e futuro

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

Desenvolvendo aplicaes desktop em Java: presente e futuro

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

Bem-vindo a era das ferramentas de design:


ThinNB
Matisse (NetBeans)
Visual Editor Project (Eclipse)
11/18/06

Desenvolvendo aplicaes desktop em Java: presente e futuro

12

Design com Thinlet


Formato XML feito para ser simples de editar
Existe editor standalone: ThinG (
http://thing.sf.net/ )
Suporte dentro do NetBeans adicionado pelo
ThinNB ( https://thinnb.dev.java.net/ )
Reconhece os arquivos xml
Permite preview dentro da IDE
Integra o ThinG ao NetBeans

11/18/06

Desenvolvendo aplicaes desktop em Java: presente e futuro

13

Matisse x VEP
Matisse:
Mais intuitivo e completo por enquanto
No permite editar o cdigo

Visual Editor Project:


Suporta SWT tambm
Interpreta o cdigo escrito, mas quando
se perde, no h o que fazer...

Mas eu no gosto do cdigo que a ferramenta


gera...
E voc olhava os forms do VB e do Delphi?
11/18/06

Desenvolvendo aplicaes desktop em Java: presente e futuro

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?

Use uma soluo de alto nvel; use um


framework de binding
Ligam sua classe interface grfica de
forma padronizada
S se preocupe com a lgica de interface
11/18/06

Desenvolvendo aplicaes desktop em Java: presente e futuro

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

Desenvolvendo aplicaes desktop em Java: presente e futuro

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

Desenvolvendo aplicaes desktop em Java: presente e futuro

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

Desenvolvendo aplicaes desktop em Java: presente e futuro

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

Desenvolvendo aplicaes desktop em Java: presente e futuro

19

Como integrar com o backend?


Muitas alternativas:
EJB
WebServices
XML/RPC
JBoss Remoting
Spring Remoting
Rodar em modo local!

De preferncia, escolha uma tecnologia que


permita trocar a comunicao com o servidor
sem reescrever o cdigo inteiro
11/18/06

Desenvolvendo aplicaes desktop em Java: presente e futuro

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

Desenvolvendo aplicaes desktop em Java: presente e futuro

21

Demo

O futuro
Trs grandes esforos de padronizao no
JCP:
JSR-295: Beans Binding
JSR-296: Swing Application Framework
JSR-303: Bean Validation

Primeiras JSRs de padronizao alto nvel


para tecnologias desktop
Provavelmente sero integrados no Java 7, se
forem concludas a tempo e o Expert Group da
JSR do Java 7 aprovar
11/18/06

Desenvolvendo aplicaes desktop em Java: presente e futuro

23

JSR-295: Beans Binding


Padroniza ligao entre JavaBeans
Observe que no entre JavaBeans e
interfaces grficas
Provavelmente seguir parte do modelo do
JGoodies Binding
Status atual desconhecido

11/18/06

Desenvolvendo aplicaes desktop em Java: presente e futuro

24

JSR-296: Swing Application


Framework
Padroniza elementos bsicos do
desenvolvimento Swing
Infelizmente, o foco apenas no Swing
Gerenciamento do ciclo de vida da
aplicao
Carregamento de recursos e branding
Conceito de sesso
Suporte a aes (sim, @Action!!!)

11/18/06

Desenvolvendo aplicaes desktop em Java: presente e futuro

25

JSR-303: Bean Validation


Padroniza a definio de validadores, regras
de validao, ciclo de validao e afins
Serve no somente para o desktop, mas
tambm para a web e para a camada de
persistncia
Provavelmente no entregar um mecanismo
de validao end-to-end, i.e., precisar da
implementao de diversos componentes para
que funcione
Inteno ser usada pelos frameworks, e
no substitu-los
11/18/06

Desenvolvendo aplicaes desktop em Java: presente e futuro

26

genesis 3.x e o futuro


Verso 3.0 final (provavelmente) entre
Dezembro/2006 e Janeiro/2007
Voc pode colaborar:
Fazendo download
Fazendo perguntas na lista
Ajudando a definir os requisitos das novas
funcionalidades:
Suporte melhorado a paginao
Edio e ordenao arbitrria em tabelas
Modelo assncrono de aes

11/18/06

Desenvolvendo aplicaes desktop em Java: presente e futuro

27

Perguntas?

Obrigado!
https://genesis.dev.java.net
http://blog.michaelnascimento.com.br/
Michael Nascimento Santos
Conexo Java 2006

Você também pode gostar