Your SlideShare is downloading. ×
0
Serge P  Nekoval Grails
Serge P  Nekoval Grails
Serge P  Nekoval Grails
Serge P  Nekoval Grails
Serge P  Nekoval Grails
Serge P  Nekoval Grails
Serge P  Nekoval Grails
Serge P  Nekoval Grails
Serge P  Nekoval Grails
Serge P  Nekoval Grails
Serge P  Nekoval Grails
Serge P  Nekoval Grails
Serge P  Nekoval Grails
Serge P  Nekoval Grails
Serge P  Nekoval Grails
Serge P  Nekoval Grails
Serge P  Nekoval Grails
Serge P  Nekoval Grails
Serge P  Nekoval Grails
Serge P  Nekoval Grails
Serge P  Nekoval Grails
Serge P  Nekoval Grails
Serge P  Nekoval Grails
Serge P  Nekoval Grails
Serge P  Nekoval Grails
Serge P  Nekoval Grails
Serge P  Nekoval Grails
Serge P  Nekoval Grails
Serge P  Nekoval Grails
Serge P  Nekoval Grails
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Serge P Nekoval Grails

508

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
508
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
16
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide
  • Closure - JavaScript- аналогии Ориентирован на ООП
  • RAPID – до 100% ускорения Работает на Google App engine
  • Transcript

    • 1. Grails. Поиски закончены. Сергей Нековаль ( Грамант )
    • 2.  
    • 3. Зоопарк Что выбрать?
    • 4. Жалобы трудящихся <ul><li>Сложность освоения </li></ul><ul><li>Отсутствие интегрированного решения </li></ul><ul><li>Длинный цикл разработки </li></ul>
    • 5. Grails <ul><li>Легок в освоении </li></ul><ul><li>Быстрота разработки </li></ul><ul><li>Без изобретения велосипедов! </li></ul>
    • 6. Умные слова <ul><li>MVC Model-View-Controller </li></ul><ul><li>DSL Domain-Specific Language </li></ul><ul><li>DI Dependency Injection </li></ul><ul><li>DDD Domain Driven Design </li></ul><ul><li>ORM Object-Relational Mapping </li></ul><ul><li>CC Convention over configuration </li></ul>
    • 7. Экскурсия в Grails <ul><li>Язык Groovy </li></ul><ul><li>Как разрабатывается веб-приложение на Grails </li></ul><ul><li>Тестирование, сборка, развертывание </li></ul>
    • 8.  
    • 9. Groovy Все, что так хотели Java- программисты, но боялись попросить
    • 10. Компилируется …
    • 11. «Мой код компилируется» ОТМАЗКА #1 отлынивающего от работы программиста
    • 12. Groovy <ul><li>Компилируется в байт-код </li></ul><ul><li>Динамический ОО с необязательной типизацией </li></ul><ul><li>Вызов любого Java- кода и наоборот </li></ul><ul><li>Поддерживает closures </li></ul>
    • 13. Groovy за 1 минуту <ul><li>def myClosure = { a,b -> a + b } </li></ul><ul><li>def map = [x:1, y:1], list = [1, 2, 3, 4] </li></ul><ul><li>assert map. x == map[‘x’] </li></ul><ul><li>assert [-1, 0, 1, 2].find{it > 0} == 1 </li></ul><ul><li>‘ 0123456789’[2..5] == ‘2345’ </li></ul>
    • 14. Groovy за 2 минуты <ul><li>Метаклассы: Integer.metaClass.sqr << {-> this * this } </li></ul><ul><li>Перегрузка операторов </li></ul><ul><li>GString: “My name is ${name}” </li></ul>
    • 15. Базовое Grails- приложение <ul><li>grails-app </li></ul><ul><ul><ul><li>c onf </li></ul></ul></ul><ul><ul><ul><li>controllers </li></ul></ul></ul><ul><ul><ul><li>domain </li></ul></ul></ul><ul><ul><ul><li>services </li></ul></ul></ul><ul><ul><ul><li>taglib </li></ul></ul></ul><ul><ul><ul><li>views </li></ul></ul></ul><ul><li>src </li></ul><ul><ul><ul><li>groovy </li></ul></ul></ul><ul><ul><ul><li>java </li></ul></ul></ul>test <ul><li>web-app </li></ul><ul><ul><ul><li>WEB-INF </li></ul></ul></ul>
    • 16. Среды <ul><li>Development </li></ul><ul><li>Test </li></ul><ul><li>Production </li></ul>
    • 17. Пишем веб-приложение <ul><li>Сущности </li></ul><ul><li>Сервисы </li></ul><ul><li>Контроллеры </li></ul><ul><li>GSP- страницы, тэги, фильтры </li></ul>
    • 18. MVC в Grails
    • 19. Сущность <ul><li>Валидация полей </li></ul><ul><li>Основа для схемы БД ( hbm2ddl) </li></ul><ul><li>Основа для scaffolding </li></ul>
    • 20. <ul><li>class Book { </li></ul><ul><li>String title </li></ul><ul><li>static constraints = { </li></ul><ul><li>title(blank: false , nullable: false , size:5..150) </li></ul><ul><li>} </li></ul><ul><li>} </li></ul>
    • 21. Scaffolding <ul><li>Генерация controller + view </li></ul><ul><li>Быстро создать скелет приложения </li></ul><ul><li>Что-то поправить </li></ul>
    • 22. GORM (Grails ORM) <ul><li>Очень мощный фантик для Hibernate 3 </li></ul><ul><li>Можно использовать отдельно от Grails </li></ul><ul><li>Версионирование (optimistic locking) </li></ul><ul><li>Mapping DSL </li></ul><ul><li>Criteria DSL , HQL, транзакции и т.д. </li></ul>
    • 23. Many-to-one <ul><li>class Book { </li></ul><ul><li>String title </li></ul><ul><li>static belongsTo = [author:Author] </li></ul><ul><li>} </li></ul>One-to-many static hasMany = [books:Book]
    • 24. def pushkin = Author.get(1) def onegin = Book.findByTitle( «Евгений Онегин» ) def onegin = Book.findByAuthorAndTitleLike (pushkin, «%Онегин%») println «Пушкин написал ${Book.countByAuthor(pushkin)} книг.»
    • 25. Сервисы <ul><li>Комплексная бизнес-логика </li></ul><ul><li>Dependency Injection </li></ul>
    • 26. Тесты <ul><li>Unit </li></ul><ul><li>Integration (Spring) </li></ul>
    • 27. Сборка <ul><li>На выходе – WAR файл </li></ul><ul><li>Управление сборкой: Gant </li></ul><ul><li>Зависимости: Maven, Ivy </li></ul>
    • 28. Build DSL <ul><li>grails.project.dependency.resolution = { </li></ul><ul><li>dependencies { </li></ul><ul><li>runtime ' postgresql:postgresql:8.3-604.jdbc4 ‘ </li></ul><ul><li>} </li></ul><ul><li>} </li></ul>Артефакт Maven
    • 29. Причины популярности <ul><li>Низкий порог входа </li></ul><ul><li>Быстрая разработка </li></ul><ul><li>Поддержка IDE: NetBeans, IDEA, Eclipse </li></ul><ul><li>Стабильность и переносимость платформы </li></ul><ul><li>Плагины </li></ul>
    • 30. Вопросы? http://grails.org Сергей Нековаль / [email_address]

    ×