- Lenguajes dinámicos
- ¿Que es un lenguaje dinámico?
- ¿Por que se necesita un lenguaje dinámico en la plataforma Java?
- Introducción a Groovy
- Historia
- ¿Que es Groovy?
- ¿Por que usar Groovy?
- Integración con Java
- Sintaxis
- Características
- Instalación
- Binarios para diversas plataformas
- HolaMundo.groovy
- GroovyShell
- GroovyConsole
- Compilación y ejecución en la linea de comandos
- groovy & groovyc
- groovyc & java
- El lenguaje Groovy
- Sintaxis
- Declaración de clases
- Scripts
- Comentarios
- Características Anti-ceremonia: estructuras y operadores opcionales
- Azúcar Sintáctica
- Comparación de la sintaxis Groovy y Java
- Imports Automáticos
- Opcionales
- Punto y coma (semicolons)
- Paréntesis
- Valores de retorno (operador return)
- Declaración de tipos
- Manejo de excepciones
- Parámetros
- Operador de sobrecarga
- Referencias seguras, operador de navegación segura
- Evaluación booleana en Groovy (Groovy Truth)
- if
- El operador Elvis ?:
- switch
- Aserciones (operador assert)
- Strings
- Comas simples
- Comas triples
- GStrings
- Los números son objetos
- Collections
- Código como objetos (Closures) y bloques de código
- Uso de Closures
- Closures y limpieza de recursos
- Ciclos
- for
- for con rangos
- times
- upto
- step
- Operador this
- Soporte de características de Java 5
- Autoboxing
- Ciclos for-each
- Enumeraciones- enums
- Argumentos variables- varargs
- Anotaciones
- Importaciones de clases y tipos estaticos- Static Import
- Tipos Genéricos-Generics
- Gotchas
- Return opcional
- Operador == en Groovy
- No Verificación de tipos en tiempo de compilación
- Nuevas palabras reservadas
- Sin soporte a clases internas
- Sin soporte a bloques de código
- El punto y coma es casi opcional
- Sintaxis diferente para declarar y definir arreglos de tipos primitivos
- Integración con Java
- JavaBeans
- Groovy Beans (POGOS)
- Setters y Getters autogenerados
- setProperty & getProperty
- Atributos de solo lectura
- Inicialización en constructores
- Métodos privados
- Llamando código Groovy desde código Java
- Llamando código Java desde código Groovy
- Interfaces en Groovy y Java
- Compilación de código Groovy
- El Joint Compiler
- Compilar con Ant
- Compilar con Maven
- Expresiones regulares
- Tipos de datos dinámicos
- Tipado en Java
- Tipado dinámico contra Tipado débil
- Uso del tipado dinámico
- Tipado opcional
- Tipos en Groovy
- Multimetodos
- GPath
- Operador Spread (*)
- Operador 'use'
- El GDK
- Metaprogramación
- El Meta-Object Protocol
- Introducción
- El objeto Groovy
- Consulta de propiedades y métodos
- Acceso dinámico a objetos
- Intercepción de métodos
- Alternativas
- GroovyInterceptable
- Metaclass
- Inyección de métodos y Síntesis
- Categorias
- ExpandoMetaClass
- Inyección de métodos en instancias especificas
- Síntesis de métodos
- Con 'methodMissing'
- Con ExpandoMetaClass
- Para instancias especificas
- Creación dinámica de clases con Expando
- Delegación de métodos
- Pruebas de Unidad y Mocks
- Soporte para probar código Java y Groovy
- Prueba de Excepciones
- Mocking
- Con sobrecarga
- Con Categorias
- Con ExpandoMetaClass
- Con Expando
- Con Mapas
- Con la librería de Mocks de Groovy (Groovy Mock Library)
|
- Builders
- Que es un Builder
- Arboles de objetos con NodeBuilder
- MarkupBuilder
- HTML
- XML
- AntBuilder
- SwingBuilder
- Builders personalizados
- Acceso a base de datos
- Operaciones básicas
- Configuración de conexiones
- Ejecución de SQL
- El objeto DataSet
- XML
- Lectura de documentos XML
- Parseadores DOM
- Parseador de Groovy
- SAX
- StAX
- Generación de XML
- XmlSlurper
- Lenguajes de Dominio Especifico (DSLs)
- Introducción
- Tipos de DSLs
- Diseño de DSLs
- Closures
- Intercepción de métodos
- Limitaciones con parentesis y como darles la vuelta
- Categorias
- ExpandoMetaClass
- Desarrollo Web
- Introducción a Grails
- ¿Por que Grails?
- Grails como plataforma
- Instalación de Grails
- Artefactos
- Domain Objects
- Controllers
- Mapeos de Url (Url Mappings)
- Vistas
- Servicios
- i18n
- Scaffolding
- GORM
- Fundamentos de persistencia
- Asociaciones
- Eventos
- Consultas
- Finders dinámicos
- Criteria
- Query By Example
- HQL
- Paginación
- Configuración de GORM
- Bitácora
- Dialectos
- Configuración especifica de Hibernate
- Configuración
- Ajax
- Fundamentos
- Poniendo a trabajar a Grails con Ajax
- Proveedores de Ajax en Grails
- Envío de formularios de manera asíncrona
- Manejo de Eventos
- Efectos y animación
- Performance
- WebFlows
- Introducción
- Definición de Flujos
- Definición de estados de inicio
- Definiendo estados de termino
- Alcances de los flujos
- Flujos, almacenamiento y serialización
- Eventos lanzados desde la vista
- Subflujos
- Poniendo a trabajar los flujos
- Actualización de objetos del modelo
- Actualización de la vista
- Data Binding
- Gorm Avanzado
- GORM a profundidad
- Hibernate Session
- Manejo de la sesión de Hibernate y uso del flush
- Transacciones
- Afinación de GORM
- Carga perezosa y agresiva
- Cache
- Estrategias de Herencia
- Estrategias de bloqueo
- Plugins
- Introducción
- Instalación
- Plugins locales
- Mejora tu aplicación
- Gráficas y diagramas
- Búsqueda
- GrailsUI
- Calendarización
- Correo Electrónico
- Mensajería
- Seguridad
- Inyección de SQL y HQL
- Inyección de Groovy
- XSS y URL Scapping
- Ataques de denegación de servicio (DoS)
- Vulnerabilidad de Binding de datos
- Autentificación y Autorización
- JSecurity Plugin
- SpringSecurity Plugin
- Filtros
- WebServices
- REST
- URL Mappings
- Negociación de contenido
- HTTP Header Accept
- Marshalling de objetos
- Unmarshalling
- Seguridad
- Atom y RSS
- SOAP
- Plugin
- Consumo de WebServices
- Despliegue
- Uso de ambientes
- Automatización de tareas con Gant
- Servidores de aplicaciones
- Integración
- Desarrollo de Plugins
- Introducción
- Metadata de los Plugins
- Artefactos
- Ganchos
- Variables
- Beans de Spring
|