Grails for Bored Java
DevelopersEmil Doychev
22.11.2016, Hotel Vitosha, Sofia, Bulgaria
Grails от отегчен Java
разработчикЕмил Дойчев
22.11.2016, Хотел Витоша, София
Кой съм аз?
University of Plovdiv
e-mial: [email protected]
LinkedIn: www.linkedin.com/in/edoychev
Емил Дойчев
Защо Grails?
Java Web Frameworks:
Struts / Struts 2
JSF
Spring MVC
GWT
…
Alpha 5 (A5)
Пример
Какво е Grails?
Вдъхновен от Ruby on Rails
Идеите на Rails чрез Spring & Hibernate
Чрез нов динамичен език – Groovy
Groovy on Rails = Grails
Термините на Ruby
Scaffolding
Convention over Configuration
Проблеми
Rails не е Java
Версиите на Grails
1.x
Начало 29.03.2006
Версия 1.0 – 18.02.2008
Последна версия 1.3.9
2.x
Groovy 1.8 & Spring 3.1
H2 и конзола
Gant build system
Последна версия 2.5.2
3.x
Groovy 2.4, Spring 4.2 & Spring
Boot 1.3
Gradle build system
JSON views
Последна версия 3.1.0-М2
Характеристики на Grails
Базира се на доказани Java frameworks:
Spring
Hibernate
Sitemesh
Quartz
…
Използва езика Groovy
Много по кратък, изразителен и DRY от Java код
По-малко код
по-висока производителност на развой
по-малко код за поддръжка
Groovy Style Guide
Без точка и запетая
def или тип (dynamic / static)
Опционален return
http://www.groovy-lang.org/style-guide.html
Groovy Style Guide
public по подразбиране
Без скоби
http://www.groovy-lang.org/style-guide.html
Groovy Style Guide
Getters & Setters (property)
Инициализиране на bean с именувани параметри и конструктор по
подразбиране
http://www.groovy-lang.org/style-guide.html
Groovy Style Guide
Equals & ==
Сравнението с == в Java е is() в Groovy
Операторът == в Groovy е умен equals()
GStrings (interpolation, multiline)
http://www.groovy-lang.org/style-guide.html
Groovy Style Guide
Удобен синтаксис за структури от данни
http://www.groovy-lang.org/style-guide.html
Groovy Style Guide
Groovy Development Kit
За итериране върху колекции Groovy предоставя допълнителни методи, чрез
декорация (благодарения на динамичната си природа):
each{}, find{}, findAll{}, every{}, collect{}, inject{}
Съществуват допълнителни методи за много стандартни класове: Strings, Files,
Streams, Collections …
http://beta.groovy-lang.org/gdk.html
http://www.groovy-lang.org/style-guide.html
Groovy Style Guide
Силата на switch
http://www.groovy-lang.org/style-guide.html
Groovy Style Guide
Groovy Truth
Всички обекти могат да бъдат приравнени до Boolean стойност:
Всичко което е null, void, нула или празно => false
Всичко останало => true
http://www.groovy-lang.org/style-guide.html
Groovy Style Guide
Безопасно навигиране в граф – вариант на оператора .
http://www.groovy-lang.org/style-guide.html
Groovy Style Guide
Catch any exception
http://www.groovy-lang.org/style-guide.html
Характеристики на Grails
GORM
Лесен за използване и гъвкъв слой над Hibernate
Динамични методи за търсене
CRUD операции
Constraints
Оптимизация на производителността
Пример
Constraints в GORM
Релации в GORM
Еднопосочна релация
Двупосочна релация – едно към едно
Релация „едно към много“
Релация „много към много“
Дървовидна структура
GORM заявки
Динамични методи за търсене:
get
getAll
list
listOrderBy*
findBy* / findAllBy*
Съединения(and/or)
Оператори
Range оператори: LessThan, LessThanEquals, GreaterThan,
GreaterThanEquals, Between, NotEqual
String оператори: Like, Ilike
Null оператори: IsNull, IsNotNull
Criteria Builder
Характеристики на Grails
Вградена поддръжка на тестване
От unit до функционални тестове
Без обвързване с конкретен framework:
Junit
Spock
EasyB
Geb
Selenium
Canoo
…
Характеристики на Grails
DRY / Convention over Configuration / без XML конфигурации
Scaffolding
Ясно разграничаване на “environments”
Вградена поддръжка на REST
REST
Домейн клас като REST ресурс
REST контролери
Наследяване на RestfulController
Характеристики на Grails
Концепция за plugins
Разбиване на системата на по-малки части
Ефективен развой
Улеснена поддръжка
Огромно количество от налични плъгини
https://grails.org/plugins/
Благодаря