Diferencia entre revisiones de «Grails»

De Wikipedia, la enciclopedia libre
Contenido eliminado Contenido añadido
Stoleman (discusión · contribs.)
Stoleman (discusión · contribs.)
Sin resumen de edición
Línea 239: Línea 239:
El mecanismo de persistencia en GORM se implementa mediente [[Hibernate (Java)|Hibernate]]. Las bases de datos heredadas pueden ser mapeadas a clases GORM utilizando lo ficheros de [http://grails.codehaus.org/Hibernate+Integration Mapeo Hibernate].
El mecanismo de persistencia en GORM se implementa mediente [[Hibernate (Java)|Hibernate]]. Las bases de datos heredadas pueden ser mapeadas a clases GORM utilizando lo ficheros de [http://grails.codehaus.org/Hibernate+Integration Mapeo Hibernate].


== Creando un proyecto Grails ==

Un proyecto Grails se crea así:

* Sigue las instrucciones de descarga e instalación del sitio web de Grails <ref>[http://grails.codehaus.org/Installation Grails Installation Steps]</ref>.
* Abre una pantalla de terminal:

grails create-app

Este comando recibe el nombre del proyecto como parámetro y crea el directorio del proyecto con el mismo nombre. Hay que entrar en dicho directorio para poder ejecutar otros comandos dentro del proyecto.

Ejecutando el comando <code>grails run-app</code> puedes probar la aplicación en la URL <code><nowiki>http://localhost:8080/</nowiki></code>

== ¿Para quién es? ==

Los posibles usuarios de Grails son :

* Desarrolladores Java qeu buscan un entorno de desarrollo integrado para crear aplicaciones web.
* Desarrolladores sin experiencia en Java buscando un entorno de alta productividad para desarrollar aplicaciones web.

== Integración con la plataforma Java ==

Grails está construido sobre la plataforma Java, con lo que es muy fácil integrarlo con librerias Java, framework y código existente. La mejor característica que Grails ofrece en este ámbito es una integración transparente con clases mapeada mediante el framework [[Hibernate (Java)|Hibernate]] [[Object-relational mapping|ORM]]. Esto significa que aplicaciones existentes que utilicen Hibernate pueden utilizar Grails sin recompilar el código o reconfigurar las clases Hibernate, aprovechando los métodos de persistencia que se mencionan anteriormente. [http://grails.codehaus.org/Hibernate+Integration]

Una consecuencia es que se puede utilizar scaffolding con las clases Java mapeadas con Hibernate. Otra consecuencia es que las capacidades de Grails están totalmente disponibles para estas clases y las aplicaciones que las usan.

== Revista ==
* [http://www.groovymag.com/ GroovyMag for Groovy and Grails developers] (En inglés)

== Empresas que proporcionan servicios Grails ==
* [http://www.escueladegroovy.com/ Escuela de Groovy] proporciona servicios relacionados con la plataforma.

==Bilbiografía==
{{refbegin}}
* {{citation
| first1 = Jeff
| last1 = Brown
| first2 = Graeme
| last2 = Rocher
| date = January 15, 2009
| title = The Definitive Guide to Grails
| publisher = [[Apress]]
| edition = 2nd
| pages = 648
| isbn = 1590599950
| url = http://www.apress.com/book/view/1590599950
}}
* {{citation
| first1 = Glen
| last1 = Smith
| first2 = Peter
| last2 = Ledbrook
| date = June 28, 2009
| title = Grails in Action
| publisher = [[Manning Publications]]
| edition = 1st
| pages = 520
| isbn = 1933988932
| url = http://www.manning.com/gsmith/
}}
* {{citation
| first1 = Jon
| last1 = Dickinson
| date = May 27, 2009
| title = Grails 1.1 Web Application Development
| publisher = [[Packt|Packt Publishing]]
| edition = 1st
| pages = 328
| isbn = 1847196683
| url = http://www.packtpub.com/grails-1-0-web-application-development/book
}}
* {{citation
| first1 = Bashar
| last1 = Abdul-Jawad
| date = December 2, 2008
| title = Groovy and Grails Recipes
| publisher = [[Apress]]
| edition = 1st
| pages = 424
| isbn = 143021600X
| url = http://www.apress.com/book/view/143021600X
}}
* {{citation
| first1 = Robert
| last1 = Fischer
| date = April 20, 2009
| title = Grails Persistence with GORM and GSQL
| publisher = [[Apress]]
| edition = 1st
| pages = 125
| isbn = 1430219262
| url = http://www.apress.com/book/view/1430219262
}}
* {{citation
| first1 = Christopher
| last1 = M. Judd
| first2 = Joseph Faisal
| last2 = Nusairat
| first3 = Jim
| last3 = Shingler
| date = June 18, 2008
| title = Beginning Groovy and Grails: From Novice to Professional
| publisher = [[Apress]]
| edition = 1st
| pages = 440
| isbn = 1430210451
| url = http://www.apress.com/book/view/1430210451
}}
* {{citation
| first1 = Jason
| last1 = Rudolph
| date = February 6, 2007
| title = Getting Started with Grails
| publisher = [[Lulu.com]]
| edition = 2st
| pages = 132
| isbn = 143030782X
| url = http://www.infoq.com/minibooks/grails
}}
{{refend}}

== Ver también ==
* [[Groovy]]
* [[JRuby]]
* [[Griffon (framework)]] - Un framework desktop inspirado en Grails.
== Referencias ==
== Referencias ==
{{listaref}}
{{listaref}}

Revisión del 16:13 14 feb 2010

Grails
Archivo:Grails logo.jpg
Información general
Tipo de programa Framework de aplicaciones web
Lanzamiento inicial 2005
Licencia Licencia Apache 2.0
Información técnica
Programado en Groovy
Versiones
Última versión estable 1.2.1 ( 1 de febrero de 2010)
Enlaces

Grails es un framework para aplicaciones web libre desarrollado sobre el lenguaje de programación Groovy (el cual a su vez se basa en la Java platform). Grails pretende ser un marco de trabajo altamente productivo siguiendo paradigmas tales como convención sobre configuración o no te repitas (DRY), proporcionando un entorno de desarrollo estandarizado y ocultando gran parte de los detalles de configuración al programador.

Grails ha sido impulsado principalmente por la empresa G2One,[1]​ la cual fue adquirida por la desarrolladora de software libre SpringSource en noviembre de 2008.[2]​ En agosto de 2009 SpringSource fue a su vez adquirida por VMWare, empresa especializada en virtualización de sistemas. [3]

Grails fue conocido como 'Groovy on Rails' (el nombre cambió en respuesta al pedido de David Heinemeier Hansson, fundador de Ruby on Rails).[4]​ Se inició en julio de 2005, con la versión 0.1 29 de marzo de 2006 y la versión 1.0 anunciada el 18 de febrero de 2008. En diciembre de 2009 se publicó la versión 1.2.

Características

Grails se ha desarrollado con una serie de objetivos en mente:

  • Ofrecer un framework web de alta productividad para la plataforma Java.
  • Reutilizar tecnologías Java ya probadas como Hibernate y Spring bajo un interfaz simple y consistente.
  • Ofrecer un framework consistente que reduzca la confusión y que sea fácil de aprender.
  • Ofrecer documentación para las partes del framework relevantes para sus usuarios.
  • Proporcionar lo que los usuarios necesitan en áreas que a menudo son complejas e inconsistentes:
    • Framework de persistencia potente y consistente.
    • Patrones de visualización potentes y fáciles de usar con GSP (Groovy Server Pages).
    • Bibliotecas de etiquetas dinámicas para crear fácilmente componentes web.
    • Buen soporte de Ajax que sea fácil de extender y personalizar.
  • Proporcionar aplicaciones ejemplo que muestren la potencia del framework.
  • Proporciona una entorno completo de desarrollo, incluyendo un servidor web y recarga automática de recursos.

Grails se ha diseñado para ser fácil de aprender, fácil para desarrollar aplicaciones y extensible. Intenta ofrecer el balance adecuado entre consistencia y funcionalidades potentes.

Alta productividad

Grails tiene tres características que intentan incrementar su productividad comparandolo con los framework Java tradicionales.

  • Inexistencia de configuración XML
  • Entorno de desarrollo preparada para funcionar desde el primer momento
  • Funcionalidad disponible mediante métodos dinámicos

Inexistencia de configuración XML

Crear aplicaciones web en Java tradicionalmente implica configurar entornos y framework al inicio y durante el desarrollo. Esta configuración a menudo está en ficheros XML para facilitar dicha configuración y evitar tenerla en el código fuente. XML fue inicialmente bienvenido para proporcionar consistencia para configurar aplicaciones. Sin embargo aunque el XML es muy útil para la configuración resulta complicado y tedioso utilizar para los entornos de desarrollo. La productividad de los programadores baja mucho mientras pasan tiempo configurando y manteniendo los frameworks mientras la aplicación crece. Añadir o modificar configuración en las aplicaciones que utilizan la configuración XML añade un paso extra al proceso de escribir aplicaciones que repercute en la productividad reduciéndola y hace que el proceso completo sea poco ágil.

Grails elimina la necesidad de configurar ficheros XML. En su lugar el framework utiliza una serie de reglas de convención mientras examona el código de las aplicaciones basadas en Grails. Por ejemplo, una clase que termina en "Controller" es considerada un controlador web.

Entorno de desarrollo preparada para funcionar desde el primer momento

Mientras usamos herrientas Java tradicionales, es tarea del desarrollador ensamblar los componentes, lo cual puede ser tedioso. Grails tiene un servidor web integrado preparado para desplegar la aplicación desde el primer momento. Todas las librerías requeridas son parte de la distribución de Grails, y están preparadas para ser desplegadas automáticamente.

Funcionalidad disponible mediante métodos dinámicos

Grails proporciona métodos dinámicos en varias de sus clases. Un método dinámico se añade a la clase en tiempo de ejecución, como si su funcionalidad hubiera sido compilada. Estos métodos dinámicos permiten a los desarrolladores realizar operaciones sin tener que implementar interfaces o heredar clases base. Grails proporciona método dinámicos basándose en el tipo de clase. Por ejemplo, la clases de dominio tienen métodos para automatizar operaciones de persistencia, como save para salvar, delete para borrar y find para buscar.

Framework web

El framework web de Grails se ha diseñado según el paradigma MVC

Controladores

Grails usa controladores para implementar el comportamiento de las páginas web. A continuación hay un ejemplo de un controlador:

 class BookController {
    def list = {
       [ books: Book.findAll() ]
    }
 }

El controlador tiene una acción list que devuelve un modelo conteniendo todos los libros de la base de datos. Para crear este controlador se usa un comando grails:

grails create-controller

Este comando recoge el nombre del controlador y crea una clase en el directorio grails-app/controller del proyecto Grails. Crear la clase del controlador es suficiente para que Grails lo reconozca. La acción list se mapea a la dirección http://localhost:8080/book/list en el entorno de desarrollo.

Vistas

Grails soporta JSP y GSP. En el siguiente ejemplo se muestra un vista escrita en GSP que lista los libros del modelo preparado por el controlador anterior:

<html>
  <head>
    <title>Our books</title>
  </head>
  <body>
    <ul>
      <g:each in="${books}">
        <li>${it.title} (${it.author.name})</li>
      </g:each>
    </ul>
  </body>
</html>

Esta vista debe estar en grails-app/views/book/list.gsp del proyecto Grails. Esta localización es mapeada automáticamente por el BookController y la acción list.

Existe también una referencia a las Tags GSP .

Soporte Ajax

Grails soporta varias librerias Ajax incluidas OpenRico, Prototype, Dojo y YUI [5]​. Existen librerías de tags para crear HTML con código Ajax. También existe la posibilidad de crear librerías de tags propias.

Librerías de tags

Grails proporciona un gran número de tag libraries. De todas maneras se pueden crear y reusar librerías de tags fácilmente:

 def formatDate = { attrs ->
    out << new java.text.SimpleDateFormat(attrs.format).format(attrs.date)
 }

El tag formatDate formatea el objeto java.util.Date a String. Este tag debe ser situado en el directorio grails-app/taglib para que Grails lo reconozca automáticamente.

A continuación un trozo de código de una GSP que utiliza el tag formatDate:

<g:formatDate format="yyyyMMdd" date="${myDate}"/>

Para usar una librería de tags en una página GSP no son necesarios import. Las librerías de tag también pueden ser utilizadas en JSP aunque esto requiere un poco más de esfuerzo. [1]

Persistencia

Modelo

El modelo de datos en Grails se graba en la base de datos ustilizando GORM (Grails Object Relational Mapping). Las clases de dominio se graban en el directorio grails-app/domain y se pueden crear utilizando el comando grails así:

grails create-domain-class

Este comando recibe el nombre de la clase y crea los ficheros adecuados. A continuación se muestra el códio de la clase Book:

 class Book {
    String title
    Person author
 }

Crear esta clase es todo lo que se necesita para que sea persistida de forma automática por Grails. A partir de Grails 0.3, GORM ha sido mejorado y añade las propiedades id y version automáticamente si no se declaran. En la propiedad id se almacena la clave única de la tabla, mientras version se utiliza para gestionar el [bloqueo optimista]].

Métodos

Las clases de dominio gestionadas por GORM tienen métodos dinámicos y estáticos para realizar operaciones de persistencia sobre estas clases y sus objetos. [2]

Métodos dinámicos de instancia

El método save() salva un objeto en la base de datos:

 def book = new Book(title:"The Da Vinci Code", author:Author.findByName("Dan Brown"))
 book.save()

El método delete() borra un objeto de la base de datos:

 def book = Book.findByTitle("The Da Vinci Code")
 book.delete()

El método refresh() refresca el estado de un objeto de la base de datos:

 def book = Book.findByTitle("The Da Vinci Code")
 book.refresh()

El método ident() recupera el identificador del objeto de la base de datos:

 def book = Book.findByTitle("The Da Vinci Code")
 def id = book.ident()

Métodos dinámicos Static

El método count() recupera el número de registros de una clase dada:

 def bookCount = Book.count()

El método exists() devuelve verdadero si el objeto existe en la base de datos con el identificador dado:

 def bookExists = Book.exists(1)

El método find() devuelve el primer objeto de la base de datos que corresponde con la consulta realizada:

 def book = Book.find("from Book b where b.title = ?", [ 'The Da Vinci Code' ])

La sintaxis utilizada es Hibernate HQL.

El método findAll() devuelve todos los mobjetos existentes en la base de datos:

 def books = Book.findAll()

El método findAll() también puede recibir una consulta como parámetro:

 def books = Book.findAll("from Book")

El método findBy*() devuelve el primer objeto de la base de datos que coincide con el patrón especificado:

 def book = Book.findByTitle("The Da Vinci Code")

También:

 def book = Book.findByTitleLike("%Da Vinci%")

El método findAllBy*() devuelve una lista de objetos de la base de datos que coincide con el patrón especificado:

 def books = Book.findAllByTitleLike("The%")

El método findWhere*() devuelve el primer objeto de la base de datos que coincide con los parámetros especificados:

 def book = Book.findWhere(title:"The Da Vinci Code")

Scaffolding

Grails soporta scaffolding para implementar operaciones CRUD (Create, Read, Update, Delete). Cualquier clase de dominio puede crear su "Scaffolding" como se muestra a continuación:

 class BookController {
    def scaffold = true
 }

Creando esta clase se pueden realizar operaciones CRUD en la dirección http://localhost:8080/book. Actualmente no todas las relaciones entre entidades están soportadas por Grails.

Bases de datos heredadas

El mecanismo de persistencia en GORM se implementa mediente Hibernate. Las bases de datos heredadas pueden ser mapeadas a clases GORM utilizando lo ficheros de Mapeo Hibernate.

Creando un proyecto Grails

Un proyecto Grails se crea así:

  • Sigue las instrucciones de descarga e instalación del sitio web de Grails [6]​.
  • Abre una pantalla de terminal:
grails create-app

Este comando recibe el nombre del proyecto como parámetro y crea el directorio del proyecto con el mismo nombre. Hay que entrar en dicho directorio para poder ejecutar otros comandos dentro del proyecto.

Ejecutando el comando grails run-app puedes probar la aplicación en la URL http://localhost:8080/

¿Para quién es?

Los posibles usuarios de Grails son :

  • Desarrolladores Java qeu buscan un entorno de desarrollo integrado para crear aplicaciones web.
  • Desarrolladores sin experiencia en Java buscando un entorno de alta productividad para desarrollar aplicaciones web.

Integración con la plataforma Java

Grails está construido sobre la plataforma Java, con lo que es muy fácil integrarlo con librerias Java, framework y código existente. La mejor característica que Grails ofrece en este ámbito es una integración transparente con clases mapeada mediante el framework Hibernate ORM. Esto significa que aplicaciones existentes que utilicen Hibernate pueden utilizar Grails sin recompilar el código o reconfigurar las clases Hibernate, aprovechando los métodos de persistencia que se mencionan anteriormente. [3]

Una consecuencia es que se puede utilizar scaffolding con las clases Java mapeadas con Hibernate. Otra consecuencia es que las capacidades de Grails están totalmente disponibles para estas clases y las aplicaciones que las usan.

Revista

Empresas que proporcionan servicios Grails

Bilbiografía

Ver también

Referencias