Jheat: gerador de aplicações Mário Sérgio Coelho Marroquim [email_address] Orientador: Erick Baptista Passos
Conteúdo Introdução Conceitos básicos Motivação Geração de aplicações O JHeat Exemplos Conclusões
Introduçã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çã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á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ásicos View Provê a visualização do modelo Envia as requisições do usuário para o  Controller Composto de Páginas  JSP ,  arquivos CSS ,  JavaScript , etc Controller Define o comportamento da aplicação Processa e valida as requisições do usuário Model Contém a lógica de negócio e controla a conexão com o banco de dados
Conceitos 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ásicos Frameworks e componentes Distribuição entre as camadas do MVC Hibernate Toplink Spring MODELO DisplayTags Cewolf Tags Dojo DWR AjaxTags JSF VISÃO Struts 1 Webwork Struts 2 Spring MVC VRaptor CONTROLE
Motivaçã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ção Solução? O código “burocrático” pode ser gerado automaticamente de alguma forma
Geração de aplicações Evita código repetido Customizável através de templates Pode ser: Estática Dinâmica
Geraçã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çõ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çõ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ções Problemas Pouca customização Pouca funcionalidade gerada Aumento da produtividade apenas no início do projeto
O 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 JHeat Ciclo de desenvolvimento Configurações das funcionalidades em XML Aplicação final Programação na camada de modelo
O 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
Exemplos
Exemplos
Exemplos
Conclusõ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õ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õ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

Jheat

  • 1.
    Jheat: gerador deaplicações Mário Sérgio Coelho Marroquim [email_address] Orientador: Erick Baptista Passos
  • 2.
    Conteúdo Introdução Conceitosbásicos Motivação Geração de aplicações O JHeat Exemplos Conclusões
  • 3.
    Introduçã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?
  • 4.
    Introdução Desenvolvimento paraweb 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
  • 5.
    Conceitos básicos PadrãoMVC 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
  • 6.
    Conceitos básicos ViewProvê a visualização do modelo Envia as requisições do usuário para o Controller Composto de Páginas JSP , arquivos CSS , JavaScript , etc Controller Define o comportamento da aplicação Processa e valida as requisições do usuário Model Contém a lógica de negócio e controla a conexão com o banco de dados
  • 7.
    Conceitos básicos Frameworkse 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
  • 8.
    Conceitos básicos Frameworkse componentes Distribuição entre as camadas do MVC Hibernate Toplink Spring MODELO DisplayTags Cewolf Tags Dojo DWR AjaxTags JSF VISÃO Struts 1 Webwork Struts 2 Spring MVC VRaptor CONTROLE
  • 9.
    Motivação A arquiteturaMVC é 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
  • 10.
    Motivação Solução? Ocódigo “burocrático” pode ser gerado automaticamente de alguma forma
  • 11.
    Geração de aplicaçõesEvita código repetido Customizável através de templates Pode ser: Estática Dinâmica
  • 12.
    Geração de aplicaçõesEstado atual MDA Uso de modelos similares a UML Gera, na maioria das vezes, apenas a camada de modelo Ex.: Constructor, iQGen
  • 13.
    Geração de aplicaçõesEstado 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
  • 14.
    Geração de aplicaçõesEstado 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
  • 15.
    Geração de aplicaçõesProblemas Pouca customização Pouca funcionalidade gerada Aumento da produtividade apenas no início do projeto
  • 16.
    O JHeat Nãogera 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
  • 17.
    O JHeat Ciclode desenvolvimento Configurações das funcionalidades em XML Aplicação final Programação na camada de modelo
  • 18.
    O JHeat Ciclode 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
  • 19.
  • 20.
  • 21.
  • 22.
    Conclusões O JHeatnã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
  • 23.
    Conclusões Utilizado amais 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.
  • 24.
    Conclusões Pode nãoser 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