Простые приложения на Groovy
Простые приложения на Groovy
Groovy — динамический язык на JVM: лаконичный синтаксис, GString, встроенный JSON (JsonSlurper), удобные File API. Запуск: groovy script.groovy.
Как запускать примеры из главы
- Команда:
groovy имя.groovy - Нужно: JDK + Groovy (
groovy -version).
Генератор паролей
Как запустить
- Файл:
password.groovy - Команда:
groovy password.groovy
import java.security.SecureRandom
def generatePassword(int len = 16) {
def chars = ('a'..'z') + ('A'..'Z') + ('0'..'9') + '!@#$%^&*'
def rnd = new SecureRandom()
(1..len).collect { chars[rnd.nextInt(chars.size())] }.join()
}
println generatePassword()
Сортировщик файла
def sortFile(input, output) {
def lines = new File(input).readLines('UTF-8')
.collect { it.trim() }
.findAll { it }
.sort()
new File(output).text = lines.join('\n') + '\n'
}
Калькулятор
def calc(a, b, op) {
switch (op) {
case '+': return a + b
case '-': return a - b
case '*': return a * b
case '/': return b ? a / b : null
default: return null
}
}
JSON-трекер
import groovy.json.JsonSlurper
import groovy.json.JsonOutput
def db = new File('tasks.json')
def load() { db.exists() ? new JsonSlurper().parse(db) : [] }
def save(tasks) { db.text = JsonOutput.prettyPrint(JsonOutput.toJson(tasks)) }
def tasks = load()
tasks << [id: System.currentTimeMillis(), title: 'Изучить Groovy', done: false]
save(tasks)
HTTP (HttpURLConnection)
def url = new URL('https://example.com')
def conn = url.openConnection()
conn.requestMethod = 'GET'
println conn.inputStream.text.take(200)
Характерный пример — GString и замыкания
def greet = { name -> "Привет, $name!" }
['Анна', 'Борис'].each { println greet(it) }
GString и each — типичный «скриптовый» стиль Groovy на JVM.
См. также: Gradle · Java — простые приложения
См. также
Другие статьи этого же раздела в боковом меню (как на странице «О разделе»). Краткая хронология Groovy на JVM — от идеи James Strachan до ниши Gradle, Jenkins и Spock. Groovy — язык для JVM: тот же байт-код и библиотеки Java, но короче синтаксис, замыкания и скрипты. Набор советов, правил, принципов и обычаев в разработке на этом языке. Макросы на уровне языка (начиная с Groovy 2.5) — groovy.transform.Macro позволяет инжектить код, основываясь на анализе AST. Статическая и динамическая типизация в Groovy, примитивы JVM, строки GString, коллекции, диапазоны и ключевые операторы def, as, instanceof. Операторы и выражения в Groovy - арифметика, логика и выразительный синтаксис поверх JVM-экосистемы. Циклы и управляющие конструкции Groovy - императивные и декларативные способы описания логики выполнения. В этом примере greet — это переменная, содержащая замыкание. Замыкание принимает один параметр name и выводит приветствие. Вызов greet(Groovy) выполняет код внутри замыкания. Нет проверяемых исключений — компилятор Groovy игнорирует механизм throws, принятый в Java. Динамическая типизация, метапрограммирование, AST-трансформации, DSL, работа с XML и JSON, синтаксический сахар и интеграция с Java. Кавычки, скобки, замыкания, switch, регулярные выражения и truthiness в Groovy. Groovy использует все ключевые слова Java и добавляет собственные для упрощения синтаксиса. Справочник разделён на логические группы для удобства использования.История языка Groovy
Что требуется знать перед началом изучения языка программирования Groovy
Рекомендации по разработке на Groovy
Основы языка Groovy
Типы данных и объявление переменных
Операторы и выражения в Groovy
Циклы и управляющие конструкции
Объектно-ориентированное программирование в Groovy
Иерархия исключений в Groovy
Особенности и расширения языка Groovy
Синтаксис и пунктуация в Groovy
Ключевые слова языка Groovy