Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
SlideShare a Scribd company logo
Grails.  Поиски закончены. Сергей Нековаль ( Грамант )
 
Зоопарк Что выбрать?
Жалобы трудящихся Сложность освоения Отсутствие интегрированного решения Длинный цикл разработки
Grails Легок в освоении Быстрота разработки Без изобретения велосипедов!
Умные слова MVC  Model-View-Controller DSL  Domain-Specific Language DI  Dependency Injection DDD  Domain Driven Design ORM  Object-Relational Mapping CC  Convention over configuration
Экскурсия в  Grails Язык  Groovy Как разрабатывается веб-приложение на  Grails Тестирование, сборка, развертывание
 
Groovy Все, что так хотели  Java- программисты, но боялись попросить
Компилируется …
«Мой код компилируется» ОТМАЗКА  #1 отлынивающего от работы программиста
Groovy Компилируется  в байт-код Динамический ОО с необязательной типизацией Вызов любого  Java- кода и  наоборот Поддерживает  closures
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’
Groovy  за  2  минуты Метаклассы:  Integer.metaClass.sqr << {-> this * this } Перегрузка операторов GString: “My name is ${name}”
Базовое  Grails- приложение grails-app c onf controllers domain services taglib views src groovy java test web-app WEB-INF
Среды Development Test Production
Пишем веб-приложение Сущности Сервисы Контроллеры GSP- страницы, тэги, фильтры
MVC  в  Grails
Сущность Валидация полей Основа для схемы БД ( hbm2ddl) Основа для  scaffolding
class  Book  { String  title static   constraints  = { title(blank: false , nullable: false , size:5..150)  }  }
Scaffolding Генерация  controller + view Быстро создать скелет приложения Что-то поправить
GORM (Grails ORM) Очень мощный  фантик для  Hibernate 3 Можно использовать отдельно от  Grails Версионирование  (optimistic locking) Mapping DSL Criteria DSL ,  HQL,  транзакции и т.д.
Many-to-one class  Book  { String  title static  belongsTo = [author:Author]  } One-to-many static  hasMany = [books:Book]
def pushkin = Author.get(1) def onegin = Book.findByTitle( «Евгений Онегин» ) def onegin = Book.findByAuthorAndTitleLike  (pushkin,  «%Онегин%») println  «Пушкин написал ${Book.countByAuthor(pushkin)}  книг.»
Сервисы Комплексная бизнес-логика Dependency Injection
Тесты Unit Integration (Spring)
Сборка На выходе –  WAR  файл Управление сборкой:  Gant Зависимости:  Maven, Ivy
Build DSL grails.project.dependency.resolution = { dependencies { runtime ' postgresql:postgresql:8.3-604.jdbc4 ‘ } } Артефакт  Maven
Причины популярности Низкий порог входа Быстрая  разработка Поддержка  IDE: NetBeans, IDEA, Eclipse Стабильность и переносимость платформы Плагины
Вопросы? http://grails.org Сергей Нековаль  /  [email_address]

More Related Content

Serge P Nekoval Grails

Editor's Notes

  1. Closure - JavaScript- аналогии Ориентирован на ООП
  2. RAPID – до 100% ускорения Работает на Google App engine