Комментарии (1)
🐱
claude-haiku-4.5PrepBro AI22 мар. 2026 г.(ред.)
Ответ сгенерирован нейросетью и может содержать ошибки
# Разница между Groovy и Java
Groovy - это динамический язык, который работает на JVM и полностью совместим с Java. Он объединяет мощь Java с простотой и удобством динамических языков типа Python.
Основные различия
1. Типизация: Static vs Dynamic
Java (строго типизирован):
public class Example {
public static void main(String[] args) {
String name = "John";
int age = 30;
// name = 42; // ОШИБКА компилятора!
}
}
Groovy (динамически типизирован):
def name = "John" // Тип выводится
def age = 30 // Integer
name = "Alice" // OK
name = 42 // OK - переназначение типа
2. Синтаксис
Java:
List<String> names = new ArrayList<>();
names.add("Alice");
names.add("Bob");
for (String name : names) {
System.out.println(name.toUpperCase());
}
Groovy (компактнее):
List<String> names = ["Alice", "Bob"]
names.each { name ->
println name.toUpperCase()
}
3. Getters и Setters
Java (многовато кода):
public class Person {
private String name;
private int age;
public String getName() { return name; }
public void setName(String name) { this.name = name; }
}
Person p = new Person();
p.setName("John");
System.out.println(p.getName());
Groovy (автоматические):
class Person {
String name
int age
}
def p = new Person()
p.name = "John" // Автоматические getters/setters
println p.name
4. Списки и Map
Java:
List<String> list = new ArrayList<>();
list.add("a");
list.add("b");
Map<String, Integer> map = new HashMap<>();
map.put("key1", 1);
Groovy:
def list = ["a", "b", "c"]
def map = [key1: 1, key2: 2]
println list[0] // "a"
println map.key1 // 1
5. Строки с интерполяцией
Java:
String name = "John";
String message = "Name: " + name;
Groovy (GString):
def name = "John"
def message = "Name: $name" // GString интерполяция
def next = "Next year: ${age + 1}"
6. Safe Navigation Operator
Java:
String name = null;
if (name != null && name.length() > 0) {
System.out.println(name);
}
Groovy:
def name = null
println name?.length() // null (не ошибка!)
def username = name ?: "Guest" // Elvis оператор
7. Методы
Java:
public int add(int a, int b) {
return a + b;
}
Groovy:
def add(a, b) {
a + b // Неявное возвращение
}
Сравнительная таблица
| Функция | Java | Groovy |
|---|---|---|
| Типизация | Static | Dynamic |
| Синтаксис | Verbose | Concise |
| Getters/Setters | Явные | Автоматические |
| Производительность | Быстро | Медленнее |
| Null handling | Много проверок | Safe navigation |
| Использование | Production | Build/Test/Scripts |
Где используется Groovy
Gradle (Build Tool)
plugins {
id 'java'
}
dependencies {
implementation 'junit:junit:4.13.2'
}
Spock (Testing)
class MathSpec extends Specification {
def "1 + 1 should equal 2"() {
expect:
1 + 1 == 2
}
}
Jenkins (CI/CD)
pipeline {
agent any
stages {
stage('Build') {
steps { sh 'mvn clean install' }
}
}
}
Когда использовать
Java:
- Production приложения
- Максимальная производительность
- Enterprise системы
- Type safety критична
Groovy:
- Build scripts (Gradle)
- Тестирование (Spock)
- Automation и scripting
- Rapid prototyping
- DSL (Domain-Specific Languages)
Заключение
Groovy - это мощный язык для быстрой разработки и automation, но медленнее Java. На практике их часто используют вместе: Java для production, Groovy для build scripts, tests и CI/CD.