Jheat: gerador de aplicações Mário Sérgio Coelho Marroquim [email_address] Orientador: Erick Baptista Passos
Conteúdo <ul><li>Introdução </li></ul><ul><li>Conceitos básicos </li></ul><ul><li>Motivação </li></ul><ul><li>Geração de a...
Introdução <ul><li>O que é o JHeat? </li></ul><ul><ul><li>Framework para geração de aplicações web em Java </li></ul></ul>...
Introdução <ul><li>Desenvolvimento para web em Java </li></ul><ul><ul><li>JEE: Java Enterprise Edition </li></ul></ul><ul>...
Conceitos básicos <ul><li>Padrão MVC </li></ul><ul><ul><li>Model (Modelo): lógica de negócio </li></ul></ul><ul><ul><li>Vi...
Conceitos básicos View Provê a visualização do modelo Envia as requisições do usuário para o  Controller Composto de Págin...
Conceitos básicos <ul><li>Frameworks e componentes </li></ul><ul><ul><li>Realizam tarefas mais complexas </li></ul></ul><u...
Conceitos básicos <ul><li>Frameworks e componentes </li></ul><ul><ul><li>Distribuição entre as camadas do MVC </li></ul></...
Motivação <ul><li>A arquitetura MVC é boa </li></ul><ul><li>Os frameworks fazem o “serviço sujo” </li></ul><ul><li>Qual é ...
Motivação <ul><li>Solução? </li></ul><ul><ul><li>O código “burocrático” pode ser gerado automaticamente de alguma forma </...
Geração de aplicações <ul><li>Evita código repetido </li></ul><ul><li>Customizável através de templates </li></ul><ul><li>...
Geração de aplicações <ul><li>Estado atual </li></ul><ul><ul><li>MDA </li></ul></ul><ul><ul><ul><li>Uso de modelos similar...
Geração de aplicações <ul><li>Estado atual </li></ul><ul><ul><li>AndroMDA, OptimalJ, OpenXava, Jsenna </li></ul></ul><ul><...
Geração de aplicações <ul><li>Estado atual </li></ul><ul><ul><li>Ruby-on-rails, Streamlined </li></ul></ul><ul><ul><ul><li...
Geração de aplicações <ul><li>Problemas </li></ul><ul><ul><li>Pouca customização </li></ul></ul><ul><ul><li>Pouca funciona...
O JHeat <ul><li>Não gera toda a aplicação </li></ul><ul><li>Totalmente baseado em templates </li></ul><ul><li>Gera o CRUD ...
O JHeat <ul><li>Ciclo de desenvolvimento </li></ul>Configurações das funcionalidades em XML Aplicação final Programação na...
O JHeat <ul><li>Ciclo de desenvolvimento </li></ul><ul><ul><li>Geração incremental </li></ul></ul><ul><ul><ul><li>Filosofi...
Exemplos
Exemplos
Exemplos
Conclusões <ul><li>O JHeat não é um gerador fullstack </li></ul><ul><ul><li>Gera apenas as camadas de controle e visão. O ...
Conclusões <ul><li>Utilizado a mais de 1 ano em projetos como o IAPEP Saúde, Proteção, etc. </li></ul><ul><li>A ferramenta...
Conclusões <ul><li>Pode não ser ideal em alguns casos, mas prova que a geração de código pode elevar os níveis de produtiv...
Upcoming SlideShare
Loading in …5
×

Jheat

2,249 views

Published on

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

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,249
On SlideShare
0
From Embeds
0
Number of Embeds
12
Actions
Shares
0
Downloads
9
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Jheat

  1. 1. Jheat: gerador de aplicações Mário Sérgio Coelho Marroquim [email_address] Orientador: Erick Baptista Passos
  2. 2. Conteúdo <ul><li>Introdução </li></ul><ul><li>Conceitos básicos </li></ul><ul><li>Motivação </li></ul><ul><li>Geração de aplicações </li></ul><ul><li>O JHeat </li></ul><ul><li>Exemplos </li></ul><ul><li>Conclusões </li></ul>
  3. 3. Introdução <ul><li>O que é o JHeat? </li></ul><ul><ul><li>Framework para geração de aplicações web em Java </li></ul></ul><ul><li>Por quê perder tempo fazendo um gerador em vez de criar logo a aplicação final? </li></ul>
  4. 4. Introdução <ul><li>Desenvolvimento para web em Java </li></ul><ul><ul><li>JEE: Java Enterprise Edition </li></ul></ul><ul><ul><li>Utilização de padrões de projeto como o MVC (Model-View-Controller) </li></ul></ul><ul><ul><li>Uso de frameworks para diversas atividades </li></ul></ul><ul><ul><li>Algumas configurações em arquivos XML e properties </li></ul></ul>
  5. 5. Conceitos básicos <ul><li>Padrão MVC </li></ul><ul><ul><li>Model (Modelo): lógica de negócio </li></ul></ul><ul><ul><li>View (Visão): apresentação, interface gráfica </li></ul></ul><ul><ul><li>Controller (Controlador): controle de acesso, validações, controle de fluxo de páginas </li></ul></ul>
  6. 6. 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
  7. 7. Conceitos básicos <ul><li>Frameworks e componentes </li></ul><ul><ul><li>Realizam tarefas mais complexas </li></ul></ul><ul><ul><li>Criam uma camada de abstração que facilita o desenvolvimento </li></ul></ul><ul><ul><li>Representam componentes que podem ser utilizados ou não, de acordo com os requisitos </li></ul></ul>
  8. 8. Conceitos básicos <ul><li>Frameworks e componentes </li></ul><ul><ul><li>Distribuição entre as camadas do MVC </li></ul></ul>Hibernate Toplink Spring MODELO DisplayTags Cewolf Tags Dojo DWR AjaxTags JSF VISÃO Struts 1 Webwork Struts 2 Spring MVC VRaptor CONTROLE
  9. 9. Motivação <ul><li>A arquitetura MVC é boa </li></ul><ul><li>Os frameworks fazem o “serviço sujo” </li></ul><ul><li>Qual é o problema? </li></ul><ul><ul><li>Muito código é repetido a cada novo projeto </li></ul></ul><ul><ul><li>Esse código geralmente envolve: </li></ul></ul><ul><ul><ul><li>Requisitos não funcionais </li></ul></ul></ul><ul><ul><ul><li>Configurações de cada framework </li></ul></ul></ul><ul><ul><li>Quanto mais repetição, mais falhas </li></ul></ul>
  10. 10. Motivação <ul><li>Solução? </li></ul><ul><ul><li>O código “burocrático” pode ser gerado automaticamente de alguma forma </li></ul></ul>
  11. 11. Geração de aplicações <ul><li>Evita código repetido </li></ul><ul><li>Customizável através de templates </li></ul><ul><li>Pode ser: </li></ul><ul><ul><li>Estática </li></ul></ul><ul><ul><li>Dinâmica </li></ul></ul>
  12. 12. Geração de aplicações <ul><li>Estado atual </li></ul><ul><ul><li>MDA </li></ul></ul><ul><ul><ul><li>Uso de modelos similares a UML </li></ul></ul></ul><ul><ul><ul><li>Gera, na maioria das vezes, apenas a camada de modelo </li></ul></ul></ul><ul><ul><ul><li>Ex.: Constructor, iQGen </li></ul></ul></ul>
  13. 13. Geração de aplicações <ul><li>Estado atual </li></ul><ul><ul><li>AndroMDA, OptimalJ, OpenXava, Jsenna </li></ul></ul><ul><ul><ul><li>Geram a aplicação toda </li></ul></ul></ul><ul><ul><ul><li>É difícil customizar a aplicação gerada </li></ul></ul></ul><ul><ul><ul><li>Geram apenas os cadastros básicos, CRUD </li></ul></ul></ul><ul><ul><ul><li>Geração estática </li></ul></ul></ul>
  14. 14. Geração de aplicações <ul><li>Estado atual </li></ul><ul><ul><li>Ruby-on-rails, Streamlined </li></ul></ul><ul><ul><ul><li>Geram partes da aplicação </li></ul></ul></ul><ul><ul><ul><li>Utilizam convenções </li></ul></ul></ul><ul><ul><ul><li>facilidade na customização da aplicação gerada </li></ul></ul></ul><ul><ul><ul><li>Geram apenas o CRUD </li></ul></ul></ul><ul><ul><ul><li>Geração dinâmica </li></ul></ul></ul>
  15. 15. Geração de aplicações <ul><li>Problemas </li></ul><ul><ul><li>Pouca customização </li></ul></ul><ul><ul><li>Pouca funcionalidade gerada </li></ul></ul><ul><ul><li>Aumento da produtividade apenas no início do projeto </li></ul></ul>
  16. 16. O JHeat <ul><li>Não gera toda a aplicação </li></ul><ul><li>Totalmente baseado em templates </li></ul><ul><li>Gera o CRUD </li></ul><ul><li>Gera fluxos complexos </li></ul><ul><li>Gera listagens customizadas e relatórios simples </li></ul><ul><li>O desenvolvedor faz a camada de modelo e pode incluir todas as funcionalidades que quiser </li></ul>
  17. 17. O JHeat <ul><li>Ciclo de desenvolvimento </li></ul>Configurações das funcionalidades em XML Aplicação final Programação na camada de modelo
  18. 18. O JHeat <ul><li>Ciclo de desenvolvimento </li></ul><ul><ul><li>Geração incremental </li></ul></ul><ul><ul><ul><li>Filosofia: nunca alterar o código gerado </li></ul></ul></ul><ul><ul><li>Produtividade constante </li></ul></ul><ul><ul><li>Prototipação rápida </li></ul></ul><ul><ul><li>Sem repetições </li></ul></ul><ul><ul><li>Camada de modelo facilmente testável </li></ul></ul><ul><ul><li>Alta abstração das tecnologias </li></ul></ul>
  19. 19. Exemplos
  20. 20. Exemplos
  21. 21. Exemplos
  22. 22. Conclusões <ul><li>O JHeat não é um gerador fullstack </li></ul><ul><ul><li>Gera apenas as camadas de controle e visão. O modelo fica a cargo do desenvolvedor </li></ul></ul><ul><li>Deveria utilizar mais conveções em vez de configurações em XML </li></ul><ul><li>O uso de templates JSP permite redefinições do layout padrão </li></ul>
  23. 23. Conclusões <ul><li>Utilizado a mais de 1 ano em projetos como o IAPEP Saúde, Proteção, etc. </li></ul><ul><li>A ferramenta aproveita a potencialidade e a estabilidade de frameworks consolidados em Java como Hibernate, DisplayTags, Ajax Tags, etc. </li></ul>
  24. 24. Conclusões <ul><li>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 </li></ul>

×