Jheat

24
Jheat: gerador de Jheat: gerador de aplicações aplicações Mário Sérgio Coelho Marroquim [email protected] Orientador: Erick Baptista Passos

description

Apresentação da minha TCC, sobre um gerador de aplicações web Java que ajudei a desenvolver em 2007. NOTA: alguns emails e links podem não mais existir :(

Transcript of Jheat

Page 1: Jheat

Jheat: gerador de aplicaçõesJheat: gerador de aplicações

Mário Sérgio Coelho Marroquim

[email protected]: Erick Baptista Passos

Page 2: Jheat

ConteúdoConteúdo

Introdução Conceitos básicos Motivação Geração de aplicações O JHeat Exemplos Conclusões

Page 3: Jheat

IntroduçãoIntrodução

O que é o JHeat? Framework para geração de

aplicações web em Java

Por quê perder tempo fazendo um gerador em vez de criar logo a aplicação final?

Page 4: Jheat

IntroduçãoIntrodução

Desenvolvimento para web em Java JEE: Java Enterprise Edition Utilização de padrões de projeto como o

MVC (Model-View-Controller) Uso de frameworks para diversas

atividades Algumas configurações em arquivos XML

e properties

Page 5: Jheat

Conceitos básicosConceitos básicos

Padrão MVC Model (Modelo): lógica de negócio View (Visão): apresentação, interface

gráfica Controller (Controlador): controle de

acesso, validações, controle de fluxo de páginas

Page 6: Jheat

Conceitos básicosConceitos básicos

ViewProvê a visualização do modeloEnvia as requisições do usuário

para o ControllerComposto de Páginas JSP,

arquivos CSS, JavaScript, etc

ViewProvê a visualização do modeloEnvia as requisições do usuário

para o ControllerComposto de Páginas JSP,

arquivos CSS, JavaScript, etc

ControllerDefine o comportamento da

aplicaçãoProcessa e valida as requisições

do usuário

ControllerDefine o comportamento da

aplicaçãoProcessa e valida as requisições

do usuário

ModelContém a lógica de negócio e

controla a conexão com o banco de dados

ModelContém a lógica de negócio e

controla a conexão com o banco de dados

Page 7: Jheat

Conceitos básicosConceitos básicos

Frameworks e componentes Realizam tarefas mais complexas Criam uma camada de abstração que

facilita o desenvolvimento Representam componentes que podem

ser utilizados ou não, de acordo com os requisitos

Page 8: Jheat

Conceitos básicosConceitos básicos

HibernateToplinkSpring

HibernateToplinkSpring

MODELO

DisplayTagsCewolf Tags

DojoDWR

AjaxTagsJSF

DisplayTagsCewolf Tags

DojoDWR

AjaxTagsJSF

VISÃO

Struts 1WebworkStruts 2

Spring MVCVRaptor

Struts 1WebworkStruts 2

Spring MVCVRaptor

CONTROLE

Frameworks e componentes Distribuição entre as camadas do MVC

Page 9: Jheat

MotivaçãoMotivação

A arquitetura MVC é boa Os frameworks fazem o “serviço sujo” Qual é o problema?

Muito código é repetido a cada novo projeto

Esse código geralmente envolve: Requisitos não funcionais Configurações de cada framework

Quanto mais repetição, mais falhas

Page 10: Jheat

MotivaçãoMotivação

Solução? O código “burocrático” pode ser gerado

automaticamente de alguma forma

Page 11: Jheat

Geração de aplicaçõesGeração de aplicações

Evita código repetido Customizável através de templates Pode ser:

Estática Dinâmica

Page 12: Jheat

Geração de aplicaçõesGeração de aplicações

Estado atual MDA

Uso de modelos similares a UML Gera, na maioria das vezes, apenas a

camada de modelo Ex.: Constructor, iQGen

Page 13: Jheat

Geração de aplicaçõesGeração de aplicações

Estado atual AndroMDA, OptimalJ, OpenXava, Jsenna

Geram a aplicação toda É difícil customizar a aplicação gerada Geram apenas os cadastros básicos, CRUD Geração estática

Page 14: Jheat

Geração de aplicaçõesGeração de aplicações

Estado atual Ruby-on-rails, Streamlined

Geram partes da aplicação Utilizam convenções facilidade na customização da aplicação

gerada Geram apenas o CRUD Geração dinâmica

Page 15: Jheat

Geração de aplicaçõesGeração de aplicações

Problemas Pouca customização Pouca funcionalidade gerada Aumento da produtividade apenas no

início do projeto

Page 16: Jheat

O JHeatO JHeat

Não gera toda a aplicação Totalmente baseado em templates Gera o CRUD Gera fluxos complexos Gera listagens customizadas e

relatórios simples O desenvolvedor faz a camada de

modelo e pode incluir todas as funcionalidades que quiser

Page 17: Jheat

O JHeatO JHeat

Ciclo de desenvolvimento

Configurações das funcionalidades em

XML

Configurações das funcionalidades em

XML

Aplicação finalAplicação final

Programação na camada de modeloProgramação na

camada de modelo

Page 18: Jheat

O JHeatO JHeat

Ciclo de desenvolvimento Geração incremental

Filosofia: nunca alterar o código gerado Produtividade constante Prototipação rápida Sem repetições Camada de modelo facilmente testável Alta abstração das tecnologias

Page 19: Jheat

ExemplosExemplos

Page 20: Jheat

ExemplosExemplos

Page 21: Jheat

ExemplosExemplos

Page 22: Jheat

ConclusõesConclusões

O JHeat não é um gerador fullstack Gera apenas as camadas de controle e

visão. O modelo fica a cargo do desenvolvedor

Deveria utilizar mais conveções em vez de configurações em XML

O uso de templates JSP permite redefinições do layout padrão

Page 23: Jheat

ConclusõesConclusões

Utilizado a mais de 1 ano em projetos como o IAPEP Saúde, Proteção, etc.

A ferramenta aproveita a potencialidade e a estabilidade de frameworks consolidados em Java como Hibernate, DisplayTags, Ajax Tags, etc.

Page 24: Jheat

ConclusõesConclusões

Pode não ser ideal em alguns casos, mas prova que a geração de código pode elevar os níveis de produtividade e qualidade a patamares muito mais altos