Superintendência de Informática - SINFO/UFRN Avaliação de Frameworks de Produtividade para aplicações CRUD Leonardo René Campos Analista de TI
Agenda 1. Introdução 2. Objetivos 3. Critérios de Avaliação 4. Escolha dos Frameworks 5. "Metendo a mão na massa" 6. Considerações finais e próximas etapas 7. Bate-papo para troca de experiências
Introdução Algumas demandas específicas de novos sistemas são apenas um conjunto de CRUDs Número pequeno de usuários Baixa necessidade de manutenção Por que implementar numa arquitetura robusta como a dos SIGs?
Objetivos Investigar soluções alternativas para implementação de sistemas web com foco na agilidade e produtividade do desenvolvedor Fazer uma pesquisa preliminar de tecnologias apropriadas Estabelecer critérios para a tomada de decisão Avaliar pontos favoráveis de cada solução
Frameworks Candidatos Java Não-Java
Critérios de Avaliação Complexidade do Framework Facilidade de Uso Experiência prévia dos colaboradores Rapid application prototyping e pesquisadores da SINFO Throughput/Escalabilidade Manutenção de código/atualizações Curva de aprendizado necessária UX (User Experience), Look and feel Familiaridade das tecnologias/ Documentação & Comunidade ferramentas envolvidas Ecosistema do Framework Testabilidade Segurança
All rights reserved. 2013 ZeroTurnaround OÜ Comparativo Geral
Resultado Geral
Ranking para aplicações do tipo CRUD Legenda: H - Alta importância - Peso 2 M - Média importância - Peso 1 L - Baixa importância - Peso 0
Ranking para aplicações do tipo CRUD
Os escolhidos para a nossa avaliação
www.playframework.com Play Framework
Play Framework Sem reboot: basta alterar o código e dar refresh na página REST: aplicações RESTful por padrão Templates: Sistema eficiente de templates Console: Crie aplicações e faça ajustes no próprio console MVC: Model e Controllers escritos em Java ou Scala, Views em HTML + Scala Sistema de build e gerenciamento de dependências: sbt (http://www.scalasbt.org/)
Play Framework - Kickstart 1. Download do Typesafe Activator (https://typesafe.com/get-started) 2. Descompactar e adicionar ao PATH do sistema 3. Executar $ activator ui, depois acessar http://localhost:8888 OU 4. Executar $ activator new nome-da-aplicacao nome-do-template Ex: $ activator new my-first-app play-java
Play Framework - CRUD Criar formulários e listagens HTML+CSS+Scala Utilizar os conceitos REST para definir as ações de Create, Retrieve, Update, Delete Módulos para scaffolding de CRUD não suportados oficialmente (na versão atual - 2.4.x)
Play Framework - Considerações Bastante complexo Vem com o Netty, sbt, Akka (engine de templates Scala) e vários outros módulos embutidos Enfatiza convenção ao invés de configuração, fazendo muita coisa automaticamente, o que às vezes faz nos sentirmos "meio perdidos" Requer conhecimento das ferramentas/linguagens utilizadas por baixo dos panos para solução de eventuais problemas Incompatibilidade de versões
grails.org Grails Framework
Grails Framework Groovy: linguagem dinâmica que roda na JVM. Bastante similar ao Java. Construído sobre tecnologias Java estabelecidas como Spring e Hibernate Convenções ao invés de Configurações Geração de CRUD s nativa (comando generate-all) Validação a partir das classes de entidade (ou de domínio) Live Reloading: sem reboot do servidor de aplicação Excelente Documentação (http://grails.org/doc/latest/) Gradle utilizado como ferramenta de build/gerenciamento de dependências
Grails Framework - Kickstart GVM (the Groovy environment Manager) $ cd helloworld $ curl -s get.gvmtool.net bash $ grails $ source "$HOME/.gvm/bin/gvminit.sh" grails> create-controller hello $ gvm install grails grails> run-app $ grails -version grails> test-app $ grails create-app helloworld
Grails Framework - CRUD $ grails generate-all $ grails generate-controller $ grails generate-views
Grails Framework - Considerações Grails adiciona uma camada de abstração sobre o Spring MVC e o Hibernate Projeto gerado automaticamente possui alguns templates básicos de views e CSS como ponto de partida Plugins permitem integração com frameworks JavaScript populares como jquery e Bootstrap Excelente documentação, bastante completa e de fácil compreensão Vem com o Tomcat, Gradle e várias outras ferramentas já embutidas
Minha escolha final: Grails Próximas etapas: Desenvolver um projeto-piloto Avaliar eficiência/produtividade