Eduardo Guerra Aplicações Swing a Jato.

Slides:



Advertisements
Apresentações semelhantes
JAVA Orientação a Objetos
Advertisements

UNICEUMA- CENTRO UNIVERSITÁRIO DO MARANHÃO DISCIPLINA- INFORMÁTICA MÉDICA CURSO: MEDICINA Portal da Capes FRANCISCA WANY.
Capítulo 1 Introdução.
Histórico do Java 1990 James Gosling (Sun Microsystems)
Sistema para Criação e Testes de Modelos Formais
Sistemas Operacionais de Rede Professor: João Paulo de Brito Gonçalves
Fundamento de computação gráfica
Walfredo Cirne Threads Walfredo Cirne
Marcelo Tocchetto Tiago Duarte Professor Eduardo Augusto Bezerra
Gerenciando Projetos Ágeis com TRAC/Agilo
Fundamento à Informática
StreamViewer Um analizador gráfico de transport stream code. google
Desenvolvimento de Soluções WEB Eduardo Martins Guerra.
Java Persistence API (JPA) Eduardo Martins Guerra Instituto Tecnológico de Aeronáutica Curso de Pós-Graduação em Engenharia de Software Programação Distribuída.
É um sistema de controle de rota.
Geração Dinâmica de Páginas com JSP Eduardo Martins Guerra Instituto Tecnológico de Aeronáutica Curso de Pós-Graduação em Engenharia de Software Programação.
Roteiro Para o Trabalho do Módulo
Tópicos Avançados em Engenharia de Software Eduardo Martins Guerra Instituto Tecnológico de Aeronáutica Curso de Pós-Graduação em Engenharia de Software.
Estudo comparativo de arquitecturas para aplicações empresariais
Cleverson Sacramento Arquitetura Cross-Plataforma para Autenticação e Autorização de Aplicações Comerciais Projeto Rasea.
Mestrado em Sistemas e Computação Arquitetura Cross-Plataforma para Segurança de Aplicações Comerciais Projeto Rasea Cleverson Sacramento
Mapeamento Objeto-Relacional Eduardo Martins Guerra Instituto Tecnológico de Aeronáutica Curso de Pós-Graduação em Engenharia de Software Programação Distribuída.
Introdução a Programação Orientada a Objetos
Migrando de JDBC para JPA
Programação Orientada a Objetos II
Orientação a Objetos e Java Graduação em Ciência da Computação Paulo Borba © Centro de Informática, UFPE.
Acesso a Base de Dados JDBC Trabalho Realizado por:
Valdemar W. Setzer – Complementação de Algoritmos
GEJAVA IV SCJA – Certificação Sun java associado exame cx
Bruno Florencio Pinheiro Orientador: Renato Fernandes Corrêa
Desenvolvimento de um game para android os
AS PROFISSÕES DA ÁREA DA COMPUTAÇÃO
Introdução à Programação Orientada a Objetos com Java
Ritornello Um Framework para Representação de Conhecimento Musical
` Introdução à Redes Sem Fio Inteligentes Minicurso Semana Acadêmica do Instituto de Informática Porto Alegre, 22 a 24 de maio de 2013 Cristiano Both,
MINI CURSO J2ME Vinícius Maran SEMINÁRIO REGIONAL DE INFORMÁTICA 2008.
PROGRAMAÇÃO - INTRODUÇÃO George Gomes Cabral. DECOMPOSIÇÃO Dividir para conquistar: Paradigma básico para tratamento de grandes problemas. Nossa meta.
Pilhas Profa. Nádia Félix.
Aula 1 - Fundamentos Java SE Instituto Metodista Izabela Hendrix Curso de Tecnologia em Análise e Desenvolvimento de Sistemas Prof. Gilmar Medeiros – Agosto/2009.
R. Episcopal, 1763 – São Carlos-SP (16) www.virgos.com.br VIRGOS TI Arquiteturas JAVA Trilhas para a preparação do profissional.
Aulas 2 e 3 – Java – Prof. Marcelo Heitor # O método main e argumentos na linha de comando; # Fluxo padrão de entrada e saída; # A classe JOptionPane;
Paradigmas da Programação – Semestre 1 – Aula 9 Professor: Eduardo Mantovani )
MESTRADO EM REDES DE COMPUTADORES
1 Programa Interdisciplinar de Pós-graduação em Computação Aplicada (PIPCA) Disciplina de Organização e Arquitetura de Computadores Apresentação da Disciplina.
Desenvolvimento de Frameworks e Componentes Baseados em Metadados Eduardo Guerra.
Universidade Católica de Angola Prática de laboratório Fundamentos de Programação II Frei Joaquim José Hangalo.
Orientação a Objetos e Java Graduação em Ciência da Computação  Centro de Informática, UFPE Alexandre Mota (com material da Qualiti Software Process)
Treinamento AJAX Waelson Negreiros Blog:
BSI – UFRPE uma nova proposta
Mercado de trabalho TIC !?!? Eng. Samuel M. B. Cavalcante
Diagrama de Componentes
TOSCHAS DE POLÍBIO (Programa de Criptografia)
Mestrado em Sistemas e Computação Arquitetura Cross-Plataforma para Segurança de Aplicações Comerciais Projeto Rasea Cleverson Sacramento
Integração de tecnologias de comunicação no ensino de ciências e saúde: construção e aplicação de um modelo de análise de materiais educativos baseados.
Instituto Superior de Engenharia de Lisboa Departamento de Engenharia de Electrónica e Telecomunicações Licenciatura em Engenharia Informática e de Computadores.
PCS - Departamento de Engenharia de Computação e Sistemas Digitais Projeto de Formatura – Turmas 2008 Integrantes: Professor Orientador: Co-orientadores:
Introdução a Programação Orientada a Objetos
Mestrando: Pedro Barbosa Cordeiro Orientador: Bernardo Lula Júnior
5 / julho / 2007CSBC / Workshop de Sistemas Operacionais JSARP – Simulador e Analisador de Redes de Petri Felipe Lino Alexandre Sztajnberg Felipe.
06/05/ Apresentação da disciplina 1 Universidade Federal do Paraná Setor de Ciências Exatas Departamento de Informática ESPECIALIZAÇÃO EM INFORMÁTICA.
Programação em Java Prof. Edvan Chaves.
Orientação a Objetos e Java Graduação em Ciência da Computação Alexandre Mota © Centro de Informática, UFPE.
Orientação a Objetos e Java Graduação em Ciência da Computação  Centro de Informática, UFPE Alexandre Mota
Administrando e iniciando experimentos Como criar um laboratório para ensino de eletrônica com acesso remoto Parte ICBL 2008.
Globalcode – Open4Education 1 EJB3 Interceptors Ricardo Limonta.
Construção de Ferramentas Computacionais de suporte a um Ambiente baseado na Web para apoiar atividades de ensino-aprendizagem INTERFACE ADAPTATIVA PARA.
ESTADO DE MATO GROSSO SECRETARIA DE ESTADO DE EDUCAÇÃO ESCOLA ESTADUAL PROFESSORA EDELI MANTOVANI ENSINO MÉDIO INTEGRADO Á EDUCAÇÃO PROFISSIONAL TÉCNICO.
Introdução à plataforma Java. 2 A tecnologia Java Java: linguagem de programação e plataforma de desenvolvimento Criada pela Sun Microsystems Apoiada.
JFC e Swing Thiago Medeiros Barros 18/08/2011. JFC Java Foundation Classes é um conjunto de componentes e serviços que simplificam o desenvolvimento e.
Desenvolvimento de Software de Qualidade através de Testes Automatizados 09/02/2009 Verão h.
Transcrição da apresentação:

Eduardo Guerra Aplicações Swing a Jato

Apresentação do Palestrante Eduardo Guerra Formado em Engenharia de Computação pelo ITA em Mestre pelo ITA, no curso de Engenharia Eletrônica e Computação, na área de Informática em Faz o curso de Doutorado no ITA com previsão de término para Professor da Graduação do ITA e da pós-graduação ITA-Stefanini. Possui as certificações da Sun: SCJA, SCJP, SCWCD, SCBCD (1.3 e 5.0), SCJWSD, SCMAD e SCEA. Possui experiência como Arquiteto de Software nas plataformas Java SE, Java EE e Java ME. Editor-chefe e autor de vários artigos da revista MundoJava. Administrador dos projeto open-source SwingBean e Esfinge.

Objetivo Apresentar a abordagem do SwingBean para a criação de interfaces gráficas a partir de metadados de objetos, mostrando como ele pode aumentar a produtividade em aplicações desktop.

Dificuldades em Aplicações Swing Geração de Telas por XML Abordagem SwingBean Um Exemplo Simples O que Mais o SwingBean Pode Fazer? Geração de Templates O Futuro do SwingBean Agenda da Apresentação

Aplicações em Swing A API Swing é extremamente flexível e cheia de recursos, permitindo muitas extensões e a construção de interfaces realmente independente de plataforma. public class FixedSizeFilter extends DocumentFilter { public void insertString(...) throws BadLocationException { replace(fb, offset, 0, str, attr); } public void replace(...) throws BadLocationException { int newLength = fb.getDocument().getLength() - length + str.length(); if (newLength <= 30)‏ fb.replace(offset, length, str, attrs); } Porém este mesmo fator torna seu uso complexo e pouco trivial. Veja o código para criar um filtro que limita um campo de texto em 30 caracteres:

Dificuldades do Swing ‏ Pelo fato do Swing ser projetado para ser multiplataforma, os componentes deve ser posicionados de forma relativa e não de forma absoluta como em outras plataformas. Em uma tela com muitos componentes, tratalhar com a posição relativa dos componentes é trabalhoso, principalmente quando uma tela muda (exemplo: acrescentar um novo campo). A flexibilidade dos componentes muitas vezes deixa a execução de simples tarefas de interface complexas e com a necessidade de criação de várias classes. Cada componente gráfico tem suas particularidades, tendo grandes diferenças no tratamento de eventos e na configuração de cada um, o que exige um grande conhecimento de toda API. A lógica de criação da interface acaba ficando misturada com a lógica de apresentação e de negócios, havendo um grande trabalho para recuperar os dados de formulários e tabelas para os objetos de negócio.

Abordagem Clica & Arrasta Mesmo clicando e arrastando a construção de interfaces ainda é trabalhosa, pois cada componente ainda precisa ser posicionado e configurado. Ao se trabalhar diretamente no código, muitas ferramentas deixam de reconhecer a interface e não se consegue mais a edição visual dela. Ainda existe o mesmo trabalho braçal de se ligar as interfaces gráficas nos objetos de negócio.

Geração de Interface por XML Esta abordagem facilita a construção da interface e o posicionamento dos componentes, porém ainda deve ser feita a ligação entre a interface e os objetos de negócio e muitas vezes se perde flexibilidade na construção das telas. Surgiram vários frameworks que descrevem a interface utilizando um documento XML, para facilitar a construção das telas.

Abordagem SwingBean O SwingBean é um framework que fornece componentes de interface menos granulares e que são configurados com metadados de objetos de negócio. O formulário dessa tela é apenas um componente de interface e não vários! O SwingBean não gera telas completas a partir de documentos XML!!!

Metadados do SwingBean <property name='raca' comboList='Yorkshire;Beagle;Basset;Poodle' /> Os metadados do SwingBean são configurados por um documento XML e são bem simples (existem só 3 tipos de entidade). Os tipos de dados são reconhecidos automaticamente e os componentes são escolhidos de acordo. É feito o posicionamento e o redimensionamento nos componentes de forma automática.

Metadados do SwingBean <property name='raca' label='Raça' comboList='Yorkshire;Beagle;Basset;Poodle' colspan='3' /> Outros atributos podem ser utilizados para customizar o comportamento e tamanho de cada componente.

Manipulando o Formulário GenericFieldDescriptor descriptor = XMLDescriptorFactory.getFieldDescriptor(Cachorro.class, "cachorroForm.xml","CachorroForm"); JBeanPanel panel = new JbeanPanel ( Cachorro.class, descriptor); Criando um Formulário panel.setBean(cachorro); Setando um Objeto Cachorro cao = new Cachorro(); panel.populateBean(cao); Recuperando um Objeto panel.cleanForm(); Limpando o Formulário

Tabelas no SwingBean As tabelas também podem ser construídas com base nos metadados A única diferença no XML é que ele só pode ter um elemento Se não for colocado o atributo readOnly=”true”, os campos da tabela são editáveis de acordo com os mesmos componentes que o formulário utiliza.

Manipulando a Tabela TableFieldDescriptor tabledescriptor = XMLDescriptorFactory.getTableFieldDescriptor(Cachorro.class, "cachorroTable.xml","CachorroTable"); BeanTableModel model = new BeanTableModel (tabledescriptor); JBeanTable table = new JBeanTable(model); Criando a Tabela model.addBean(cachorro); model.setBeanList(list); Colocando Objetos Cachorro cao = model.getBeanAt(5); List list = model.getCompleteList(); Recuperando Objetos

O que mais o SwingBean faz? Validação dos dados e adequação dos componentes do formulário baseado nos metadados do XML. Criação de componentes avançados como lista duplas, lista de checkbox e imagens. Adição de eventos em componentes de interface. Possui um pequeno framework para criação de ações de interface. Configuração de combos dependentes em formulários e tabelas.

O que mais o SwingBean faz? Validação de dados em tabelas, colocando a linha não válida em vermelho e mostrando os erros como tooltip. Recuperação de dados inseridos, atualizados e excluídos em tabelas para sincronização com o banco de dados. Filtragem e ordenação de dados em tabelas. Criação de tabelas-árvore, com 3 opções para a regra de formação das árvores. Customização de aparência para todos os componentes.

Geração de Templates O segredo da produtividade com o SwingBean está na criação de templates de telas, visto que o que muda de uma tela para outra normalmente é o que está definido nos metadados em XML. Trocando o XML do formulário e da tabela, poucas modificações precisam ser feitas para que se tenham telas genéricas. As diferenças mais comuns podem ser parametrizadas e as específicas inseridas por herança.

Futuro do Swing ‏ Bean Como o XML do SwingBean é um metadado do objeto e não uma descrição da tela, será implementado o uso de anotações para a geração das telas. Vários comportamentos do SwingBean não podem ser facilmente alterados (como a forma que o label fica em relação ao componente). Aos poucos esses fatores estão sendo flexibilizados, para que se possa extender o framework mais facilmente. Como o SwingBean trabalha com componentes voltados a objetos de domínio, já está em implementação um mecanismo de binding para que se tenha objetos sincronizados com formulários e listas sincronizadas com tabelas. O uso de templates pode ser feito, porém não existe nenhum pronto pelo framework para ser utilizado. Depois de implementado o binding, serão criados vários templates para que se possa agilizar o desenvolvimento.

Frase Final Muitas pessoas preferem o SwingBean do que ferramentas vizuais de edição de tela, devido a facilidade de reuso da lógica de interface.