sobota, listopadu 17, 2007

Znáte GRAILS?

GRAILs je webovým frameworkem založeným na jazyce Groovy. O Groovy se psalo na root.cz například zde. Myslím že Groovy se může stát populárním podobně jako Ruby právě díky webovému frameworku. Zajímaví je ovšem samotný framework GRAILS. V současnosti se blíží k verzi 1.0 a jedná se už o poměrně stabilní prostředí. GRAILS jsou založeny na JAVA technologiích jako jsou Spring Framework a Hibernate a v podstatě pomocí jazyka Groovy tvoří přívětivý uživatelský aparát pro práci s nimi. Přívětivý do té míry, že se v mnoha věcech 'podobá' Ruby on Rails, který tvoří v současnosti určitou laťku pro rychlý webový vývoj. Podobnost je spíše filozofická než technická. Současní vývojáři si mohou vzít mnoho příkladů z uspěšných nástrojů frameworků jako jsou Ruby On Rails, Django atp. A GRAILS je to vidět.

Na Grails se mi líbí několik vlastností:
  • GORM = ORM založený na Hibernate pro práci s databází. Zvláště se mi libí možnost automatické aktualizace schématu databáze podle definice objektu v Grails. Způsob práce vychází z filozofie ActiveRecord
  • integrovaný scheduler - opět jako i jiné komponenty Grails je založen na existujícím projektu Quartz. Jednoduše si nadefinujete periodicitu spouštění a spouštěný kód má přistup k celému prostředí Grails.
  • systém pluginů - už nyní najdete pluginy pro autentizaci, práci s obrázky atp. Zde je prostor pro celou komunitu rozšířovat celý systém. Pro Ruby On Rails dneska existují stovky pluginů.
  • systém development, test a production prostředí, pro které si mohu nadefinovat připojení na jiné databáze. Mohu tam velmi lehce provozovat a přepínat mezi vývojovou verzí databáze z testovacími daty a produkční databází.
  • dokumentace - ta je psána průběžně již od počátku projektu. K sehnání je již i kniha 'The Definite Guide to GRAILS' a pro Groovy jako takové k dispozici s nakladelství Manning 'Groovy in Action'. Pěkný je i reference guide.
Z podstaty jazyka Groovy vychází možnost používat existující JAVA knihovny a implementovat je do vaší GRAILS aplikace. Pokud tak třeba chcete používate JFreeChart, není to problém. To co je však vynikající je možnost celou aplikaci jednoduchým příkazem zabalit do WAR souboru( 'grails war') a nechat pak běžet na některém z celé řady JAVA serverů(Apache Tomcat, Jboos, Resin, WebSphere atp.) . Aplikaci v Grails je tak možno lehce integrovat do existujícího firemního JAVA prostředí. (pokud nějaké existuje).

Zde jsem zmínil opravdu jen minimum z toho, co Grails nabízí. Zájemci mohou navštívit přímo stránky projektu na adrese www.grails.org a projít si další detaily.

Pro fajnšmekry uvádím i trochu kódu. Ten ukazuje jak definovat databázové objekty a jejich jednoduché vazby mezi sebou. Taktéž si zde v můžete nadefinovat různá omezení a podmínky pro jednotlivé položky modelu. Z vaší definice v Grails is systém vytvoří předpis pro Hibernate a provede aktualizaci databáze.


// objekt dokumentu
class Document {

static hasMany = [ attachments : Attachment]
String title
String description
String category
Integer att_count
String category1

static constraints = {
title(unique:true, blank:false)
category(blank:true)
category1(blank:true, nullable:true)
att_count(blank:true, nullable:true)
}
}


// příloha, která patří k dokumentu
class Attachment {
String title
String description
Document document

static constraints = {
title(blank:false)
}
}