Перейти к основному содержимому

Простые приложения на Groovy

Разработчику Архитектору

Простые приложения на Groovy

Groovy — динамический язык на JVM: лаконичный синтаксис, GString, встроенный JSON (JsonSlurper), удобные File API. Запуск: groovy script.groovy.

Как запускать примеры из главы

  1. Команда: groovy имя.groovy
  2. Нужно: 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 — простые приложения

См. также

Другие статьи этого же раздела в боковом меню (как на странице «О разделе»).