Grails - wprowadzenie

Zapewne część z Was zna przynajmniej ze słyszenia Ruby on Rails. RoR jest frameworkiem, który zdobył uznanie i popularność dzięki świeżemu podejściu do tworzenia aplikacji webowych. Cechą charakterystyczną RoR jest przedkładanie konwencji nad konfigurację, sprowadza się to do tego, że prawie cała struktura aplikacji tworzona jest w oparciu o pewną z góry założoną hierarchię, dzięki temu programista poświęca zdecydowanie mniej czasu na zajmowanie się projektowaniem i konfigurowaniem aplikacji, zyskując w zamian czas na tworzenie właściwego kodu, który ma realizować pewne założenia biznesowe. O samym Ruby on Rails przeczytacie więcej tutaj, ja natomiast zajmę się innym frameworkiem, który wzorowany jest na RoR, a napisany został w Groovym, są nim tytułowe Grailsy.
Grailsy, to podobnie jak Rails’y framework webowy podczas tworzenia którego przewodnią myślą było hasło “Convention over Configuration”.
Dzieki temu Grailsy umożliwiają szybkie tworzenie aplikacji, duża część aplikacji jest automatycznie generowana, a programista jest jedynie zmuszony dostarczyć model danych na podstawie którego zostanie wygenerowana warstwa prezentacji oraz kontrolery.
Grailsy jednak w przeciwieństwie do Ruby on Rails powinny być bliższe programistom języka Java, powodów jest tutaj kilka, wśród nich na uwagę zasługuje fakt, iż zostały napisane w Groovym, a więc języku skryptowym stworzonym z myślą o JVM, integrują się one również mocno ze sztandarowymi frameworkami Javy, a mianowicie Springiem i Hibernate, integracja ta pozwala programistom Java na wykorzystanie posiadanych umiejętności i łatwiejszy start z Grailsami.
Zalet Grailsów jest wiele (wady też się znajdą :P), najlepiej jednak będzie poznać je w praktyce.

Utwórzmy więc pierwszą prostą aplikację, aplikacja ta pozwoli na wprowadzanie notatek przy pomocy interfejsu webowego. Aby przystąpić do działania należy pobrać Groovy’ego i Grailsy, a następnie je zainstalować. Ja proponuję pobrać obie paczki w wersji spakowanej, bez instalatora. Instalacja sprowadzi się wtedy do rozpakowania paczek oraz zdefiniowania zmiennych środowiskowch GROOVY_HOME i GRAILS_HOME.
Gdy już zainstalujecie Groovy i Grails, należy sprawdzić czy są one widoczne w systemie, w tym celu wpiszcie następujące komendy w wierszu poleceń:

Aby sprawdzić wersję Groovyego:

groovy -v

U mnie Groovy wypisał na konsoli:

Groovy Version: 1.5.6 JVM: 10.0-b23

To znak, że jest widoczny w systemie :)

Aby sprawdzić wersję Grailsów:

grails

Tu trochę więcej informacji:

Welcome to Grails 1.0.3 - http://grails.org/
Licensed under Apache Standard License 2.0
Grails home is set to: C:\Progs\grails\grails-1.0.3

No script name specified. Use ‘grails help’ for more info or ‘grails interactive’ to enter interactive mode

Jeśli udało Wam się wykonać obie komendy to możecie przystąpić do napisania aplikacji:

1. Tworzymy strukturę projektu wpisując:

grails create-app notes

gdzie notes to nasza nazwa aplikacji, po wykonaniu komendy zostanie utworzona struktura projektu (w kolejnym wpisie zostanie ona bliżej opisana).

2. Utwórzmy pierwszą klasę, która będzie odpowiadała pojedyńczej notatce (aby to zrobić musicie znajdować się w katalogu aplikacji):

grails create-domain-class Note

Po jej wykonaniu zobaczycie mniej-więcej takie logi:

Welcome to Grails 1.0.3 - http://grails.org/
Licensed under Apache Standard License 2.0
Grails home is set to: C:\Progs\grails\grails-1.0.3

Base Directory: D:\projects\notes
Note: No plugin scripts found
Running script C:\Progs\grails\grails-1.0.3\scripts\CreateDomainClass.groovy
Environment set to development
[copy] Copying 1 file to D:\projects\notes\grails-app\domain
Created Domain Class for Note
[copy] Copying 1 file to D:\projects\notes\test\integration
Created Tests for Note

Nasza klasa jest już gotowa!

3. Dodajmy pola do utworzonej właśnie klasy:

class Note {

  String title
  String description

}

Jest to bardzo prosta klasa, notka będzie zawierała jedynie tytuł i opis.

4. Wygenerujmy pozostałe części aplikacji używając do tego klasy z modelem:

grails generate-all Note

Po zakończeniu wykonania komendy pojawią się logi:

Generating views for domain class Note …
Generating controller for domain class Note …
Finished generation for domain class Note

To znak, że Grailsy zakończyły generację kontrolera i widoków, Wasza aplikacja jest już gotowa!
Czas ją uruchomić:

grails run-app

Wykonanie komendy objawi się podobnymi do poniższych logami:

Welcome to Grails 1.0.3 - http://grails.org/
Licensed under Apache Standard License 2.0
Grails home is set to: C:\Progs\grails\grails-1.0.3

Base Directory: D:\projects\sample\notes
Note: No plugin scripts found
Running script C:\Progs\grails\grails-1.0.3\scripts\RunApp.groovy
Environment set to development
[groovyc] Compiling 2 source files to C:\Documents and Settings\radek\.grails\1.0.3\projects\notes\classes
[copy] Copying 1 file to C:\Documents and Settings\radek\.grails\1.0.3\projects\notes
Running Grails application..
2008-11-04 20:50:50.337::INFO: Logging to STDERR via org.mortbay.log.StdErrLog
2008-11-04 20:50:51.603::INFO: jetty-6.1.4
2008-11-04 20:50:51.743::INFO: No Transaction manager found - if your webapp requires one, please configure one.
2008-11-04 20:50:51.056:/notes:INFO: Set web app root system property: ‘notes-development-0.1′ = [D:\projects\sample\no
tes\web-app\]
2008-11-04 20:50:51.056:/notes:INFO: Initializing log4j from [file:C:\Documents and Settings\radek/.grails/1.0.3/projec
ts/notes/resources/log4j.properties]
2008-11-04 20:50:51.071:/notes:INFO: Initializing Spring root WebApplicationContext
[0] spring.GrailsWebApplicationContext Refreshing org.codehaus.groovy.grails.commons.spring.GrailsWebApplicationContext@
3534c1: display name [org.codehaus.groovy.grails.commons.spring.GrailsWebApplicationContext@3534c1]; startup date [Tue N
ov 04 20:50:53 CET 2008]; parent: org.springframework.web.context.support.XmlWebApplicationContext@1fe1e26
[0] spring.GrailsWebApplicationContext Bean factory for application context [org.codehaus.groovy.grails.commons.spring.G
railsWebApplicationContext@3534c1]: org.springframework.beans.factory.support.DefaultListableBeanFactory@1da5362
2008-11-04 20:50:56.241:/notes:INFO: Initializing Spring FrameworkServlet ‘grails’
2008-11-04 20:50:57.397::INFO: Started SelectChannelConnector@0.0.0.0:8080
Server running. Browse to http://localhost:8080/notes

W powyższych logach widać, iż aplikacja uruchamiana jest za pomocą wbudowanego w Grailsy kontenera servletów Jetty, podczas startu aplikacji inicjalizowany jest również kontekst Springa, widać to w tej lini:

2008-11-04 20:50:51.071:/notes:INFO: Initializing Spring root WebApplicationContext

Spring springiem ale czas zobaczyć naszą aplikację, uruchamiamy w przeglądarce podany na końcu link: http://localhost:8080/notes.

I oto co widzimy:

Jest to domyślny i zarazem główny ekran aplikacji, wyświetla on listę dostępnych kontrolerów, kliknijmi na NoteController i następnie na opcję “Add Note”, a znajdziemy się na ekranie dodawania notki:

Po uzupełnieniu pól klikamy “Create” i naszym oczom ukazuje się lista stworzonych notek z poziomu której możemy przeglądać szczegóły poszczególnych notek (poniżej ekran szczegółów notki):

Właśnie utworzyłeś swoją pierwszą notkę za pomocą samodzielnie napisanej aplikacji w Grailsach!
Prawda, że proste i przyjemne?

Na zakończenie pozostawiam Wam rozpoznanie pozostałych podstron aplikacji, które to składają się na tzw CRUD (Create, Read, Update, Delete) i pozwalają nie tylko na dodawanie i wyświetlanie listy notatek, ale również na ich aktualizowanie i usuwanie.

  • Digg
  • del.icio.us
  • Google
  • description
  • Technorati
  • Wykop
November 4, 2008 | |

COMMENTS

 

Trackback URI | Comments RSS

2 Responses to “Grails - wprowadzenie”

  1. Jacek Laskowski on January 28th, 2009 6:45 pm

    Teraz już wiem, dlaczego powinienem przeczytać Twój wpis wieki temu - ta prostota tworzenia aplikacji odświeża umysł. Ech, gdybym tylko posłuchał Twoich rad wcześniej (nie od parady masz widzę imię Rad..ek ;-))

  2. radoslaw.holewa on February 1st, 2009 4:56 pm

    Hej, Groovy i Grails to jeszcze nic, tak się złożyło, że przez ostatnie tygodnie siedzę nad projektem pisanym w… Scali i to dopiero odświeża umysł :)

    Teraz dopiero widzę, że pisanie projektu w języku który znacznie różni się od Javy pozwala spojrzeć z innej perspektywy na tworzone oprogramowanie… widzę również jak wielkie przynosi to korzyści :)

    Tak więc wszystkim programującym w Javie polecam wypróbować inne języki programowania w pisanych przez siebie projektach :)

Leave a Reply