Jobsket.com, Grails en un proyecto real
-
Upload
jobsket -
Category
Technology
-
view
3.611 -
download
6
Transcript of Jobsket.com, Grails en un proyecto real
Jobsket.com
Grails en un proyecto real
Co-fundador de Jobsket
Desarrollador Java, Grails, PHP, Rails...
Google Summer of Code 2008 en Grails para The Codehaus
Ms en: www.jobsket.es/cv/dani :)
Y quin es este to?
ndice
Qu es Jobsket?
Y Grails?
La magia de Groovy
Grails en Jobsket
Qu es Jobsket?
Demo
http://www.youtube.com/watch?v=ipw1f54AaDQ
Algunos miembros del sector de empleo
Infojobs
Trovit
Monster
Infoempleo
Redtrabaj@
...
Team!!
Equipo!
Los 3 fundadores somos tcnicos
Martn Prez(Dubln A Corua): Superprofesional del software con +10 aos trabajando con Java. Termin como senior architect/contractor en Irlanda.
Jordi Monn(Barcelona Lleida): Hacha con Spring y profundo conocedor de Lucene. Ex-JavaConGanas
Grails
Framework web full stack para la plataforma Java
Escrito en Java y Groovy
Basado en conocidos proyectos Java: Spring, Hibernate, Tomcat, Sitemesh, Log4j, HSQLDB...
Inspirado en Ruby on Rails
Open Source: Licencia Apache 2
Mantenido principalmente por SpringSource(divisin de VMWare)
Qu es Grails?
Don't repeat yourself
El mejor cdigo es el que no existe
- Autor: ?
Convention over Configuration
http://geekandpoke.typepad.com/geekandpoke/2008/06/simply-explaine.html
Artefactos de una app Grails
Clases de dominio(GORM)
Servicios
Controladores
Vistas
Libreras de tags
Ms caractarsticas interesantes
Scaffolding esttico y dinmico
I18n
Framework de testing
Soporte REST
Cientos de plugins
Ms proyectos Grails en Espaa
ringio.com
bkool.com
sellomovistar.es
Ayuntamiento Vitoria(blogs.vitoria-gasteiz.org/ti)
cuestamenos.com
eljuegodelmundial.com(1 mill pginas, hasta 40.000 visitas en media hora)
SAYC (Sistema de acceso y control de usuarios para Yell Publicidad)
ticketbis.com
Comunidad hispana
groovy.org.es
grails.org.mx
observatoriodegrails.com
groups.google.es/group/grailsencastellano
grhispano.com? :P
Groovy
Caractersticas de Groovy
Lenguaje dinmico para la JVM
Basado en las fortalezas de Java y en caractersticas de Ruby, Python y Smalltalk
Menos ceremonosio y ms expresivo que Java
Curva de aprendizaje suave para programadores Java
No existen tipos primitivos
Compilado o script
La magia de Groovy
Imports por defecto(java.util.*, java.io.*, java.net.*, groovy.util.*, BigDecimal, BigInteger)
Compilacin cruzada(joint compiling)
El GDK extiende el JDK
Unit testing y mocking out-of-the-box
Expandos y MOP para aadir o modificar mtodos y atributos en tiempo de ejecucin
Groovy es ms que Grails
Griffon: el grails para el escritorio
Easyb: framework de testing BDD
Gaelyk: framework web para AppEngine
Gant: DSL de Ant
Spock: (otro)framework de testing BDD
Gmock: framework de mocking
Play!: slo en su sistema de templates
...
Grails en Jobsket
Arquitectura
Cifras
Grails 1.2.2
3 instancias de Tomcat
3 bases de datos MySQL
70000 lneas de cdigo
Aproximadamente el 70% es Java
20 crawling threads
Y cmo es ese 70-30?
Utilizamos Groovy en:Controllers
TagLibs
Tests
Filters
Objetivo: Maximizar la productividad con nuestro conocimiento en Java + Plataforma Grails
http://geekandpoke.typepad.com/geekandpoke/2008/04/clash-of-cultur.html
Herramientas Java que usamos
Spring Framework
Hibernate
Compass
Hudson
Ms libreras: Lucene, Commons, POI, JasperReports/iReport, FOP...
Spring Framework
Base de la infraestructura de Grails y es natural utilizarlo
Los servicios de Grails estn disponibles en el contexto por convencin
resources.xml: Configuracin tpica con XML
Annotations de Spring
resources.groovy: DSL en groovy
Hibernate
Por estar debajo de GORM ya est integrado
Miedo a que Grails no nos sirviera
Mltiples DataSourcesGORM en una db
HibernateDaoSupport para la otra
Compass
Framework que facilita la integracin de bsquedas full-test con Lucene
No nos serva el plugin Searchable
Integracin como en cualquier proyecto Java:Configuracin XML
Anotacin @Searchable
Hudson
Servidor de Integracin Continua
Existe un plugin para Grails
Sacamos partido a lo clsico
Modificamos controllers, taglibs, filtros y gsp's sin necesidad de reiniciar el servidor local
Plugins de terceros
Los taglibs para reutilizar lgica de presentacin
Tests de integracin muy sencillos de implementar
Hemos dividido Jobsket en plugins
Plugins que utilizamos
Image Tools
Avatar
Webtest
Grails UI(componentes de Yahoo UI)
Spring WebFlow
Reutilizando elementos de presentacin con Taglibs
Mucho ms simple que con JSP(closure en una clase groovy)
Repetimos menos cdigo en los controllers y es ms potente que templates GSP
Los taglibs son testeables
Reutilizables en controllers y otros tags
Probando un controller
class JobOfferControllerTests extends GroovyTestCase {
def jobOffersService void testCreateJobOffer() { def controller = new JobOffersController() controller.jobOffersService = jobOffersService controller.params.title = "Groovy Ninja" controller.params.city = "Santa Cruz" controller.save() assertEquals "/joboffer/index", controller.response.redirectedUrl
def jobOffers = jobOffersService.findAllJobOffers() assertEquals 1, jobOffers.size() assertEquals "Santa Cruz", jobOffers[0].city assertEquals "Groovy Ninja", jobOffers[0].title } }
Aprovechando el dinamismo de Groovy
Aadir mtodos a clases que no son nuestrashello.appendIfNotNull(null)
Hacer stubbing de nuestras clases en los testsmailService.metaClass.sendMail = { u, m-> .... }
Modificar taglibs estndar de Grails
GRACIAS!! ;)Preguntas?
http://www.slideshare.net/jobsketEmail: [email protected]: www.danilat.com/weblogTwitter: @dani_latorre
Se acab