Grails for bored java developers by Emil Doychev

28
Grails for Bored Java Developers Emil Doychev 22.11.2016, Hotel Vitosha, Sofia, Bulgaria

Transcript of Grails for bored java developers by Emil Doychev

Page 1: Grails for bored java developers by Emil Doychev

Grails for Bored Java

DevelopersEmil Doychev

22.11.2016, Hotel Vitosha, Sofia, Bulgaria

Page 2: Grails for bored java developers by Emil Doychev

Grails от отегчен Java

разработчикЕмил Дойчев

22.11.2016, Хотел Витоша, София

Page 3: Grails for bored java developers by Emil Doychev

Кой съм аз?

University of Plovdiv

e-mial: [email protected]

LinkedIn: www.linkedin.com/in/edoychev

Емил Дойчев

Page 4: Grails for bored java developers by Emil Doychev

Защо Grails?

Java Web Frameworks:

Struts / Struts 2

JSF

Spring MVC

GWT

Alpha 5 (A5)

Page 5: Grails for bored java developers by Emil Doychev

Пример

Page 6: Grails for bored java developers by Emil Doychev

Какво е 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

Версиите на 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

Характеристики на Grails

Базира се на доказани Java frameworks:

Spring

Hibernate

Sitemesh

Quartz

Използва езика Groovy

Много по кратък, изразителен и DRY от Java код

По-малко код

по-висока производителност на развой

по-малко код за поддръжка

Page 9: Grails for bored java developers by Emil Doychev

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

Groovy Style Guide

public по подразбиране

Без скоби

http://www.groovy-lang.org/style-guide.html

Page 11: Grails for bored java developers by Emil Doychev

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

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

Groovy Style Guide

Удобен синтаксис за структури от данни

http://www.groovy-lang.org/style-guide.html

Page 14: Grails for bored java developers by Emil Doychev

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

Groovy Style Guide

Силата на switch

http://www.groovy-lang.org/style-guide.html

Page 16: Grails for bored java developers by Emil Doychev

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

Groovy Style Guide

Безопасно навигиране в граф – вариант на оператора .

http://www.groovy-lang.org/style-guide.html

Page 18: Grails for bored java developers by Emil Doychev

Groovy Style Guide

Catch any exception

http://www.groovy-lang.org/style-guide.html

Page 19: Grails for bored java developers by Emil Doychev

Характеристики на Grails

GORM

Лесен за използване и гъвкъв слой над Hibernate

Динамични методи за търсене

CRUD операции

Constraints

Оптимизация на производителността

Page 20: Grails for bored java developers by Emil Doychev

Пример

Page 21: Grails for bored java developers by Emil Doychev

Constraints в GORM

Page 22: Grails for bored java developers by Emil Doychev

Релации в GORM

Еднопосочна релация

Двупосочна релация – едно към едно

Релация „едно към много“

Релация „много към много“

Дървовидна структура

Page 23: Grails for bored java developers by Emil Doychev

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

Характеристики на Grails

Вградена поддръжка на тестване

От unit до функционални тестове

Без обвързване с конкретен framework:

Junit

Spock

EasyB

Geb

Selenium

Canoo

Page 25: Grails for bored java developers by Emil Doychev

Характеристики на Grails

DRY / Convention over Configuration / без XML конфигурации

Scaffolding

Ясно разграничаване на “environments”

Вградена поддръжка на REST

Page 26: Grails for bored java developers by Emil Doychev

REST

Домейн клас като REST ресурс

REST контролери

Наследяване на RestfulController

Page 27: Grails for bored java developers by Emil Doychev

Характеристики на Grails

Концепция за plugins

Разбиване на системата на по-малки части

Ефективен развой

Улеснена поддръжка

Огромно количество от налични плъгини

https://grails.org/plugins/

Page 28: Grails for bored java developers by Emil Doychev

Благодаря