Jobsket.com, Grails en un proyecto real

download Jobsket.com, Grails en un proyecto real

If you can't read please download the document

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

Xing

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