Grails for bored java developers by Emil Doychev
-
Upload
nayden-gochev -
Category
Software
-
view
307 -
download
1
Transcript of Grails for bored java developers by Emil Doychev
![Page 1: Grails for bored java developers by Emil Doychev](https://reader033.fdocuments.us/reader033/viewer/2022051710/58ed9cfb1a28abac6c8b45f5/html5/thumbnails/1.jpg)
Grails for Bored Java
DevelopersEmil Doychev
22.11.2016, Hotel Vitosha, Sofia, Bulgaria
![Page 2: Grails for bored java developers by Emil Doychev](https://reader033.fdocuments.us/reader033/viewer/2022051710/58ed9cfb1a28abac6c8b45f5/html5/thumbnails/2.jpg)
Grails от отегчен Java
разработчикЕмил Дойчев
22.11.2016, Хотел Витоша, София
![Page 3: Grails for bored java developers by Emil Doychev](https://reader033.fdocuments.us/reader033/viewer/2022051710/58ed9cfb1a28abac6c8b45f5/html5/thumbnails/3.jpg)
Кой съм аз?
University of Plovdiv
e-mial: [email protected]
LinkedIn: www.linkedin.com/in/edoychev
Емил Дойчев
![Page 4: Grails for bored java developers by Emil Doychev](https://reader033.fdocuments.us/reader033/viewer/2022051710/58ed9cfb1a28abac6c8b45f5/html5/thumbnails/4.jpg)
Защо Grails?
Java Web Frameworks:
Struts / Struts 2
JSF
Spring MVC
GWT
…
Alpha 5 (A5)
![Page 5: Grails for bored java developers by Emil Doychev](https://reader033.fdocuments.us/reader033/viewer/2022051710/58ed9cfb1a28abac6c8b45f5/html5/thumbnails/5.jpg)
Пример
![Page 6: Grails for bored java developers by Emil Doychev](https://reader033.fdocuments.us/reader033/viewer/2022051710/58ed9cfb1a28abac6c8b45f5/html5/thumbnails/6.jpg)
Какво е Grails?
Вдъхновен от Ruby on Rails
Идеите на Rails чрез Spring & Hibernate
Чрез нов динамичен език – Groovy
Groovy on Rails = Grails
Термините на Ruby
Scaffolding
Convention over Configuration
Проблеми
Rails не е Java
![Page 7: Grails for bored java developers by Emil Doychev](https://reader033.fdocuments.us/reader033/viewer/2022051710/58ed9cfb1a28abac6c8b45f5/html5/thumbnails/7.jpg)
Версиите на 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
![Page 8: Grails for bored java developers by Emil Doychev](https://reader033.fdocuments.us/reader033/viewer/2022051710/58ed9cfb1a28abac6c8b45f5/html5/thumbnails/8.jpg)
Характеристики на Grails
Базира се на доказани Java frameworks:
Spring
Hibernate
Sitemesh
Quartz
…
Използва езика Groovy
Много по кратък, изразителен и DRY от Java код
По-малко код
по-висока производителност на развой
по-малко код за поддръжка
![Page 9: Grails for bored java developers by Emil Doychev](https://reader033.fdocuments.us/reader033/viewer/2022051710/58ed9cfb1a28abac6c8b45f5/html5/thumbnails/9.jpg)
Groovy Style Guide
Без точка и запетая
def или тип (dynamic / static)
Опционален return
http://www.groovy-lang.org/style-guide.html
![Page 10: Grails for bored java developers by Emil Doychev](https://reader033.fdocuments.us/reader033/viewer/2022051710/58ed9cfb1a28abac6c8b45f5/html5/thumbnails/10.jpg)
Groovy Style Guide
public по подразбиране
Без скоби
http://www.groovy-lang.org/style-guide.html
![Page 11: Grails for bored java developers by Emil Doychev](https://reader033.fdocuments.us/reader033/viewer/2022051710/58ed9cfb1a28abac6c8b45f5/html5/thumbnails/11.jpg)
Groovy Style Guide
Getters & Setters (property)
Инициализиране на bean с именувани параметри и конструктор по
подразбиране
http://www.groovy-lang.org/style-guide.html
![Page 12: Grails for bored java developers by Emil Doychev](https://reader033.fdocuments.us/reader033/viewer/2022051710/58ed9cfb1a28abac6c8b45f5/html5/thumbnails/12.jpg)
Groovy Style Guide
Equals & ==
Сравнението с == в Java е is() в Groovy
Операторът == в Groovy е умен equals()
GStrings (interpolation, multiline)
http://www.groovy-lang.org/style-guide.html
![Page 13: Grails for bored java developers by Emil Doychev](https://reader033.fdocuments.us/reader033/viewer/2022051710/58ed9cfb1a28abac6c8b45f5/html5/thumbnails/13.jpg)
Groovy Style Guide
Удобен синтаксис за структури от данни
http://www.groovy-lang.org/style-guide.html
![Page 14: Grails for bored java developers by Emil Doychev](https://reader033.fdocuments.us/reader033/viewer/2022051710/58ed9cfb1a28abac6c8b45f5/html5/thumbnails/14.jpg)
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
![Page 15: Grails for bored java developers by Emil Doychev](https://reader033.fdocuments.us/reader033/viewer/2022051710/58ed9cfb1a28abac6c8b45f5/html5/thumbnails/15.jpg)
Groovy Style Guide
Силата на switch
http://www.groovy-lang.org/style-guide.html
![Page 16: Grails for bored java developers by Emil Doychev](https://reader033.fdocuments.us/reader033/viewer/2022051710/58ed9cfb1a28abac6c8b45f5/html5/thumbnails/16.jpg)
Groovy Style Guide
Groovy Truth
Всички обекти могат да бъдат приравнени до Boolean стойност:
Всичко което е null, void, нула или празно => false
Всичко останало => true
http://www.groovy-lang.org/style-guide.html
![Page 17: Grails for bored java developers by Emil Doychev](https://reader033.fdocuments.us/reader033/viewer/2022051710/58ed9cfb1a28abac6c8b45f5/html5/thumbnails/17.jpg)
Groovy Style Guide
Безопасно навигиране в граф – вариант на оператора .
http://www.groovy-lang.org/style-guide.html
![Page 18: Grails for bored java developers by Emil Doychev](https://reader033.fdocuments.us/reader033/viewer/2022051710/58ed9cfb1a28abac6c8b45f5/html5/thumbnails/18.jpg)
Groovy Style Guide
Catch any exception
http://www.groovy-lang.org/style-guide.html
![Page 19: Grails for bored java developers by Emil Doychev](https://reader033.fdocuments.us/reader033/viewer/2022051710/58ed9cfb1a28abac6c8b45f5/html5/thumbnails/19.jpg)
Характеристики на Grails
GORM
Лесен за използване и гъвкъв слой над Hibernate
Динамични методи за търсене
CRUD операции
Constraints
Оптимизация на производителността
![Page 20: Grails for bored java developers by Emil Doychev](https://reader033.fdocuments.us/reader033/viewer/2022051710/58ed9cfb1a28abac6c8b45f5/html5/thumbnails/20.jpg)
Пример
![Page 21: Grails for bored java developers by Emil Doychev](https://reader033.fdocuments.us/reader033/viewer/2022051710/58ed9cfb1a28abac6c8b45f5/html5/thumbnails/21.jpg)
Constraints в GORM
![Page 22: Grails for bored java developers by Emil Doychev](https://reader033.fdocuments.us/reader033/viewer/2022051710/58ed9cfb1a28abac6c8b45f5/html5/thumbnails/22.jpg)
Релации в GORM
Еднопосочна релация
Двупосочна релация – едно към едно
Релация „едно към много“
Релация „много към много“
Дървовидна структура
![Page 23: Grails for bored java developers by Emil Doychev](https://reader033.fdocuments.us/reader033/viewer/2022051710/58ed9cfb1a28abac6c8b45f5/html5/thumbnails/23.jpg)
GORM заявки
Динамични методи за търсене:
get
getAll
list
listOrderBy*
findBy* / findAllBy*
Съединения(and/or)
Оператори
Range оператори: LessThan, LessThanEquals, GreaterThan,
GreaterThanEquals, Between, NotEqual
String оператори: Like, Ilike
Null оператори: IsNull, IsNotNull
Criteria Builder
![Page 24: Grails for bored java developers by Emil Doychev](https://reader033.fdocuments.us/reader033/viewer/2022051710/58ed9cfb1a28abac6c8b45f5/html5/thumbnails/24.jpg)
Характеристики на Grails
Вградена поддръжка на тестване
От unit до функционални тестове
Без обвързване с конкретен framework:
Junit
Spock
EasyB
Geb
Selenium
Canoo
…
![Page 25: Grails for bored java developers by Emil Doychev](https://reader033.fdocuments.us/reader033/viewer/2022051710/58ed9cfb1a28abac6c8b45f5/html5/thumbnails/25.jpg)
Характеристики на Grails
DRY / Convention over Configuration / без XML конфигурации
Scaffolding
Ясно разграничаване на “environments”
Вградена поддръжка на REST
![Page 26: Grails for bored java developers by Emil Doychev](https://reader033.fdocuments.us/reader033/viewer/2022051710/58ed9cfb1a28abac6c8b45f5/html5/thumbnails/26.jpg)
REST
Домейн клас като REST ресурс
REST контролери
Наследяване на RestfulController
![Page 27: Grails for bored java developers by Emil Doychev](https://reader033.fdocuments.us/reader033/viewer/2022051710/58ed9cfb1a28abac6c8b45f5/html5/thumbnails/27.jpg)
Характеристики на Grails
Концепция за plugins
Разбиване на системата на по-малки части
Ефективен развой
Улеснена поддръжка
Огромно количество от налични плъгини
https://grails.org/plugins/
![Page 28: Grails for bored java developers by Emil Doychev](https://reader033.fdocuments.us/reader033/viewer/2022051710/58ed9cfb1a28abac6c8b45f5/html5/thumbnails/28.jpg)
Благодаря