Successfully reported this slideshow.
Скриптовой язык  Groovy  и его применение в рамках разработки ПО Малышкин Фёдор ( [email_address] ) 28  марта 2008
Содержание <ul><li>Введение </li></ul><ul><li>Предполагаемые области применения </li></ul><ul><li>Архитектура </li></ul><u...
Введение <ul><li>Groovy –  это скриптовой язык, выполняемый на виртуальной машине  Java (JVM).  </li></ul><ul><li>Основные...
Содержание <ul><li>Введение </li></ul><ul><li>Предполагаемые области применения </li></ul><ul><li>Архитектура </li></ul><u...
Предполагаемые области применения <ul><li>Разработка кода, который требуется изменять без перезапуска приложения, частью к...
Содержание <ul><li>Введение </li></ul><ul><li>Предполагаемые области применения </li></ul><ul><li>Архитектура </li></ul><u...
Архитектура <ul><li>Groovy  выполняется на любой  Java  машине, начиная с  1.5. </li></ul><ul><li>Он имеет полную интеграц...
Содержание <ul><li>Введение </li></ul><ul><li>Предполагаемые области применения </li></ul><ul><li>Архитектура </li></ul><u...
Преимущества <ul><li>Очень простой и мощный   синтаксис </li></ul><ul><ul><li>Построчный вывод файла </li></ul></ul><ul><u...
Преимущества <ul><li>Наличие всего, что есть в  Java +  ещё кое-чего… </li></ul>
Содержание <ul><li>Введение </li></ul><ul><li>Предполагаемые области применения </li></ul><ul><li>Архитектура </li></ul><u...
Примеры кода
Примеры кода
Примеры кода
Примеры кода
Примеры кода
Примеры кода
Примеры кода
Примеры кода
Примеры кода
Примеры кода
Примеры кода
Примеры кода
Примеры кода
Примеры кода
Примеры кода
Примеры кода
Примеры кода
Примеры кода
Примеры кода
Примеры кода
Примеры кода
Содержание <ul><li>Введение </li></ul><ul><li>Предполагаемые области применения </li></ul><ul><li>Архитектура </li></ul><u...
Взаимодействие с  Java <ul><li>Ваши классы  Java  полностью доступны из  Groovy </li></ul><ul><li>Groovy  классы могут быт...
Содержание <ul><li>Введение </li></ul><ul><li>Предполагаемые области применения </li></ul><ul><li>Архитектура </li></ul><u...
Применение.  BA ( сервер )  <ul><li>Вся валидация документов (проверка корректности заполнения) реализована на  Groovy –  ...
Применение.  BA ( сервер )  <ul><li>Вся авторизация документов (проверка допустимости действий) реализована на  Groovy –  ...
Применение.  HS <ul><li>В модуле  HS (hetero search) Groovy  скрипты используются для извлечения и связывания информации, ...
Применение.  EKS <ul><li>На Groovy в EKS (ядро докумкентооборота) реализована вся логика для каждого конкретного маршрута,...
Содержание <ul><li>Введение </li></ul><ul><li>Предполагаемые области применения </li></ul><ul><li>Архитектура </li></ul><u...
Тестирование  <ul><li>Тестирование скриптов легко может производиться как самими скриптами, так и  Java  кодом </li></ul><...
Содержание <ul><li>Введение </li></ul><ul><li>Предполагаемые области применения </li></ul><ul><li>Архитектура </li></ul><u...
Предостережения <ul><li>Используйте  Groovy  там, где он полезен, а не там, где он может быть применён </li></ul><ul><li>Н...
Содержание <ul><li>Введение </li></ul><ul><li>Предполагаемые области применения </li></ul><ul><li>Архитектура </li></ul><u...
Советы <ul><li>Используйте  def   вместо явных типов </li></ul><ul><li>Используйте  closure –  это делает код более понятн...
Содержание <ul><li>Введение </li></ul><ul><li>Предполагаемые области применения </li></ul><ul><li>Архитектура </li></ul><u...
Источники информации <ul><li>http://groovy.codehaus.org  –   on-line  учебник по  Groovy , свежая информация от разработчи...
Upcoming SlideShare
Loading in …5
×

Скриптовой язык Groovy и его применение в рамках разработки ПО

5,119 views

Published on

Скриптовой язык Groovy и его применение в рамках разработки ПО

  • Be the first to comment

Скриптовой язык Groovy и его применение в рамках разработки ПО

  1. 1. Скриптовой язык Groovy и его применение в рамках разработки ПО Малышкин Фёдор ( [email_address] ) 28 марта 2008
  2. 2. Содержание <ul><li>Введение </li></ul><ul><li>Предполагаемые области применения </li></ul><ul><li>Архитектура </li></ul><ul><li>Преимущества </li></ul><ul><li>Примеры кода </li></ul><ul><li>Взаимодействие с Java </li></ul><ul><li>Применение </li></ul><ul><ul><li>BA ( сервер ) </li></ul></ul><ul><ul><li>HS </li></ul></ul><ul><ul><li>EKS </li></ul></ul><ul><li>Тестирование </li></ul><ul><li>Предостережения </li></ul><ul><li>Советы </li></ul><ul><li>Источники информации </li></ul>
  3. 3. Введение <ul><li>Groovy – это скриптовой язык, выполняемый на виртуальной машине Java (JVM). </li></ul><ul><li>Основные причины его существования: это быстрое написание кода для ежедневных задач, наглядность , лёгкость чтения и компактность, его интерпретируемая природы (анализ при выполнении) и слабая типизация. </li></ul>
  4. 4. Содержание <ul><li>Введение </li></ul><ul><li>Предполагаемые области применения </li></ul><ul><li>Архитектура </li></ul><ul><li>Преимущества </li></ul><ul><li>Примеры кода </li></ul><ul><li>Взаимодействие с Java </li></ul><ul><li>Применение </li></ul><ul><ul><li>BA ( сервер ) </li></ul></ul><ul><ul><li>HS </li></ul></ul><ul><ul><li>EKS </li></ul></ul><ul><li>Тестирование </li></ul><ul><li>Предостережения </li></ul><ul><li>Советы </li></ul><ul><li>Источники информации </li></ul>
  5. 5. Предполагаемые области применения <ul><li>Разработка кода, который требуется изменять без перезапуска приложения, частью которого он является </li></ul><ul><li>Разработка веб-приложений (связана с его интерпретируемой средой – лёгкая модификация без долгого перезапуска) </li></ul><ul><li>Тестирование (разработка тестов и тестовых данных) </li></ul><ul><li>Выполнение вещей, которые могут меняться, в зависимости от среды выполнения или требований заказчика («вынос» деталей настройки в скрипты) </li></ul><ul><li>Административные задачи (развёртывание серверов, управление журналами, тестирование, CI ) </li></ul><ul><li>Прототипирование будущих систем </li></ul>
  6. 6. Содержание <ul><li>Введение </li></ul><ul><li>Предполагаемые области применения </li></ul><ul><li>Архитектура </li></ul><ul><li>Преимущества </li></ul><ul><li>Примеры кода </li></ul><ul><li>Взаимодействие с Java </li></ul><ul><li>Применение </li></ul><ul><ul><li>BA ( сервер ) </li></ul></ul><ul><ul><li>HS </li></ul></ul><ul><ul><li>EKS </li></ul></ul><ul><li>Тестирование </li></ul><ul><li>Предостережения </li></ul><ul><li>Советы </li></ul><ul><li>Источники информации </li></ul>
  7. 7. Архитектура <ul><li>Groovy выполняется на любой Java машине, начиная с 1.5. </li></ul><ul><li>Он имеет полную интеграцию с Вашим кодом и для его запуска нужно всего несколько его библиотек. </li></ul>
  8. 8. Содержание <ul><li>Введение </li></ul><ul><li>Предполагаемые области применения </li></ul><ul><li>Архитектура </li></ul><ul><li>Преимущества </li></ul><ul><li>Примеры кода </li></ul><ul><li>Взаимодействие с Java </li></ul><ul><li>Применение </li></ul><ul><ul><li>BA ( сервер ) </li></ul></ul><ul><ul><li>HS </li></ul></ul><ul><ul><li>EKS </li></ul></ul><ul><li>Тестирование </li></ul><ul><li>Предостережения </li></ul><ul><li>Советы </li></ul><ul><li>Источники информации </li></ul>
  9. 9. Преимущества <ul><li>Очень простой и мощный синтаксис </li></ul><ul><ul><li>Построчный вывод файла </li></ul></ul><ul><ul><li>def number=0 </li></ul></ul><ul><ul><li>new File ('test.groovy').eachLine { line -> </li></ul></ul><ul><ul><li>number++ </li></ul></ul><ul><ul><li>println &quot;$number: $line&quot; </li></ul></ul><ul><ul><li>} </li></ul></ul><ul><ul><li>Возможность писать «на Java » ( в случае, если только начинаете изучать язык ) </li></ul></ul><ul><ul><li>Синтаксис языка, можно сказать, предназначен для работы с иерархичными и вложенными структурами данных ( XML, деревья данных) </li></ul></ul>
  10. 10. Преимущества <ul><li>Наличие всего, что есть в Java + ещё кое-чего… </li></ul>
  11. 11. Содержание <ul><li>Введение </li></ul><ul><li>Предполагаемые области применения </li></ul><ul><li>Архитектура </li></ul><ul><li>Преимущества </li></ul><ul><li>Примеры кода </li></ul><ul><li>Взаимодействие с Java </li></ul><ul><li>Применение </li></ul><ul><ul><li>BA ( сервер ) </li></ul></ul><ul><ul><li>HS </li></ul></ul><ul><ul><li>EKS </li></ul></ul><ul><li>Тестирование </li></ul><ul><li>Предостережения </li></ul><ul><li>Советы </li></ul><ul><li>Источники информации </li></ul>
  12. 12. Примеры кода
  13. 13. Примеры кода
  14. 14. Примеры кода
  15. 15. Примеры кода
  16. 16. Примеры кода
  17. 17. Примеры кода
  18. 18. Примеры кода
  19. 19. Примеры кода
  20. 20. Примеры кода
  21. 21. Примеры кода
  22. 22. Примеры кода
  23. 23. Примеры кода
  24. 24. Примеры кода
  25. 25. Примеры кода
  26. 26. Примеры кода
  27. 27. Примеры кода
  28. 28. Примеры кода
  29. 29. Примеры кода
  30. 30. Примеры кода
  31. 31. Примеры кода
  32. 32. Примеры кода
  33. 33. Содержание <ul><li>Введение </li></ul><ul><li>Предполагаемые области применения </li></ul><ul><li>Архитектура </li></ul><ul><li>Преимущества </li></ul><ul><li>Примеры кода </li></ul><ul><li>Взаимодействие с Java </li></ul><ul><li>Применение </li></ul><ul><ul><li>BA ( сервер ) </li></ul></ul><ul><ul><li>HS </li></ul></ul><ul><ul><li>EKS </li></ul></ul><ul><li>Тестирование </li></ul><ul><li>Предостережения </li></ul><ul><li>Советы </li></ul><ul><li>Источники информации </li></ul>
  34. 34. Взаимодействие с Java <ul><li>Ваши классы Java полностью доступны из Groovy </li></ul><ul><li>Groovy классы могут быть созданы и вызваны из кода Java </li></ul><ul><li>Классы и скрипты Groovy компилируются в java классы перед выполнением </li></ul><ul><li>Groovy и java имеют общие примитивные и базовые классы </li></ul><ul><li>Можно полностью контролировать все параметры загрузчика классов Groovy и контролировать его работу </li></ul>
  35. 35. Содержание <ul><li>Введение </li></ul><ul><li>Предполагаемые области применения </li></ul><ul><li>Архитектура </li></ul><ul><li>Преимущества </li></ul><ul><li>Примеры кода </li></ul><ul><li>Взаимодействие с Java </li></ul><ul><li>Применение </li></ul><ul><ul><li>BA ( сервер ) </li></ul></ul><ul><ul><li>HS </li></ul></ul><ul><ul><li>EKS </li></ul></ul><ul><li>Тестирование </li></ul><ul><li>Предостережения </li></ul><ul><li>Советы </li></ul><ul><li>Источники информации </li></ul>
  36. 36. Применение. BA ( сервер ) <ul><li>Вся валидация документов (проверка корректности заполнения) реализована на Groovy – ему передаются все необходимые параметры для проверка + «хвосты» для извлечения дополнительной информации. </li></ul><ul><li>Для валидации используется серия скриптов – каждый проверяет свою специфику. Скрипты выполняются один за другим (в соответствии с лексическим порядком их имён), до обнаружения ошибки, либо до окончания списка – в этом случае документ считается прошедшим валидацию. </li></ul>
  37. 37. Применение. BA ( сервер ) <ul><li>Вся авторизация документов (проверка допустимости действий) реализована на Groovy – ему передаются все необходимые параметры для проверка + «хвосты» для извлечения дополнительной информации. </li></ul><ul><li>Для авторизации используется дерево скриптов, сгруппированных по типам объектов, на которые проводится авторизация. </li></ul>
  38. 38. Применение. HS <ul><li>В модуле HS (hetero search) Groovy скрипты используются для извлечения и связывания информации, хранящейся в модуле поиска (где-то по одному идентификатору ищется пользователь, где-то - справочник). </li></ul><ul><li>Так же они используются для пред подготовки данных для индексирования и реализации специфичных видов поиска – таких как атрибутивный (в этом случае проводится серия внутренних запросов, результаты которых объединяются). </li></ul>
  39. 39. Применение. EKS <ul><li>На Groovy в EKS (ядро докумкентооборота) реализована вся логика для каждого конкретного маршрута, типа документа и его жизненного цикла. </li></ul><ul><li>Процесс настройки бизнес-логики заключается в изменении кода, который производит анализ входящих XML для создания инструкций для ядра (в том же XML). </li></ul><ul><li>Создание ответов о состоянии документов, так же производится с помощью «настроенного» Groovy скрипта. </li></ul>
  40. 40. Содержание <ul><li>Введение </li></ul><ul><li>Предполагаемые области применения </li></ul><ul><li>Архитектура </li></ul><ul><li>Преимущества </li></ul><ul><li>Примеры кода </li></ul><ul><li>Взаимодействие с Java </li></ul><ul><li>Применение </li></ul><ul><ul><li>BA ( сервер ) </li></ul></ul><ul><ul><li>HS </li></ul></ul><ul><ul><li>EKS </li></ul></ul><ul><li>Тестирование </li></ul><ul><li>Предостережения </li></ul><ul><li>Советы </li></ul><ul><li>Источники информации </li></ul>
  41. 41. Тестирование <ul><li>Тестирование скриптов легко может производиться как самими скриптами, так и Java кодом </li></ul><ul><li>Поддерживается JUnit 4 и все его аннотации (+ расширения типа сравнения массивов) </li></ul><ul><li>Существуют все средства для реализации Mock’ ов (включая встроенные типа Expando- объекта и « as » - оператора) </li></ul><ul><li>Сами скрипты могут быть использованы для тестирования Java кода (это у них может выполняться иногда быстрее и нагляднее, чем с использованием самого Java кода) </li></ul>
  42. 42. Содержание <ul><li>Введение </li></ul><ul><li>Предполагаемые области применения </li></ul><ul><li>Архитектура </li></ul><ul><li>Преимущества </li></ul><ul><li>Примеры кода </li></ul><ul><li>Взаимодействие с Java </li></ul><ul><li>Применение </li></ul><ul><ul><li>BA ( сервер ) </li></ul></ul><ul><ul><li>HS </li></ul></ul><ul><ul><li>EKS </li></ul></ul><ul><li>Тестирование </li></ul><ul><li>Предостережения </li></ul><ul><li>Советы </li></ul><ul><li>Источники информации </li></ul>
  43. 43. Предостережения <ul><li>Используйте Groovy там, где он полезен, а не там, где он может быть применён </li></ul><ul><li>Не используйте излишнюю типизацию без необходимости (например объявлять тип переменных) – это может затруднить тестирование (подстановка Mock’ ов) и дальнейшую разработку (замена исполнителя) </li></ul><ul><li>Следите за именами свойств и методами, которые вызываются ( object.size != object.size()) </li></ul><ul><li>Изучите модель приведения типов в groovy и работу “closure” ( иначе однажды вместо массива с одним элементом к Вам придёт один элемент ) </li></ul>
  44. 44. Содержание <ul><li>Введение </li></ul><ul><li>Предполагаемые области применения </li></ul><ul><li>Архитектура </li></ul><ul><li>Преимущества </li></ul><ul><li>Примеры кода </li></ul><ul><li>Взаимодействие с Java </li></ul><ul><li>Применение </li></ul><ul><ul><li>BA ( сервер ) </li></ul></ul><ul><ul><li>HS </li></ul></ul><ul><ul><li>EKS </li></ul></ul><ul><li>Тестирование </li></ul><ul><li>Предостережения </li></ul><ul><li>Советы </li></ul><ul><li>Источники информации </li></ul>
  45. 45. Советы <ul><li>Используйте def вместо явных типов </li></ul><ul><li>Используйте closure – это делает код более понятным и компактным </li></ul><ul><li>Изучите GPath и другие средства извлечения информации из сложных объектов в Groovy – это сильно облегчит вашу работу </li></ul><ul><li>Заглядывайте иногда в GTK – там содержится множество готовых методов для расширенных объектов Groovy </li></ul>
  46. 46. Содержание <ul><li>Введение </li></ul><ul><li>Предполагаемые области применения </li></ul><ul><li>Архитектура </li></ul><ul><li>Преимущества </li></ul><ul><li>Примеры кода </li></ul><ul><li>Взаимодействие с Java </li></ul><ul><li>Применение </li></ul><ul><ul><li>BA ( сервер ) </li></ul></ul><ul><ul><li>HS </li></ul></ul><ul><ul><li>EKS </li></ul></ul><ul><li>Тестирование </li></ul><ul><li>Предостережения </li></ul><ul><li>Советы </li></ul><ul><li>Источники информации </li></ul>
  47. 47. Источники информации <ul><li>http://groovy.codehaus.org – on-line учебник по Groovy , свежая информация от разработчиков, форум , JIRA и последние версии </li></ul><ul><li>Книга « Groovy in Action » - подходит для изучения с «нуля» (имеется в Confluence ) </li></ul>

×