Groovy 기본

Groovy란?

  • JVM에서 실행되는 스크립트 언어이다.
  • 문법이 Java에 매우 비슷하다.
  • Java와 호환이 되며 Java 클래스 파일을 그대로 Groovy 클래스로 사용할 수 있다.
  • 2003년에 처음 공개되었으며 2015년부터 아파치 소프트웨어 재단이 관리하고 있다.

Groovy 활용

  • Gradle 스크립트는 Groovy 또는 Kotlin으로 작성되는데, Java 프로젝트에서는 주로 Groovy가 사용된다.
  • 테스트 코드로도 작성에도 활용된다.

Hello World

class HelloWorld {
   static void main(String[] args) {
      println 'Hello World'
   }
}

실행 결과:

Hello World

생략 가능한 구문들

라이브러리 추가 (Import Statement)

아래 객체는 자동으로 임포트되기에 생략할 수 있다.

import java.lang.* 
import java.util.* 
import java.io.* 
import java.net.* 

import groovy.lang.* 
import groovy.util.* 

import java.math.BigInteger 
import java.math.BigDecimal

세미클론 (Semicolons)

Groovy에서는 세미콜론이 필수가 아니어서 생략할 수 있다.

println 'hello';
println 'hello'

메소드 (Parentheses)

Groovy에서는 메소드를 호출시에 괄호(())를 생략할 수 있다.

println('hello')
println 'hello'

반환 타입과 키워드 (Return Type and the return Keyword)

Groovy에서는 리턴 타입을 명시할 필요도 없고, 메소스 마지막 줄에서 리턴 키워드를 사용할 필요도 없다.

def getPi() {
    3.14
}

assert getPi() in BigDecimal
assert getPi() == 3.14

Getters and Setters

Groovy에서는 Getter와 Setter를 명시적으로 정의할 필요가 없다.

class Person {
    String firstName
    String lastName
 
    def getName() {
        firstName + ' ' + lastName
    }
 
    static void main(args) {
        def person = new Person()
        person.firstName = 'Kwan Young'
        person.lastName = 'Shin'
        assert person.firstName == 'Kwan Young'
        assert person.lastName == 'Shin'
        println person.getName()
    }
}

접근 제어자 (Access Modifiers)

Java에서 접근 제어자를 생략할 경우 해당 패키지내에서만 접근이 가능하게 되지만, Groovy에서는 생략될 경우에는 public으로 인식된다.

체크 예외 (Checked Exceptions)

Java에서는 IOException과 같은 Checked 예외를 처리하기 위해서 try/catch 문으로 감싸줘야 했지만 Groovy에서는 Checked 예외들이 RunTimeException 으로 감싸지므로 try/catch 문을 적용할 필요가 없다.

출처: https://springsource.tistory.com/85 [Rednics Blog]

데이터 타입 추론

Groovy는 변수 선언시에 데이터 타입을 지정할 수도 있지만, def라는 키워드를 사용하여 데이터 타입을 추론 즉 생략 가능하다.

String message = 'hello'
def message = 'hello'

API

문자열 (String)

Groovy에서 문자열을 표기하는 방법은 작은 따움표(')와 큰 따움표(")가 있다.

  • 작은 따옴표(')

    • 단순한 문자열을 출력하는 사용된다.
  • 큰 따옴표(')

    • 문자열을 출력하는데 사용되며, 문자열 내부에 $변수를 이용해서 동적인 내용을 표시할 수 있다.
  • 여래행

    • 여러 줄을 사용하고 싶다면, 작운 따움표 3개로 열고 닥기(''' ''') 또는 큰 따움표 3개 열고 닫기(""" """)를 사용한다.

분기문

def age = 19
def person = (age < 19)? '성인': '청소년'
println("$person입니다.")

참조