• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Serge P  Nekoval  Grails
 

Serge P Nekoval Grails

on

  • 739 views

 

Statistics

Views

Total Views
739
Views on SlideShare
739
Embed Views
0

Actions

Likes
0
Downloads
0
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • Closure - JavaScript- аналогии Ориентирован на ООП
  • Любая view- технология, любой механизм dispatch. Но лучше всего работает с GSP/SiteMesh.
  • RAPID – до 100% ускорения Работает на Google App engine

Serge P  Nekoval  Grails Serge P Nekoval Grails Presentation Transcript

  • Grails. Поиски закончены. Сергей Нековаль «Грамант»
  • Заголовок слайда
    • Текст слайда, рисунки. Старайтесь не захламлять текст лишними данными, параметрами. Вот немного тезисов :
    • Для демонстрации используются плазмы – соотношение сторон 16 :9 !;
    • Залы будут длинными (в среднем около 20 метров), поэтому текст должен быть заметным ;
    • Код на слайде – плохая идея, он плохо читается издалека ;
    • Не забывайте выделять ключевые моменты ;
    • Формат презентации – Microsoft Power Point ( как 2003, так и 2007) и PDF.
  • Зоопарк Что выбрать?
    • Rapid
    • Dynamic
    • Robust
  • Grails
    • Динамический язык Groovy
    • Rapid! Все лучшее из Ruby on Rails
    • Проверенные решения: Spring, Hibernate, SiteMesh
  • Умные слова
    • MVC Model-View-Controller
    • DSL Domain-Specific Language
    • DI Dependency Injection
    • DDD Domain Driven Design
    • ORM Object-Relational Mapping
    • CC Convention over configuration
  • Компилируется …
  • «Мой код компилируется» ОТМАЗКА #1 отлынивающего от работы программиста
  • Groovy
    • Компилируется в байт-код
    • Динамический с необязательной типизацией
    • Вызов любого Java- кода и наоборот
    • Поддерживает closures
    • def myClosure = { a,b -> a + b }
  • Подарки от Groovy
    • Можно не ставить ; и return
    • Можно игнорировать null : person?.name
    • Можно не объявлять исключения!
    • Можно не ставить скобки при вызове метода!
    • value ?: defaultValue
    Все, что так хотели Java- программисты, но боялись попросить
  • Grails
    • 90% кода динамически перекомпилируется
    • Старый добрый Servlet
    • Hibernate
    • Spring MVC + Spring WebFlow
    • SiteMesh
  • Базовое Grails- приложение
    • grails-app
        • c onf
        • controllers
        • domain
        • services
        • taglib
        • views
    • src
        • groovy
        • java
    test
    • web-app
        • WEB-INF
  • MVC в Grails
    • Основано на Spring MVC/Spring WebFlow
    • SiteMesh
    • GSP – вариант JSP для языка Groovy
    • Настраивается абсолютно все!
  • Сущность
    • Валидация полей
    • Основа для схемы БД ( hbm2ddl)
    • Основа для scaffolding
    • class Book {
    • String title
    • static constraints = {
    • title(blank: false , nullable: false , size:5..150)
    • }
    • }
  • GORM (Grails ORM)
    • Очень мощный фантик для Hibernate 3
    • Можно использовать отдельно от Grails
    • Версионирование
    • Mapping DSL
    • Criteria DSL , HQL, транзакции и т.д.
  • Примеры
    • class Book {
    • String title
    • String contents
    • static mapping = {
    • contents type: "text“
    • }
    • }
    • class Book {
    • String contents
    • static mapping = {
    • if (environment == PRODUCTION) {
    • contents type: "text“
    • }
    • }
    • }
  • 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)} книг.»
  • Транзакции? ЛЕГКО! Book.withTransaction { def book = new Book(title: «Метель») pushkin.addToBooks(book).save() }
  • Scaffolding
    • Генерация controller + view
    • Быстро создать скелет приложения
    • Что-то поправить
  • Сборка
    • На выходе – WAR файл
    • Управление сборкой: Gant
    • Зависимости: Maven, Ivy
  • Build DSL
    • grails.project.dependency.resolution = {
    • dependencies {
    • runtime ' postgresql:postgresql:8.3-604.jdbc4 ‘
    • }
    • }
    Артефакт Maven
  • Тесты
    • Unit
    • Integration
  • Причины популярности
    • Низкий порог входа
    • Быстрая разработка
    • Поддержка IDE: NetBeans, IDEA, Eclipse
    • Стабильность и переносимость платформы
    • Плагины
  • Вопросы? http://grails.org Сергей Нековаль / [email_address]