62
Как не наступить на грабли, внедряя скрипты в java приложение

Как не наступить на грабли, внедряя скрипты в java приложение

  • Upload
    -

  • View
    107

  • Download
    1

Embed Size (px)

DESCRIPTION

Презентация с первой встречи jugekb.ru Однажды вы решаете добавить динамики приложению и в вашем Java коде появляется Groovy, либо любой другой скриптовый язык. И Groovy приносит свою магию. Сначала её мало, но затем её становится все больше и больше! Вместе со скриптами появляется много вопросов - а если?, а как?, а почему? А если я переименую этот класс? А как удобно писать скрипты? А почему скрипты сломались? И т.д. Я расскажу как сделать так, чтобы написание скриптов приносило радость, их поддержка не была болью, а Groovy стал вашим лучшим другом!

Citation preview

Page 1: Как не наступить на грабли, внедряя скрипты в java приложение

Как не наступить на

грабли, внедряя скрипты

в java приложение

Page 2: Как не наступить на грабли, внедряя скрипты в java приложение

Это грабли

Page 3: Как не наступить на грабли, внедряя скрипты в java приложение

Когда ваше приложение требует

динамичности

Page 4: Как не наступить на грабли, внедряя скрипты в java приложение
Page 5: Как не наступить на грабли, внедряя скрипты в java приложение

Исполняем код динамически

Page 6: Как не наступить на грабли, внедряя скрипты в java приложение

JSR 199: Java Compiler API

Page 7: Как не наступить на грабли, внедряя скрипты в java приложение

JSR 199: Java Compiler API

Page 8: Как не наступить на грабли, внедряя скрипты в java приложение

Javassist

Page 9: Как не наступить на грабли, внедряя скрипты в java приложение

Groovy

Page 10: Как не наступить на грабли, внедряя скрипты в java приложение

Why Groovy?

Синтаксический сахар

Динамичность

Простота интеграции

Java код – валидный groovy код

Просто построить DSL

Page 11: Как не наступить на грабли, внедряя скрипты в java приложение

DSL

A domain-specific language (DSL) is a

computer language specialized to a particular

application domain

Page 12: Как не наступить на грабли, внедряя скрипты в java приложение

Groovy in 5 minutes

Page 13: Как не наступить на грабли, внедряя скрипты в java приложение
Page 14: Как не наступить на грабли, внедряя скрипты в java приложение
Page 15: Как не наступить на грабли, внедряя скрипты в java приложение
Page 16: Как не наступить на грабли, внедряя скрипты в java приложение
Page 17: Как не наступить на грабли, внедряя скрипты в java приложение
Page 18: Как не наступить на грабли, внедряя скрипты в java приложение

JSR 223: Scripting for the Java

Platform

The specification will describe mechanisms

allowing scripting language programs to

access information developed in the Java

Platform and allowing scripting language

pages to be used in Java Server-side

Applications.

Page 19: Как не наступить на грабли, внедряя скрипты в java приложение

JSR 223: Scripting for the Java

Platform

Page 20: Как не наступить на грабли, внедряя скрипты в java приложение

Пишем ScriptService

Page 21: Как не наступить на грабли, внедряя скрипты в java приложение
Page 22: Как не наступить на грабли, внедряя скрипты в java приложение

Мы несем ответственность за

свой API

Page 23: Как не наступить на грабли, внедряя скрипты в java приложение

Правила проектирования

скриптового API

1. Обратная совместимость

Page 24: Как не наступить на грабли, внедряя скрипты в java приложение

Правила проектирования

скриптового API

1. Обратная совместимость

2. Документация

Page 25: Как не наступить на грабли, внедряя скрипты в java приложение

Правила проектирования

скриптового API

1. Обратная совместимость

2. Документация

3. Immutable объекты в контексте с

информацией +

Stateless сервисы взаимодействия

Page 26: Как не наступить на грабли, внедряя скрипты в java приложение

Как написать хороший скрипт

1. Шапка скрипта

Page 27: Как не наступить на грабли, внедряя скрипты в java приложение

Как написать хороший скрипт

1. Шапка скрипта

2. Логирование

Page 28: Как не наступить на грабли, внедряя скрипты в java приложение

Как написать хороший скрипт

1. Шапка скрипта

2. Логирование

3. Используйте преимущества Groovy

Page 29: Как не наступить на грабли, внедряя скрипты в java приложение
Page 30: Как не наступить на грабли, внедряя скрипты в java приложение

Groovy IDE

1. Groovy Eclipse Plugin

2. IntelliJ IDEA

Page 31: Как не наступить на грабли, внедряя скрипты в java приложение
Page 32: Как не наступить на грабли, внедряя скрипты в java приложение

CodeMirror

Page 33: Как не наступить на грабли, внедряя скрипты в java приложение
Page 34: Как не наступить на грабли, внедряя скрипты в java приложение
Page 35: Как не наступить на грабли, внедряя скрипты в java приложение

DSLD

Page 36: Как не наступить на грабли, внедряя скрипты в java приложение

DSLD

Page 37: Как не наступить на грабли, внедряя скрипты в java приложение
Page 38: Как не наступить на грабли, внедряя скрипты в java приложение
Page 39: Как не наступить на грабли, внедряя скрипты в java приложение
Page 40: Как не наступить на грабли, внедряя скрипты в java приложение
Page 41: Как не наступить на грабли, внедряя скрипты в java приложение
Page 42: Как не наступить на грабли, внедряя скрипты в java приложение
Page 43: Как не наступить на грабли, внедряя скрипты в java приложение
Page 44: Как не наступить на грабли, внедряя скрипты в java приложение

“CodeNarc analyzes Groovy code for defects, bad practices, inconsistencies, style issues and more”

Page 45: Как не наступить на грабли, внедряя скрипты в java приложение
Page 46: Как не наступить на грабли, внедряя скрипты в java приложение

CI для скриптов

Page 47: Как не наступить на грабли, внедряя скрипты в java приложение
Page 48: Как не наступить на грабли, внедряя скрипты в java приложение
Page 49: Как не наступить на грабли, внедряя скрипты в java приложение
Page 50: Как не наступить на грабли, внедряя скрипты в java приложение

Я только запустил скрипт

Page 51: Как не наступить на грабли, внедряя скрипты в java приложение

@TimedInterrupt

Page 52: Как не наступить на грабли, внедряя скрипты в java приложение
Page 53: Как не наступить на грабли, внедряя скрипты в java приложение
Page 54: Как не наступить на грабли, внедряя скрипты в java приложение
Page 55: Как не наступить на грабли, внедряя скрипты в java приложение

@ThreadInterrupt

Page 56: Как не наступить на грабли, внедряя скрипты в java приложение

@ConditionalInterrupt

Page 57: Как не наступить на грабли, внедряя скрипты в java приложение

@ConditionalInterrupt

Page 58: Как не наступить на грабли, внедряя скрипты в java приложение

ImportCustomizer

Page 59: Как не наступить на грабли, внедряя скрипты в java приложение

SecureASTCustomizer

Page 60: Как не наступить на грабли, внедряя скрипты в java приложение
Page 61: Как не наступить на грабли, внедряя скрипты в java приложение
Page 62: Как не наступить на грабли, внедряя скрипты в java приложение

Спасибо за внимание