Upload
sergio-neves-sacenti
View
24
Download
3
Embed Size (px)
Citation preview
GRAILS
“Nada melhor que um programador preguiçoso. Você usa
coisas que já estão prontas e tudo fica mais simples.”
JEE
1999
Struts
JSP WidgetOpenXavaTurbine
JSF
SombreroSwingWeb
VRaptorCocoonCalyxoWicket
TapestryWebOnSwing
Maverick
Desenvolvimento Java Web
JEE
1999
Desenvolvimento Java Web
Gerenciar Complexidade
Convenções
Full Stack
Scaffolding
Extensibilidade
Migrar tudo para Rails?
Experiência Flexibilidade
Convenções
Full Stack
Scaffolding
Extensibilidade
“Quando você programa em Groovy, de várias formas você está escrevendo
um tipo especial de Java.”- Dierk König
Groovy in Action
Padrão Java OficialJSR 241
Mas o que é porque Groovy?
Linguagem OO, ágil e dinâmica
Poderes adicionais inspirados em linguagens como Python, Ruby e Smalltalk
Integra com todas as classes e bibliotecas Java existentes
Curva de aprendizagem quase zero para desenvolvedores Java
JVM Languages
HelloWorld.java
HelloWorld.groovy
Curva de aprendizagem quase zero para desenvolvedores Java
HelloWorld.groovy
✓ Tipos dinâmicos usando a palavra-chave def ✓ Tudo em Groovy é público, a menos que definido ao contrário ✓ Getters e setters automáticas✓ Ponto e vírgula no fim-de-linha são opcionais ✓ Interpolação variável através gStrings ✓ Palavra-chave return é opcional
Collections.groovy
GString.groovy
SpecialOperators.groovy
Truth.groovy
MetaProgramming.groovy
Builders.groovy
DuckyType.groovy
ReadFile.java
ReadFile.groovy
Socket.groovy
Convenções
Full Stack
Scaffolding
Extensibilidade
Full Stack
Command Linegrails create-app book
grails create-domain-class br.com.book
grails create-controller br.com.book
grails generate-all br.com.book
grails install plugin spring-security-core
grails run-app
grails test-app
grails war
grails console
... Custom commands (scripts) podem ser adicionado ao projeto
Estrutura do Projeto
Configuração por Ambiente
GORM (Grails Object Relacional Mapping)
Domain Classes
Domain Classes
Domain Classes
Basic Crud methods
Querying
Dynamic Finders
Criteria e HQL
Controller
Controllers
http://localhost:8080/app/some/action
Controllers
Controllers
Controllers
Controllers
XML Responses
Content Negotiation
View
Views
Views e Taglibs
Core Taglibs
Custom Taglibs
Url Mappings
Convenção padrão: /controller/action/id
Filters
Services
Plugins
Plugins
GRAILS