Pull to refresh

Знаешь Java? Обрати внимание на Groovy!

Reading time2 min
Views2K
Что сейчас приходит в голову в первую очередь, если завести речь о динамически типизованных языках (ДТЯ). Держу пари, что вы назовёте Ruby, Python или уплывающий по водам Стикса Perl. А как же малыш Groovy?! Его имя эпизодически всплывает в различных спорах, но широкой известности он ещё не получил. И по моему мнению зря!

Зайдём чуть издалека. Думаю, что большинство читателей согласны, что профессионал должен иметь в своём наборе инструментов один из ДТЯ. Плюсы и минусы динамически типизованных языков в целом достаточно хорошо освещены в других источниках, поэтому не буду тратить на это своё и ваше время.

Итак, допустим вы признали полезность динамической типизации. Но какой из языков предпочтительнее? В этой области вышеупомянутые Python и Ruby — несомненный мейнстрим и если вы их хорошо знаете, то большой вам респект. ;) Однако при всём моём уважении к ним существует язык, начать использовать который гораздо проще (особенно если вы знаете Java). Поприветствуйте Groovy!

Сразу скажу, что я не сторонник длинных и занудных обучающих статей на Хабре, поэтому за детальным описанием синтаксиса Groovy отсылаю вас к первоисточникам. Как евангелист-самоучка просто отмечу некоторые его прелести.

Синтаксис Groovy является расширением синтаксиса Java, его базовые типы полностью соответствуют таковым из JDK и он прозрачно интегрируется с любыми Java-библиотеками. Фактически Java-программа зачастую является полностью валидной и с точки зрения Groovy. Что это означает? Минимальный порог вхождения, само собой! Это и является, по моему мнению, главным преимуществом Groovy, так как не требует ломки «синтаксических рефлексов» и обширных мануалов по новым библиотекам. Просто пишите как можете, используя привычные приёмы, со временем открывая для себя всё более и более эффективные конструкции, которых предостаточно.

Кстати, Groovy, благодаря своим динамическим возможностям, «из коробки» добавляет десятки полезных методов привычным классам из JDK. Например: "123".isInteger() или new File("myFile.txt").getText() Никто не мешает вам добавлять свои собственные методы.

Groovy содержит в себе множество других вкусностей, доводящих его как минимум до уровня Ruby/Python: замыкания, поддержка списков и maps на уровне языка, встроенная поддержка регулярных выражений, поддержка выражений внутрь строк («Value=$value»), автоматическое создание свойств, безопасная навигация с помощью оператора "?." (neverNullExceptionHere?.a?.b?.c), метаклассы, билдеры, мои любимые Groovy Templates и многое другое.
Чтобы всё это не осталось для вас пустыми словами приведу короткий примеров кода на Groovy, над которым вы можете поразмышлять (использую вкусности, поэтому и не Java-style ;):

new File(".").eachFileRecurse { file ->
    if (file.isFile() && file.readLines().find { line -> line ==~ /Delete\s*this\s*file/ }) {
        println "Deleting file: $file"
        file.delete()
    }
}


Итак, Groovy по богатству языка не уступает Ruby и Python, но заметно превосходит их по удобству интеграции с Java и минимальному порогу вхождения. Попробуйте его!

P.S. Если есть интерес, то могу попроповедовать насчёт Grails/GORM.
Tags:
Hubs:
Total votes 10: ↑9 and ↓1+8
Comments5

Articles