Groovy — чек-лист
Чек-лист самопроверки
- Что такое Groovy и для каких задач он предназначен?
- Как Groovy связан с JVM и Java?
- Насколько Groovy совместим с Java? (
==, GString,def, вызов из Java) — см. статью 20 - Как запустить Groovy-скрипт из командной строки?
- Что такое GDK (Groovy Development Kit)?
- Как объявляются переменные в Groovy? Обязательны ли типы?
- Что такое ключевое слово
defи когда его использовать? - Как работают строки — обычные, GString (
"Hello $name"), многострочные? - Что такое безопасная навигация (
?.) и Elvis-оператор (?:)? - Как работают списки и карты без явного объявления (
[],[:])? - Какие есть способы итерации по коллекциям (
each,for,collect,findAll)? - Что такое замыкания в Groovy и как они записываются?
- Как передавать замыкание как аргумент методу?
- Что такое оператор распространения (
*.method())? - Как работает оператор диапазона (
1..10)? - Как объявляется класс в Groovy?
- Обязательны ли геттеры и сеттеры? Как они генерируются?
- Что такое свойства (
properties) в Groovy? - Как работают конструкторы по умолчанию с именованными параметрами?
- Что такое
@ToString,@EqualsAndHashCode,@TupleConstructor? - Как работает наследование в Groovy?
- Поддерживает ли Groovy интерфейсы и абстрактные классы?
- Что такое трейты (
trait) и чем они отличаются от интерфейсов? - Как работают исключения в Groovy?
- Можно ли опускать блок
catchилиfinally? - Что такое метапрограммирование во время выполнения (
metaClass)? - Как добавить метод к существующему классу динамически?
- Что такое категориальные методы (
useblock)? - Как работает статическое метапрограммирование (AST Transformations)?
- Что делают аннотации
@TypeCheckedи@CompileStatic? - Как обрабатывать JSON в Groovy (
JsonSlurper,JsonBuilder)? - Как работать с XML (
XmlSlurper,MarkupBuilder)? - Как выполнять SQL-запросы (
Sql.newInstance,eachRow)? - Что такое Grape и как им управлять зависимости в скриптах?
- Как писать unit-тесты на Groovy (Spock, JUnit)?
- Что такое спецификации в Spock и как они структурированы (
given,when,then)? - Как Groovy используется в Gradle (build.gradle)?
- Что такое делегация в замыканиях (
Closure.DELEGATE_FIRST)? - Как создавать DSL с помощью Groovy?
- Как работают регулярные выражения (
~/pattern/,=~,==~)? - Что такое оператор "в" (
in) и как он работает с коллекциями? - Как вызывать методы с именованными параметрами?
- Что такое мультиприсваивание (
(a, b) = [1, 2])? - Как работают операторы сравнения (
==вызываетequals, а неis)? - Как управлять видимостью методов (
publicпо умолчанию)? - Как сериализовать объекты в Groovy?
- Как отлаживать Groovy-скрипты в IDE?
- Как компилировать Groovy в байт-код (
groovyc)? - Как интегрировать Groovy-классы в Java-проект?
- Какие инструменты используются для статического анализа Groovy-кода (CodeNarc)?
Где искать ответы в разделе
| Темы | Статьи |
|---|---|
| JVM, история, Gradle | История языка Groovy, Синтаксические конструкции Groovy |
| Java ↔ Groovy | Сравнение Java и Groovy |
def, типы, GString | Типы данных и объявление переменных |
?., ?:, ==, диапазоны | Операторы и выражения в Groovy |
for, each, while | Циклы и управляющие конструкции |
| Классы, traits, замыкания | Объектно-ориентированное программирование в Groovy |
| metaClass, AST, JSON/XML | Особенности и расширения языка Groovy, Основы языка Groovy |
Gradle DSL, DELEGATE_FIRST | 11 § делегирование, 3 § замыкания |
| Spock, тесты | 3 § Spock, Синтаксические конструкции Groovy |
| SQL, GORM | Работа с базами данных из Groovy |
GDK, collect, файлы | Встроенные функции и метапрограммирование, 3 § GDK |
| Исключения | Иерархия исключений в Groovy |
Стиль, @CompileStatic | Рекомендации по разработке на Groovy |
Полный указатель: справочник.