SlideShare a Scribd company logo
Как не наступить на
грабли, внедряя скрипты
в java приложение
Это грабли
Когда ваше приложение требует
динамичности
Как не наступить на грабли, внедряя скрипты в java приложение
Исполняем код динамически
JSR 199: Java Compiler API
JSR 199: Java Compiler API
Javassist
Groovy
Why Groovy?
 Синтаксический сахар
 Динамичность
 Простота интеграции
 Java код – валидный groovy код
 Просто построить DSL
DSL
A domain-specific language (DSL) is a
computer language specialized to a particular
application domain
Groovy in 5 minutes
Как не наступить на грабли, внедряя скрипты в java приложение
Как не наступить на грабли, внедряя скрипты в java приложение
Как не наступить на грабли, внедряя скрипты в java приложение
Как не наступить на грабли, внедряя скрипты в java приложение
Как не наступить на грабли, внедряя скрипты в 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.
JSR 223: Scripting for the Java
Platform
Пишем ScriptService
Как не наступить на грабли, внедряя скрипты в java приложение
Мы несем ответственность за
свой API
Правила проектирования
скриптового API
1. Обратная совместимость
Правила проектирования
скриптового API
1. Обратная совместимость
2. Документация
Правила проектирования
скриптового API
1. Обратная совместимость
2. Документация
3. Immutable объекты в контексте с
информацией +
Stateless сервисы взаимодействия
Как написать хороший скрипт
1. Шапка скрипта
Как написать хороший скрипт
1. Шапка скрипта
2. Логирование
Как написать хороший скрипт
1. Шапка скрипта
2. Логирование
3. Используйте преимущества Groovy
Как не наступить на грабли, внедряя скрипты в java приложение
Groovy IDE
1. Groovy Eclipse Plugin
2. IntelliJ IDEA
Как не наступить на грабли, внедряя скрипты в java приложение
CodeMirror
Как не наступить на грабли, внедряя скрипты в java приложение
Как не наступить на грабли, внедряя скрипты в java приложение
DSLD
DSLD
Как не наступить на грабли, внедряя скрипты в java приложение
Как не наступить на грабли, внедряя скрипты в java приложение
Как не наступить на грабли, внедряя скрипты в java приложение
Как не наступить на грабли, внедряя скрипты в java приложение
Как не наступить на грабли, внедряя скрипты в java приложение
Как не наступить на грабли, внедряя скрипты в java приложение
Как не наступить на грабли, внедряя скрипты в java приложение
“CodeNarc analyzes Groovy code for
defects, bad practices, inconsistencies,
style issues and more”
Как не наступить на грабли, внедряя скрипты в java приложение
CI для скриптов
Как не наступить на грабли, внедряя скрипты в java приложение
Как не наступить на грабли, внедряя скрипты в java приложение
Как не наступить на грабли, внедряя скрипты в java приложение
Я только запустил скрипт
@TimedInterrupt
Как не наступить на грабли, внедряя скрипты в java приложение
Как не наступить на грабли, внедряя скрипты в java приложение
Как не наступить на грабли, внедряя скрипты в java приложение
@ThreadInterrupt
@ConditionalInterrupt
@ConditionalInterrupt
ImportCustomizer
SecureASTCustomizer
Как не наступить на грабли, внедряя скрипты в java приложение
Как не наступить на грабли, внедряя скрипты в java приложение
Спасибо за внимание

More Related Content

PDF
Архитектурные решения при создании облачного сервиса на Asp.Net
PPTX
Scala.js в production
PPTX
CodeFest 2014. Шкредов С. — Управление зависимостями в архитектуре. Переход о...
PDF
Автоматизация iOS приложений с помощью Calabash: tips and tricks
PPTX
QA Fest 2019. Святослав Логин. Как найти уязвимости в мобильном приложении
PPTX
Dot.net building scalable java script application using react and typescript,...
PDF
Григорий Петров "WebRTC в мобильных приложениях при помощи React Native"
PDF
Angular2
Архитектурные решения при создании облачного сервиса на Asp.Net
Scala.js в production
CodeFest 2014. Шкредов С. — Управление зависимостями в архитектуре. Переход о...
Автоматизация iOS приложений с помощью Calabash: tips and tricks
QA Fest 2019. Святослав Логин. Как найти уязвимости в мобильном приложении
Dot.net building scalable java script application using react and typescript,...
Григорий Петров "WebRTC в мобильных приложениях при помощи React Native"
Angular2

Viewers also liked (20)

PPTX
обработка исключений в Java
PPTX
Интеллектуальная система автоматизации тестирования на базе Groovy
PPTX
создание живых сайтов
PPTX
Базовые операторы Java
PPTX
Scala для всех (РИФ 2015)
PPTX
Лекция 6_принципы ООП : инкапсуляция, наследование
PPTX
Классы и объекты в Java
PDF
Scala EE: Myth or Reality?
PPT
Мастерство речи, искусство презентации
PDF
Глава 2: Среда разработки NetBeans
PPTX
Составление резюме
PPT
Характерные черты функциональных языков программирования
PPT
Groovy On Grails
PPTX
Работа с БД в Java
PDF
Любовь Поволоцкая_Сборка Android-приложений с помощью Gradle
PPTX
Массивы в Java
PDF
PiterPy#3. DSL in Python. How and why?
PDF
Groovy jug-moscow-part 1
PDF
Стратегии выполнения тестов в Gradle
PPTX
Классы и объекты в Java
обработка исключений в Java
Интеллектуальная система автоматизации тестирования на базе Groovy
создание живых сайтов
Базовые операторы Java
Scala для всех (РИФ 2015)
Лекция 6_принципы ООП : инкапсуляция, наследование
Классы и объекты в Java
Scala EE: Myth or Reality?
Мастерство речи, искусство презентации
Глава 2: Среда разработки NetBeans
Составление резюме
Характерные черты функциональных языков программирования
Groovy On Grails
Работа с БД в Java
Любовь Поволоцкая_Сборка Android-приложений с помощью Gradle
Массивы в Java
PiterPy#3. DSL in Python. How and why?
Groovy jug-moscow-part 1
Стратегии выполнения тестов в Gradle
Классы и объекты в Java
Ad

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