Jheat

Preview:

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 :(

Citation preview

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

Mário Sérgio Coelho Marroquim

mariomarroquim@gmail.comOrientador: Erick Baptista Passos

ConteúdoConteúdo

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

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?

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

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

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

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

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

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

MotivaçãoMotivação

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

automaticamente de alguma forma

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

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

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

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

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

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

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

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

ExemplosExemplos

ExemplosExemplos

ExemplosExemplos

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

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.

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