Grails. Поиски закончены · grails-app conf controllers domain services taglib views...

30
Grails. Поиски закончены. Сергей Нековаль (Грамант)

Transcript of Grails. Поиски закончены · grails-app conf controllers domain services taglib views...

Page 1: Grails. Поиски закончены · grails-app conf controllers domain services taglib views src groovy java test web-app WEB-INF . Среды& • Development • Test •

Grails.  Поиски закончены.

Сергей  Нековаль  

(Грамант)  

Page 2: Grails. Поиски закончены · grails-app conf controllers domain services taglib views src groovy java test web-app WEB-INF . Среды& • Development • Test •
Page 3: Grails. Поиски закончены · grails-app conf controllers domain services taglib views src groovy java test web-app WEB-INF . Среды& • Development • Test •

Зоопарк Что выбрать?

Page 4: Grails. Поиски закончены · grails-app conf controllers domain services taglib views src groovy java test web-app WEB-INF . Среды& • Development • Test •

Жалобы  трудящихся  

•   Сложность  освоения  

•   Отсутствие  интегрированного  решения  

•   Длинный  цикл  разработки  

Page 5: Grails. Поиски закончены · grails-app conf controllers domain services taglib views src groovy java test web-app WEB-INF . Среды& • Development • Test •

Grails  

•   Легок  в  освоении  

•   Быстрота  разработки  

•   Без  изобретения  велосипедов!  

Page 6: Grails. Поиски закончены · grails-app conf controllers domain services taglib views src groovy java test web-app WEB-INF . Среды& • Development • Test •

Умные слова •  MVC  Model-­‐View-­‐Controller  •  DSL  Domain-­‐Specific  Language  •  DI  Dependency  Injeceon  •  DDD  Domain  Driven  Design  •  ORM  Object-­‐Relaeonal  Mapping  •  CC  Conveneon  over  configuraeon  

Page 7: Grails. Поиски закончены · grails-app conf controllers domain services taglib views src groovy java test web-app WEB-INF . Среды& • Development • Test •

Экскурсия  в  Grails  •  Язык  Groovy  •  Как  разрабатывается  веб-­‐приложение  на  Grails  

•  Тестирование,  сборка,  развертывание  

Page 8: Grails. Поиски закончены · grails-app conf controllers domain services taglib views src groovy java test web-app WEB-INF . Среды& • Development • Test •
Page 9: Grails. Поиски закончены · grails-app conf controllers domain services taglib views src groovy java test web-app WEB-INF . Среды& • Development • Test •

Groovy  

Все, что так хотели Java-программисты,

но боялись попросить

Page 10: Grails. Поиски закончены · grails-app conf controllers domain services taglib views src groovy java test web-app WEB-INF . Среды& • Development • Test •

Компилируется…  

Page 11: Grails. Поиски закончены · grails-app conf controllers domain services taglib views src groovy java test web-app WEB-INF . Среды& • Development • Test •

«Мой  код  компилируется»  ОТМАЗКА #1

отлынивающего от работы программиста

Page 12: Grails. Поиски закончены · grails-app conf controllers domain services taglib views src groovy java test web-app WEB-INF . Среды& • Development • Test •

Groovy  •  Компилируется  в  байт-­‐код  •  Динамический  ОО  с  необязательной  типизацией  

•  Вызов  любого  Java-­‐кода  и  наоборот  •  Поддерживает  closures  

Page 13: Grails. Поиски закончены · grails-app conf controllers domain services taglib views src groovy java test web-app WEB-INF . Среды& • Development • Test •

Groovy  за  1  минуту  def  myClosure  =  {  a,b  -­‐>  a  +  b  }  def  map  =  [x:1,  y:1],  list  =  [1,  2,  3,  4]  assert  map.x  ==  map[‘x’]  assert  [-­‐1,  0,  1,  2].find{it  >  0}  ==  1  ‘0123456789’[2..5]  ==  ‘2345’    

Page 14: Grails. Поиски закончены · grails-app conf controllers domain services taglib views src groovy java test web-app WEB-INF . Среды& • Development • Test •

Groovy  за  2  минуты  

•   Метаклассы:  Integer.metaClass.sqr  <<  {-­‐>  this  *  this  }  

•   Перегрузка  операторов  

•   GString:  “My  name  is  ${name}”  

Page 15: Grails. Поиски закончены · grails-app conf controllers domain services taglib views src groovy java test web-app WEB-INF . Среды& • Development • Test •

Базовое  Grails-­‐приложение  grails-app

conf controllers domain services taglib views

src groovy java

test web-app

WEB-INF

Page 16: Grails. Поиски закончены · grails-app conf controllers domain services taglib views src groovy java test web-app WEB-INF . Среды& • Development • Test •

Среды  

•  Development  •  Test  •  Produceon  

Page 17: Grails. Поиски закончены · grails-app conf controllers domain services taglib views src groovy java test web-app WEB-INF . Среды& • Development • Test •

Пишем  веб-­‐приложение  •  Сущности  •  Сервисы  •  Контроллеры  • GSP-­‐страницы,  тэги,  фильтры  

Page 18: Grails. Поиски закончены · grails-app conf controllers domain services taglib views src groovy java test web-app WEB-INF . Среды& • Development • Test •

MVC  в  Grails  

Page 19: Grails. Поиски закончены · grails-app conf controllers domain services taglib views src groovy java test web-app WEB-INF . Среды& • Development • Test •

Сущность  

•  Валидация  полей  • Основа  для  схемы  БД  (hbm2ddl)  • Основа  для  scaffolding  

Page 20: Grails. Поиски закончены · grails-app conf controllers domain services taglib views src groovy java test web-app WEB-INF . Среды& • Development • Test •

class  Book  {      String  etle      sta5c  constraints  =  {        etle(blank:false,  nullable:false,  size:5..150)        }    

}    

Page 21: Grails. Поиски закончены · grails-app conf controllers domain services taglib views src groovy java test web-app WEB-INF . Среды& • Development • Test •

Scaffolding  

•  Генерация  controller  +  view  •  Быстро  создать  скелет  приложения  •  Что-­‐то  поправить  

Page 22: Grails. Поиски закончены · grails-app conf controllers domain services taglib views src groovy java test web-app WEB-INF . Среды& • Development • Test •

GORM  (Grails  ORM)  •  Очень  мощный  фантик  для  Hibernate  3  •  Можно  использовать  отдельно  от  Grails  •  Версионирование  (opemisec  locking)  •  Mapping  DSL  •  Criteria  DSL,  HQL,  транзакции  и  т.д.  

Page 23: Grails. Поиски закончены · grails-app conf controllers domain services taglib views src groovy java test web-app WEB-INF . Среды& • Development • Test •

Many-­‐to-­‐one  class  Book  {      String  etle      sta5c  belongsTo  =  [author:Author]    

}  One-­‐to-­‐many  

sta5c  hasMany  =  [books:Book]    

Page 24: Grails. Поиски закончены · grails-app conf controllers domain services taglib views src groovy java test web-app WEB-INF . Среды& • Development • Test •

def  pushkin  =  Author.get(1)  def  onegin  =  Book.findByTitle(«Евгений  Онегин»)  def  onegin  =  Book.findByAuthorAndTitleLike    

 (pushkin,  «%Онегин%»)    println  «Пушкин  написал  \    ${Book.countByAuthor(pushkin)}  книг.»  

Page 25: Grails. Поиски закончены · grails-app conf controllers domain services taglib views src groovy java test web-app WEB-INF . Среды& • Development • Test •

Сервисы  

•  Комплексная  бизнес-­‐логика  •  Dependency  Injeceon  

Page 26: Grails. Поиски закончены · grails-app conf controllers domain services taglib views src groovy java test web-app WEB-INF . Среды& • Development • Test •

Тесты  

• Unit  •  Integraeon  (Spring)  

Page 27: Grails. Поиски закончены · grails-app conf controllers domain services taglib views src groovy java test web-app WEB-INF . Среды& • Development • Test •

Сборка  

• На  выходе  –  WAR  файл  •  Управление  сборкой:  Gant  •  Зависимости:  Maven,  Ivy  

Page 28: Grails. Поиски закончены · grails-app conf controllers domain services taglib views src groovy java test web-app WEB-INF . Среды& • Development • Test •

Build  DSL  grails.project.dependency.resolueon  =  {    dependencies  {      runeme  'postgresql:postgresql:8.3-­‐604.jdbc4‘    }  

}    

Артефакт Maven

Page 29: Grails. Поиски закончены · grails-app conf controllers domain services taglib views src groovy java test web-app WEB-INF . Среды& • Development • Test •

Причины  популярности  •  Низкий  порог  входа  •  Быстрая  разработка  •  Поддержка  IDE:  NetBeans,  IDEA,  Eclipse  •  Стабильность  и  переносимость  платформы  •  Плагины  

Page 30: Grails. Поиски закончены · grails-app conf controllers domain services taglib views src groovy java test web-app WEB-INF . Среды& • Development • Test •

Вопросы?  

http://grails.org

Сергей Нековаль / [email protected]