초보자를 위한 Groovy 스크립트 튜토리얼

그루비 스크립트란 무엇입니까?

아파치 그루비 Java 플랫폼용으로 구축된 객체 지향 및 Java 구문 호환 프로그래밍 언어입니다. 이 동적 언어에는 Python, Ruby, Smalltalk 및 Pero와 유사한 많은 기능이 있습니다. Groovy 소스 코드는 Java 바이트코드로 컴파일되어 JRE가 설치된 모든 플랫폼에서 실행될 수 있습니다. Groovy는 또한 더 민첩하고 동적으로 만드는 많은 작업을 뒤에서 수행합니다.

Groovy 언어는 Java 플랫폼용 스크립팅 언어로 사용될 수 있습니다. 이는 Java의 엔터프라이즈 기능을 제공하는 Java의 슈퍼 버전과 거의 같습니다. 또한 DSL 지원, 클로저, 동적 타이핑과 같은 다양한 생산성 기능을 제공합니다. 다른 언어와 달리 Java를 대체하는 것이 아니라 동반자로 설계되었습니다.

왜 그루비인가?

Groovy를 사용하고 배워야 하는 주요 이유는 다음과 같습니다.

  • Groovy는 민첩하고 역동적인 언어입니다.
  • 기존의 모든 Java 개체 및 라이브러리와 원활하게 통합
  • Java 개발자에게는 쉽고 자연스러운 느낌
  • 더욱 간결하고 의미 있는 코드 구성ares 자바로
  • Java 앱에서 원하는 만큼 사용할 수 있습니다.

그루비 역사

  • 2003: Bob McWhirter와 James Strachan이 개발
  • 2004: JSR 241에 위임되었으나 폐기됨
  • 2005년: Jeremy Rayner와 Guillaume Laforge가 다시 인수
  • 2007: 그루비 버전 1.0
  • 2012: 그루비 버전 2
  • 2014: Groovy 버전 2.3(JDK 8에 대한 공식 지원 제공)
  • 2015년: Groovy는 Apache Software Foundation의 프로젝트가 되었습니다.

그루비의 특징

  • 목록, 지도, 범위, 정규식 리터럴
  • 멀티메서드와 메타프로그래밍
  • Groovy 클래스와 스크립트는 일반적으로 .groovy 파일에 저장됩니다.
  • 스크립트에는 클래스 선언이 없는 Groovy 문이 포함되어 있습니다.
  • 스크립트에는 클래스 정의 외부의 메서드 정의도 포함될 수 있습니다.
  • 이는 컴파일되어 기존 Java 애플리케이션과 완전히 통합될 수 있습니다.
  • 지도, 목록, 정규식에 대한 언어 수준 지원
  • 클로저, 동적 타이핑, 메타객체 프로토콜 지원
  • 정적 및 동적 유형 지정 및 연산자 오버로딩 지원
  • 목록(배열), 맵, 범위 및 정규 표현식에 대한 리터럴 선언

그루비 설치 방법

단계 1) 당신이 가지고 있는지 확인 자바 설치.

단계 2) We Buy Orders 신청서를 클릭하세요. http://groovy-lang.org/download.html 그리고 설치 프로그램을 클릭하세요.

그루비 설치

참고: Zip 파일을 사용하거나 Eclipse IDE. 이 Groovy 튜토리얼에서는 Windows Installer를 계속 사용하겠습니다.

단계 3) 다운로드한 설치 프로그램을 실행합니다. 언어를 선택하고 확인을 클릭하세요

그루비 설치

단계 4) 시작하다. 시작 화면에서 NEXT(다음)를 클릭하세요.

그루비 설치

단계 5) 라이센스 약관에 동의

그루비 설치

단계 6) 설치하려는 구성 요소를 선택하고 NEXT(다음)를 클릭하세요.

그루비 설치

단계 7) 설치 디렉터리를 선택하고 NEXT를 클릭하세요.

그루비 설치

단계 8) 시작 메뉴 폴더를 선택하고 다음을 클릭하세요.

그루비 설치

단계 9) 설치가 완료되면 경로를 기본값으로 설정하고 NEXT(다음)를 클릭하세요.

그루비 설치

단계 10) 다음을 클릭하십시오.

그루비 설치

단계 11) 시작 메뉴에서 Groovy Console을 검색하세요.

그루비 설치

그루비 Hello World 예시

Java로 간단한 문자열 "Hello World"를 인쇄한다고 가정해 보겠습니다. Groovy hello world 문자열을 달성하는 코드는 다음과 같습니다.

public class Demo {
    public static void main(String[] args) {
        System.out.println("Hello World");
    }
}

Groovy는 Java의 상위 집합이므로 위 코드는 Java와 Groovy 모두에서 유효합니다. 그러나 Groovy의 장점은 클래스 생성, 공용 메서드 생성 등을 수행하지 않고 다음과 같이 한 줄 코드로 동일한 출력을 얻을 수 있다는 것입니다.

println "Hello World."

세미콜론은 필요하지 않습니다

괄호는 필요없습니다

System.out.println이 println으로 축소되었습니다.

그루비 변수

Java에서는 정적 바인딩이 필수입니다. 변수의 유형을 미리 선언해야 함을 의미합니다.

public class Demo {
    public static void main(String[] args) {
        int x = 104;
        System.out.println(x);
        //x = "Guru99";
    }
}

위 Groovy 튜토리얼의 예에서는 변수 유형(정수)을 키워드 “int”를 사용하여 미리 선언했습니다. 부동 소수점 숫자를 선언하려면 float 키워드를 사용합니다.

int에 문자열 값을 할당하려고 하면(5번째 줄의 주석 처리 해제) 다음과 같은 결과가 나타납니다.wing 오류

Demo.java:5: error: incompatible types: String cannot be converted to int
x = "Guru99";

반면 Groovy는 동적 타이핑을 지원합니다. 변수는 def라는 키워드를 사용하여 정의하며, 변수의 타입을 미리 선언할 필요는 없습니다. 컴파일러는 런타임 시 변수 유형을 파악하며 사용자는 변수 유형까지 파악할 수 있습니다.

다음을 고려하십시오.wing 멋진 예,

def x = 104
println x.getClass()
x = "Guru99"
println x.getClass()

출력:

class java.lang.Integer
class java.lang.String

Groovy에서는 여러 줄 문자열을 만들 수 있습니다. 문자열을 삼중따옴표로 묶었는지 확인하세요.

def x = """Groovy
at
Guru99"""
println x

출력:

Groovy
at
Guru99

주의 사항: Groovy에서는 byte, short, int, long 등과 같은 변수 유형을 계속 사용할 수 있습니다. 그러나 명시적으로 선언한 대로 변수 유형을 동적으로 변경할 수는 없습니다.

다음을 고려하십시오.wing 암호:

int x = 104
println x
x = "Guru99"

그것은 다음을 제공합니다wing 오류

104
Caught: org.codehaus.groovy.runtime.typehandling.GroovyCastException: Cannot cast object 'Guru99' with class 'java.lang.String' to class 'int'
org.codehaus.groovy.runtime.typehandling.GroovyCastException: Cannot cast object 'Guru99' with class 'java.lang.String' to class 'int'
    at jdoodle.run(jdoodle.groovy:3)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
Command exited with non-zero status 1

그루비 연산자

연산자는 컴파일러에게 특정 수학적 또는 논리적 조작을 수행하도록 지시하는 기호입니다.

Groovy에는 다음이 있습니다.wing 다섯 가지 유형의 연산자 –

  • 산술 연산자: 더하기(+), 빼기(-), 곱하기(*), 나누기(/)
  • 관계 연산자: 같음(==), 같지 않음(!=), 작음(<) 작거나 같음(<=), 보다 큼(>), 크거나 같음(>=)
  • 논리 연산자: And(&&), Or(||), Not(!)
  • 비트 연산자: And(&), Or(|), (^), Xor 또는 Exclusive-or 연산자
  • 대입 연산자: 부정 연산자(~)

그루비 루프

Java에서는 다음과 같이 루프를 정의합니다.

public class Demo {
    public static void main(String[] args) {
        for (int x = 0; x <= 5; x++) {
            System.out.println(x);
        }
    }
}

출력:

0
1
2
3
4

최대 키워드를 사용하여 Groovy에서 동일한 출력을 얻을 수 있습니다.

0.upto(4) {println "$it"}

위와 동일한 출력을 얻습니다. $it는 현재 루프의 값을 제공하는 클로저입니다.

다음을 고려하십시오.wing 암호

2.upto(4) {println "$it"}

출력을 제공합니다

2
3
4

"times" 키워드를 사용하여 동일한 출력을 얻을 수도 있습니다.

5.times{println "$it"}

0,2,4를 인쇄하고 싶다고 생각하십시오. 자바의 for 루프

public class Demo {
    public static void main(String[] args) {
        for (int x = 0; x <= 5; x=x+2) {
            System.out.println(x);
        }
    }
}

출력:

0
2
4

동일한 단계 방법을 사용할 수 있습니다

0.step(7,2){println "$it"}

Groovy- 의사결정

명세서 기만
if 문 Java와 마찬가지로 조건이 true이면 if 문이 실행됩니다.
if/else 문 if/else 문에서는 처음에 if 문에서 조건이 평가됩니다. 조건이 true이면 그 이후의 명령문을 실행합니다. else 조건 이전에 중지되고 루프에서 종료됩니다. 그러나 조건이 false이면 else 문 블록의 문을 실행합니다. 그런 다음 루프를 종료합니다.
중첩된 If 문 if 문이 여러 개 있어야 하는 경우에 사용됩니다.
Switch 문 조건이 여러 개인 경우 중첩된 if-else 문을 읽을 수 없게 될 수 있습니다. 코드를 더 읽기 쉽게 만들기 위해 스위치 문이 사용됩니다.
중첩된 Switch 문 Groovy에서는 중첩된 스위치 문을 사용할 수도 있습니다.

그루비 목록

목록 구조를 사용하면 데이터 항목 모음을 저장할 수 있습니다. Groovy 프로그래밍 언어에서 List는 일련의 객체 참조를 보유합니다. 또한 시퀀스의 위치도 표시됩니다. 목록 리터럴은 쉼표로 구분되고 대괄호로 묶인 일련의 개체로 표시됩니다.

Grrovy 목록의 예:

문자열 목록- ['Angular', 'Nodejs,]

객체 참조 목록 – ['Groovy', 2,4 2.6]

정수 값 목록 – [16, 17, 18, 19]

빈 목록- [ ]

FOLLOwing Groovy에서 사용할 수 있는 목록 방법은 다음과 같습니다.

행동 양식 상품 설명
더하다() 이 목록의 끝에 새 값을 추가할 수 있습니다.
contains () 이 목록에 특정 값이 포함되어 있으면 true를 반환합니다.
가져 오기() 지정된 위치의 요소를 반환합니다.
비었다() List에 요소가 없으면 참값을 반환합니다.
마이너스() 이 명령을 사용하면 컬렉션에 지정된 요소를 제외한 원본 요소로 구성된 새 목록을 만들 수 있습니다.
을 더한() 컬렉션에 언급된 요소와 함께 원본 요소로 구성된 새 목록을 만들 수 있습니다.
팝() 목록에서 마지막 항목을 제거합니다.
없애다() 특정 위치의 요소를 제거합니다.
역전() 원래 목록의 요소를 뒤집는 새 목록을 만듭니다.
크기() 이 목록의 요소 수를 반환합니다.
종류() 정렬된 복사본을 반환합니다.

다음을 고려하십시오.wing 그루비 스크립트 예

def y = ["Guru99", "is", "Best", "for", "Groovy"]
println y
y.add("Learning")
println(y.contains("is"))
println(y.get(2))
println(y.pop())

출력:

[Guru99, is, Best, for, Groovy]
true
Best
Learning

그루비 지도

Map Groovy는 키 값 쌍의 모음입니다.

그루비 맵의 예:

  • [Tutorial: 'Java, Tutorial: 'Groovy] – Tutorial을 키로 갖는 키-값 쌍 모음과 해당 값
  • [ : ] 빈 지도를 나타냅니다.

Groovy에서 사용할 수 있는 맵 메소드 목록은 다음과 같습니다.

행동 양식 상품 설명
포함키() 지도에 이 키가 포함되어 있는지 확인하시겠습니까?
가져 오기() 이 명령은 이 맵에서 키를 조회하고 해당 값을 반환합니다. 이 맵에서 항목을 찾지 못하면 null이 반환됩니다.
keySet () 이 지도에서 키 세트를 찾을 수 있습니다.
놓다() 지정된 값을 이 Map의 지정된 키와 연관시킵니다. 이전에 맵에 이 키에 대한 매핑이 포함된 경우. 그러면 이전 값이 지정된 값으로 대체됩니다.
크기() 키-값 매핑 수를 반환합니다.
값 () 이 명령은 값의 컬렉션 보기를 반환합니다.

그루비 예:

def y = [fName:'Jen', lName:'Cruise', sex:'F']
print y.get("fName")

산출

Jen

Groovy- 클로저

그루비 클로저는 객체로 래핑된 코드 조각입니다. 이는 메소드 또는 기능으로 작동합니다.

단순 폐쇄의 예

def myClosure = {
       println "My First Closure"	
}
myClosure()

출력:

My First Closure

클로저는 매개변수를 받아들일 수 있습니다. 식별 목록은 쉼표로 구분됩니다.

매개변수 목록의 끝을 표시하는 화살표(->)입니다.

def myClosure = {
       a,b,c->
       y = a+b+c
       println y
}
myClosure(1,2,3)

출력:

6

클로저는 값을 반환할 수 있습니다.

def myClosure = {
       a,b,c->
       return (a+b+c)
}
println(myClosure(1,2,3))

출력:

6

"It", "identity" 등과 같은 내장 클로저가 많이 있습니다. 클로저는 다른 클로저를 매개변수로 사용할 수 있습니다.

그루비 대. 자바

그루비 자바
Groovy에서는 기본 액세스 지정자가 public입니다. 이는 지정된 액세스 한정자가 없는 메서드가 공개되어 클래스 및 패키지 경계 외부에서 액세스할 수 있음을 의미합니다. Java에서 기본 액세스 한정자는 패키지입니다. 즉, 필드, 메소드 또는 클래스에 대한 액세스 한정자를 지정하지 않으면 패키지 전용이 됩니다.
클래스 멤버에 대해 Getter 및 Setter가 자동으로 생성됩니다. Java, 필드에 대한 getter 및 setter 메소드를 정의해야 합니다.
Groovy에서는 문자열에 큰따옴표를 사용하여 변수 대체를 허용합니다. Java는 변수 대체를 지원하지 않습니다.
정보 입력은 선택 사항입니다. Java에서는 정보 입력이 필수입니다.
Groovy에서는 세미콜론으로 끝날 필요가 없습니다. Java에서는 모든 명령문이 세미콜론으로 끝납니다.
Groovy는 자동으로 모든 프로그램에 대해 Script라는 래핑 클래스입니다. Java에서는 클래스를 실행 가능하게 만들려면 main 메소드가 필요합니다.

그루비에 관한 신화

신화 현실
스크립트 작성에만 Groovy를 사용할 수 있습니다. 스크립팅에 사용할 수 있습니다. 그러나 그 외에도 많은 다른 작업을 수행할 수 있습니다.
Groovy는 클로저에 관한 모든 것입니다. “그냥 함수형 프로그래밍 언어. " Groovy는 Lisp 또는 Closure와 같은 함수형 프로그래밍 언어를 채택합니다.
Groovy는 TDD를 수행하려는 경우 이상적인 선택입니다. 이 진술은 사실입니다. 그러나 이것이 Groovy를 사용하는 유일한 이유는 아닙니다.
Grails를 사용하려는 경우에만 Groovy를 사용할 수 있습니다. Grails는 강력한 웹 개발 프레임워크입니다.

그러나 Groovy는 그 이상을 제공합니다.

Groovy 사용의 단점

  • JVM 및 Groovy 스크립트 시작 시간이 느려서 OS 수준 스크립팅이 제한됩니다.
  • Groovy는 다른 커뮤니티에서는 완전히 허용되지 않습니다.
  • IDE를 사용하지 않고 Groovy를 사용하는 것은 불편합니다.
  • Groovy는 느려질 수 있어 개발 시간이 늘어납니다.
  • Groovy에는 많은 메모리가 필요할 수 있습니다.
  • Java에 대한 지식이 필수적입니다.

그루비 도구

이 Groovy 스크립트 튜토리얼에서는 3가지 중요한 도구에 대해 논의하겠습니다.

1. groovysh: 대화형으로 코드를 실행합니다.

2. groovyConsole: 대화형 코드 실행을 위한 GUI

3. groovy: 그루비 스크립트를 실행합니다. 다음과 같이 사용할 수 있습니다. , Python

그루비쉬

  • 명령줄 셸
  • Groovy 코드를 대화식으로 실행하는 데 도움이 됩니다.
  • 명령문이나 전체 스크립트를 입력할 수 있습니다.

그루비 도구

그루비 콘솔

  • Swing 최소한의 Groovy 개발 편집기 역할을 하는 인터페이스입니다.
  • Groovy 코드와 상호 작용할 수 있습니다.
  • Groovy 스크립트 파일을 로드하고 실행하는 데 도움이 됩니다.

그루비 도구

그루비

Groovy 프로그램과 스크립트를 실행하는 프로세서입니다. 유

간단한 Groovy 표현식을 테스트하는 데 사용할 수 있습니다.

그루비 도구

요약

  • Groovy는 Java 플랫폼에 사용되는 객체지향 프로그래밍 언어입니다.
  • Groovy 스크립팅은 기존의 모든 Java 객체 및 라이브러리와의 원활한 통합을 제공합니다.
  • Bob McWhirter와 James Strachan은 2003년에 그루비를 개발했습니다.
  • 목록, 지도, 범위, 정규식 리터럴은 Groovy의 중요한 기능입니다.
  • Groovy에서 지원하는 네 가지 유형의 연산자는 1. 관계형 2.논리형 3. 비트별 4. 할당입니다.
  • Groovy는 if, if/else, Nested if, switch, Netsted 스위치 문을 사용하여 의사결정을 수행했습니다.
  • 목록 구조를 사용하면 데이터 항목 모음을 저장할 수 있습니다.
  • Map Groovy는 키 값 쌍의 모음입니다.
  • Groovy에서는 클래스 멤버에 대해 Getter 및 Setter가 자동으로 생성됩니다.
  • Java에서는 필드에 getter 및 setter 메소드 제공을 사용할 수 있습니다.
  • Groovy에 대한 가장 큰 오해는 Groovy가 올바르지 않은 스크립팅에만 사용할 수 있다는 것입니다.
  • 언젠가는 Groovy가 느려져 개발 시간이 늘어날 수 있습니다.
  • 세 가지 Groovy 도구는 코드를 실행하는 groovysh, 대화형 코드 실행을 위한 GUI인 groovy Console, 스크립트를 실행하는 groovy입니다.