Groovy

문상우·2023년 7월 14일
0
post-thumbnail

Groovy란?

❗ JVM(Java Virtual Machine)에서 실행되는 동적 프로그래밍 언어이다.

Groovy는 Java와 유사한 구문을 사용하며, JVM 위에서 동작하기에 Java와 호환이 가능하다. 문법이 매우간결하며 빌드 관리 도구인 Gradle Script를 작성하기 위해 사용된다.
하지만, Kotlin이 나온 이후부터는, Gradle을 Kotlin으로 구성하는 추세이다.
Java 생태계의 대부분을 차지하고 있는 Android 및 Spring이 Kotlin으로 작성하고 있는 만큼, Kotlin에 대한 이해는 높지만, Groovy 언어에 대한 이해는 높지 않기 때문이다.


결정적으로, Groovy는 별도로 프로젝트를 구성하지 않으면 자동으로 완성이 안된다. 이러한 문제로 요즘은 자동완성이 되는 Kotlin으로 빌드 스크립트를 작성하는 추세이다.


주요기능 및 특징

  1. 동적 언어
    • Groovy는 동적으로 타입을 결정하고, 동적으로 코드를 실행할 수 있다.
    • 이로 인해 유연하고 간결한 코드 작성이 가능하다.
  2. 자바와의 호환성
    • Groovy는 Java와 완전히 호환되며, Java 라이브러리를 그대로 사용할 수 있다.
    • 기존의 Java 코드를 Groovy로 마이그레이션하는 것도 비교적 간단하다.
  3. 생산성
    • Groovy는 자바와 유사한 문법을 가지고 있다.
    • 추가적인 문법 요소를 통해 코드의 가독성과 생산성을 향상시킨다.
    • 예로, 동적 리스트 생성, 문자열 보간(interpolation), 클로저(closer) 등의 문법을 지원한다.
    • Null 안정성을 포함한 다양한 기능을 제공하여 보다 안전한 코드 작성이 가능하다.
  4. DSL(Domain-Specific Language) 지원
    • Groovy는 내부 DSL을 작성하는데 강력한 지원을 제공한다.
    • 이를 통해 특정 도메인에 특화된 언어를 작성할 수 있다.
  5. 메타 프로그래밍
    • 런타임에 코드를 생성하고 수정할 수 있다.
    • 메타클래스를 사용하여 동적으로 클래스를 확장하거나 메서드를 추가할 수 있다.
  6. 통합 테스트
    • 단위 테스트와 통합 테스트를 위한 강력한 기능을 제공한다.
    • Spock과 같은 테스트 프레임워크를 사용하여 보다 쉽고 간결하게 테스트 코드를 작성할 수 있다.
  7. 강력한 컬렉션
    • 향샹된 컬렉션 API를 제공하여 데이터를 다루는 작업을 더 편리하게 할 수 있다.
    • 예로, 리스트, 맵, 집합 등의 컬렉션을 보다 쉽게 다룰 수 있는 메서드를 제공한다.

간단한 Groovy 예시 코드

class Person {
		String name
		int age

		void sayHello() {
				println "Hello, I'm ${name}!"
		}
}

def person = new Person(name: "John", age: 25)
person.sayHello()

결론

자바 개발자들에게 보다 편리하고 생산적인 개발 경험을 제공할 수 있는 언어라는 생각이 들었다. 또한, Java와의 호환성과 유연성을 통해 기존 Java 코드와의 통합이 용이하고, 강력한 문법과 기능을 제공하여 개발자의 생산성을 높일 수 있다.
하지만, 현재 대세인,, Kotlin을 이길 수 있을까,, 타입의 안전성 부분과 Null 처리 측면에서 대규모 프로젝트에는 Kotlin이 월등하다고 생각이 들고, Gradle Script도 기존에 Groovy로 작성된 것이 많아 아직 빠르게 Kotlin으로 변하지 않고 있는 것이지, 언젠가는 Kotlin으로 모두 변환될 것 같다.

profile
평범한 대학생의 코딩일기

0개의 댓글