Aplicações Desktop: Swing/SubMacroForms

Transcrição

Aplicações Desktop: Swing/SubMacroForms
Aplicações Desktop:
Swing/SubMacroForms
Carlos Renato Alves Gouveia
Novembro/2008
[email protected]
Carlos Renato Alves Gouveia
• Especialista em Engenharia de Web Sites pela UFMS;
• Professor Universitário na área de Programação Java no
curso de Tecnologia em Análise e Desenvolvimento de
Software da Faculdade Estácio de Sá;
• Analista de TI da Companhia de Gás do Estado de
Mato Grosso do Sul – MSGÁS, onde desenvolve
sistemas usando Java e Oracle, além de administração e
virtualização de servidores Linux;
• Desenvolvedor colaborador do software livre Java
Framework SubMacro.
Tópicos:
•
•
•
•
•
•
•
•
•
Desktop em Java?
Swing x SWT
Produtividade no design
Programando a lógica da interface
Distribuindo a aplicação com Java Web Start
Visão geral do SubMacroForms
CRUD no SubMacroForms
Integração com JasperReports
Integração com outros Frameworks
Desktop em Java?
• Muito se fala de Java na web, no servidor, no backend...
E o desktop, cadê??
• Havia razões para isso:
–
–
–
–
Problemas de performance
Dificuldade de distribuição
Dificuldade de desenho das telas
Dificuldade de programação
Desktop em Java
• Problemas de performance resolvidos nas versões mais
novas
• Distribuição resolvida com Java Web Start
• Desenho e programação resolvidas mais recentemente
• Exemplos:
– Imposto de Renda multiplataforma
– Eclipse, IntelliJ IDEA, NetBeans, WebSphere Studio
Application Developer (WSAD)
– Azureus (client Torrent)
Swing x SWT
• Existem algumas opções de APIs para
desenvolvimento desktop. Principais:
– Swing
– SWT
• Cada uma tem as suas características. É preciso
conhecer, comparar e analisar para escolher
corretamente
Swing
• Toolkit gráfico presente no JDK
• Padrão, portado para todas as plataformas
• Culpado pela má fama da lentidão do Java no
desktop por ser “emulado”
– Problemas de performance foram superados
• Criticado por não ter aparência “nativa”
– Melhoras significativas, especialmente no Java 6
Swing
• Exemplos de aplicações:
–
–
–
–
Imposto de renda multiplataforma
NetBeans
IntelliJ IDEA
Ferramentas da Oracle
SWT
• Criado com o objetivo de usar os componentes
gráficos (widgets) de cada sistema operacional,
bem como sua aparência
• Performance muito boa no Windows, varia muito
em outras plataformas
• Desenvolvimento mantido pela Eclipse
Foundation
• Exemplos:
– Eclipse
– WSAD
– Azureus
Quando usar?
• Mais uma questão de gosto do que uma resposta direta
• Swing possui performance homogênea e é suportado
pela Sun
• SWT tende a ser mais rápido no Windows e é ligado aos
componentes nativos
• Eu prefiro Swing porque é o padrão de Java, enquanto
SWT é um projeto paralelo sem controle da Sun ou da
comunidade Java
Produtividade no design
• Antes não havia
• Tudo feito na mão:
– Muito tempo perdido em design
– Qualidade do código dependia do desenvolvedor
– Maior flexibilidade
• Bem-vindo a era das ferramentas de design:
– Matisse (NetBeans)
– Visual Editor Project (Eclipse)
Matisse x VEP
• Matisse:
– Mais intuitivo e completo por enquanto
– Não permite editar o código
• Visual Editor Project:
– Suporta SWT também
– “Interpreta” o código escrito, mas quando se perde, não
há o que fazer...
• “Mas eu não gosto do código que a ferramenta
gera...”
– E você olhava os forms do VB e do Delphi?
Programando a lógica da interface
• Estudar a API gráfica e lidar com listeners,
models, jeitos diferentes de fazer as mesmas
coisas...
– Você programa pra web com servlets e JSPs nus e crus?
• Use uma solução de alto nível; use um
framework de binding
– Ligam sua classe à interface gráfica de forma
padronizada
– Só se preocupe com a lógica de interface
Distribuindo a aplicação com Java
Web Start
• Como instalar e atualizar a aplicação cliente:
– Vou ter que ir instalar na máquina de cada usuário?
– E se quiser fazer upgrade da JVM? Ou usar uma versão
específica?
– Não tenho como distribuir a aplicação; é muito grande
pra banda que eu tenho
• Há solução...
Distribuindo a aplicação com Java
Web Start
• Permite distribuir as atualizações da aplicação de forma
simples
• Usuário clica no ícone e tudo funciona
• Permite distribuir apenas as classes modificadas através
do versionamento dos jars da aplicação
• Permite distribuir uma versão específica de JVM, se
necessário
• Resolve maior limitação na adoção da tecnologia
desktop
Visando Geral do SubMacroForms
• É um módulo do SubMacro com o objetivo de gerar telas
de cadastro baseadas em templates XML em um
ambiente desktop, utilizando Swing
• É necessário a inclusão de algumas tags no arquivo XML,
responsáveis pela configuração, disposição e
comportamento dos componentes Swing na tela
• É possível utilizar as bibliotecas JasperReports,
JFreeChart, JavaMail, iText, Poi, Jcalendar, etc. para
enriquecer a aplicação
CRUD no SubMacroForms
• Plug-in integrado ao NetBeans com wizard para facilitar
a criação dos arquivos XML para a geração das telas de
cadastro/filtro, além de wizard para criação do projeto
com a estrutura básica de classes e arquivos de
configuração
• Outras IDE’s ainda é necessário utilizar um wizard
externo, o SubMacroGen
• Desenvolvimento de telas padronizadas, extremamente
rápido, inclusive Mestre/Detalhe
• Gerenciamento de Recursos de Usuários/Grupo de
Usuários
CRUD no SubMacroForms
• Gerenciamento de Privilégios de Usuários
• Pouca codificação Java necessária, uma vez que já
existem vários tipos de validações de campos, máscara,
tratamento de “eventos”, etc. nativos no SMF
• Fácil implementação de novos tipos de validações,
máscaras, etc.
• Possibilidade de extender classe JFrameTab (classe que
gera as telas de cadastro) para modificar layout e
comportamento
Plug-in NB: Criando Projeto
Plug-in NB: Conexão JDBC
Plug-in NB: Escolha da Tabela
Plug-in NB: Configuração do Form
Plug-in NB: Configuração dos
Campos
Plug-in NB: Configuração dos
Campos
Tela de Cadastro SMF
Tela de Filtro SMF
Integração com JasperReports
JasperReports: gerador de relatórios
iReports: design visual para o JasperReports
iText: gerador de PDFs
JFreeChart: montagem de gráficos, pode ser usado
diretamente ou integrado com o JasperReports
• Poi: integração com pacotes Office e OpenOffice, para
geração de documentos e planilhas
• Tela de cadastro do SMF com botão de impressão de
relatório Jasper (é necessário informar o nome do
arquivo Jasper nas configurações do XML)
•
•
•
•
Integração com JasperReports
• JasperViewer Personalizado
• Classe JImprimirTab com métodos facilitadores
para a geração do relatório (é necessário
informar apenas o arquivo Jasper e o
JRResultSetDataSource)
Exemplo de Relatório
Exemplo de Relatório com Gráfico
Integração com outros
Frameworks
Envio de email via biblioteca JavaMail
Conexão a sites HTTP com HttpClient
Conexão a servidores de FTP
Processamento de arquivos XML (ex. JDOM)
Criptografia e assinatura digital
Integração com impressoras fiscais (ex. Bematech)
Integração com bancos (geração de boletos, arquivos
remessa e retorno)
• Integração com operadoras de cartões de crédito e
débito
•
•
•
•
•
•
•
Integração com outros
Frameworks
• Hoje, estamos em fase de estudo de outros frameworks
para futuras integrações:
– JavaDesktop (https://javadesktop.dev.java.net)
– Mogwai SwingFramework (http://mogwai.sourceforge.net)
•
Submacro:
– https://submacro.dev.java.net
– http://submacro.intersite.com.br

Documentos relacionados

Desenvolvendo aplicações desktop em Java

Desenvolvendo aplicações desktop em Java • Desenho e programação resolvidas mais recentemente • Exemplos famosos: Azureus Imposto de Renda multi-plataforma Eclipse, IntelliJ IDEA, NetBeans

Leia mais