Aécio Costa
Abstração que une códigos comuns entre vários projetos de software provendo uma funcionalidade genérica. Framework é um conjunto de classes que colaboram para realizar uma responsabilidade para um domínio de um subsistema da aplicação. Fayad e Schmidt
Características Um framework captura a funcionalidade comum a várias aplicações. Um framework deve ser reusável. Para ser reusável, deve primeiro ser usável Bem documentado Fácil de usar Deve ser extensível O framework contém funcionalidade abstrata (sem implementação) que deve ser completada; Deve ser eficiente Devido a seu uso em muitas situações, algumas das quais poderão necessitar de eficiência; Deve ser completo Para endereçar o domínio do problema pretendido; Deve ser de uso seguro O desenvolvedor de aplicações não pode destruir o framework.
Grails É um framework para aplicações Web para JVM. OpenSource Full stack Scaffolding e Templating
Para o Grails: Antigas Tecnologias
Utiliza linguagem Groovy; Provê produtividade; Rápido, Dinâmico e Robusto; Programação por convenção; MVC nativo; Scaffolding; Plugins.
MVC É um modelo de arquitetura de software que separa uma aplicação em camadas de responsabilidade. O Model representa os dados, a View toda a apresentação e o Controller as regras de negócio que são colocadas na aplicação.
Quem usa Grails?
Scaffolding Gera Views Gera Controllers Tudo Automagicamente!
Linguagem Groovy Inspirada no Python, Ruby...; Linguagem Dinâmica; Plataforma Java; Especificação do JCP (JSR 241); Copy/Paste Compatibilty.
Linguagem Groovy O que Groovy tem de diferente de Java? Tipagem dinâmica; Recurso: attribute accessor; Closure; Métodos Dinâmicos; e mais...
Linguagem Groovy Tipagem dinâmica def name = João def names = [ João, José, Geraldo ]
Linguagem Groovy Atribute accessor class User{ } String nome Integer idade def user = new User(name: João, age: 23) user.nome = Pedro
Groovy veio acabar com a Regra dos 80/20 (Princípio de Pareto)
Exemplo de como a Linguagem Groovy é produtiva:
import java.util.arraylist; import java.util.list; class Seletor { private List selectbooksnamelessthan(list booknames, int length) { List resultado = new ArrayList(); for (int i = 0; i < booknames.size(); i++) { String candidate = (String) booknames.get(i); if (candidate.length() < length) { resultado.add(candidate); } } return resultado; } Seletor.java public static void main(string[] args) { List books = new ArrayList(); books.add("harry Potter"); books.add("a Vila"); books.add( O Exorcista"); Seletor s = new Seletor(); List selected = s.selectbooksnamelessthan(books, 10); System.out.println("Total Selecionados: " + selecionados.size()); for (int i = 0; i < selected.size(); i++) { String sel = (String) selecionados.get(i); System.out.println(sel); } } }
def books = ["Harry Potter, "A Vila, O Exorcista ] def selected = books. findall { it.size() <= 5} println "Total ${selecionados.size()} selected.each { sel -> } println sel Seletor.groovy
Cenário Atual Web Persistência Validações Logs Visualização Controladores Controle Transacional Injeção de Dependências Ajax Redirecionador de URL s Configuração por ambiente Internacionalização
Pré Requisito JDK Instalado Grails (www.grails.org - Baixar o Grails e descompactar) Criar uma variável de ambiente JAVA_HOME Criar uma variável de ambiente GRAILS_HOME Colocar no Path
Grails
Grails Baixar o ZIP Descompactar em uma pasta
Criar uma variável de ambiente JAVA_HOME Painel de Controle > Sistema > Configurações Avançadas > Variáveis de Ambiente
Criar uma variável de ambiente GRAILS_HOME Apontando para o lugar onde foi descompactado.
Editando a Variável Path %GRAILS_HOME%\bin; %JAVA_HOME%\bin;
Testanto as instalações cmd.exe javac version grails version
No Prompt de Comando (cmd) criamos uma aplicação. grails create-app helloworld
grails create-controller hello E após a criação do Controller editar o Arquivo HelloController.groovy class HelloController { def index() { render "Bem Vindo!" }}
Executando a aplicação: grails run-app
Aplicação Criada (Estrutura)
Em sua aplicação a pasta helloworld\grails-app\views contém todas as páginas HTML - Cuidado ao Editar pois existirão tags do Grails que podem fazer sua aplicação parar de funcionar, Exemplos de Tag s Grails: <g:meta name="app.version"/> ${org.codehaus.groovy.runtime.invokerhelper.getversion()} <g:each var="c" in="${grailsapplication.controllerclasses.sort { it.fullname } }"> </g:each> <li class="controller"><g:link controller="${c.logicalpropertyname}">${c.fullname}</g:link></li>
Voltando à Engenharia de Software:
Criando uma aplicação para Cadastro de Visitantes grails create-app visitantes grails create-domain-class Visitante
Editar o arquivo visitante\grails-app\domain\visitante.groovy package visitante class Visitante { String nome String endereco Date datanasc }
Gerando a aplicação a partir do domínio Visitante Scaffolding INSERT, UPDATE, DELETE, SEARCH grails generate-all Pacote com a classe deve ser informado visitantes.visitante
Projeto Unidade II Construção de um Software Utilização do Grails Relacionamentos Validações Mínimo de 5 Classes Customizações no HTML Apresentação Conteúdo Perguntas Nota Individual