Goovy Java가 2019년 Groovy를 사용한 10가지 이유


왜 멋있어?
제가 회사에 입사한 DevOps팀은 이미 1년이 되었습니다. 우리가 사용하는 주요 도구 중 하나는 Jenkins입니다. Groovy와 잘 지내고 있습니다.나는 주로 Groovy를 사용하여 파이프를 편성하고 무료한 작업을 자동화한다.
Groovy는 강력한 자바 플랫폼 언어로 모든 자바 프로그램과 순조롭게 통합할 수 있다.그것 또한 강력하고 배우기 쉬운 각본 언어이다.

[Groovy is] aimed at improving developer productivity thanks to a concise, familiar and easy to learn
syntax
. It integrates smoothly with any Java program, and immediately delivers to your application
powerful features, including scripting capabilities, Domain-Specific Language authoring,
runtime and compile-time meta-programming and functional programming.


다음은 제가 지난 1년 동안 배운 Groovy를 사랑하게 된 10가지 특성입니다.

1. 간단하다
자바 백엔드 개발팀에서 왔기 때문에 Groovy를 배우는 것은 나에게 쉬운 일이다.Java 표준 라이브러리에 구축되어 추가 기능을 제공합니다.그것들 중 대다수는 프로그래밍을 더욱 간단하게 한다.

1.1 신고 명세서/지도
Groovy는 선택할 수 있는 언어로 def 키워드 설명 변수를 사용할 수 있습니다.예를 들어 성명 목록이나 지도는 매우 간단하다.
def myList = []
def myMap = [:]

1.2 목록/지도 교체
클립을 사용하여 교체하는 것은 매우 쉽고 읽을 수 있습니다.
myList.each {element -> 
    println element
}

myMap.each {entry -> 
    println "User: $entry.user | Email: $entry.email"
}

2. 문자열 보간

[String] Interpolation is the act of replacing a placeholder in the string with its value upon evaluation of the string.


Groovy에서 점선 표현식에 대해 점위부호가 ${}에 둘러싸이거나 $를 접두사로 한다.
앞의 코드 세션에서 우리는 문자열 삽입값의 예시를 볼 수 있다.하지만 하나 더:
try{
    throw new Exception()
}catch(Exception e){
    println "Error during operation. Cause: ${e}"
}

3. 주조
Groovy는 as 조작부호를 사용하여 강제 변환을 매우 쉽고 읽기 쉽게 합니다.이 조작수를 사용하려면 강제 형식이 이루어져야 합니다 asType() 방법입니다.리스트, 매거진 등 표준 클래스에 대해서는 이미 이런 상황이 발생했다.
예를 들면 다음과 같습니다.
enum Employee {
    MIKE,
    HANNA
}

String name = "JOHN"

try{
    name as Employee
}catch(Exception e){
    println "Could not find employee ${name}. Cause: ${e}"
}

4.클래스 제이슨
Json 응답이 있는 웹 서비스를 자주 사용하기 때문에 Groovy 클래스에 응답을 비추는 것은 불가피합니다.이것은 Groovy가 자체로 가지고 있는 것으로 매우 간단하다. 클래스 구조 함수를 통해 Json을 전달하면 된다.
String response = '{name:"John", position: "Developer", age: 32}'

// Json response to map
def employeeMap = new JsonSlurper().parseText(response)
// Consider an Employee class with the attributes name, position and age
Employee employee = new Employee(employeeMap)
이렇게우리는 방금 Json 문자열에서 employee 대상을 구축했다.
다른 방법도 마찬가지로 간단하다.
def json = JsonOutput.toJson(employee)
// json == '{name:"John", position: "Developer", age: 32}'

5. 단언
Groovy는 자바와 같은 assert 문장을 가지고 있지만, 기능이 더 강하기 때문에 자바의 이름은 파워 단언이다.
단언이 false로 해석되었을 때의 출력과 다르다.예를 들면 다음과 같습니다.
def contacts = ['John', 'Anna']

assert contacts.isEmpty()

//Output:
//ERROR org.codehaus.groovy.runtime.powerassert.PowerAssetionError:
//assert contacts.isEmpty()
//       |        |
//       |        false
//       [John, Anna]
이것은 당신이 단언에 실패한 원인이 무엇인지 매우 쉽게 이해할 수 있게 한다.

6. 변수 정의
Groovy는 선택할 수 있는 형식입니다. 이 형식은 변수를 정의할 수 있거나 키워드 def 만 사용할 수 있음을 의미합니다.이것은 성명 목록이나 맵에 적용될 때 선택할 수 있습니다.예를 들면 다음과 같습니다.
String name
int age
def address
List friends = ['John', 'Anna']
Map family = ['Mother':'Mary', 'Father':'Joseph']

def getFamilyMember("Mother"){ ... }
Javascript를 아는 사람에게 이것은 키워드var와 유사하다.
이것은 너에게 믿을 수 없는 유연성을 주지만, 사용할 때는 조심해야 한다.이것은 팀이나 코드를 사용하는 다른 사람들로 하여금 예상한 입력이나 출력을 읽고 이해하기 어렵게 할 수 있습니다.

7. 산열
자바를 사용한 적이 있다면, 제3자 라이브러리를 사용하지 않는 한 산열 문자열이 얼마나 지루한지 알 수 있습니다.
Groovy 2.5는 String류에 유용한 방법을 제공했다.산열을 계산하는 것은 문자열을 호출하는 방법처럼 간단하다.Groovy를 사용하면 다음과 같이 간단해집니다.
def password = "thisIsMyPassword"

def md5 = password.md5()
def sha256 = password.sha256()
//For other algorithms use digest() method
def sha1 = password.digest('SHA-1')
...

8. 조작원
Groovy는 다른 언어에서 가장 흔히 볼 수 있는 연산자를 지원합니다.그러나 그것만으로는 부족하다. Groovy는 더 재미있는 조작부호를 제공했다.다음은 다음과 같습니다.

엘비스 교환원
이것은 삼원 연산자의 비교적 짧은 버전이다.예를 들어, 조건의 계산 결과가null일 수 있을 때, 이것은 매우 유용하다.
// Instead of this
def user = person.name ? person.name : 'Guest'
// Use this
def user = person.name ?: 'Guest'

안전 항법 조종사
변수가null인지 확인할 수 있는 또 다른 연산자는 보안 네비게이션 연산자입니다.
def user = person?.name
// user == null
NullPointerExceptions를 피하려면 이 연산자를 사용하십시오. 접근할 대상이null이면, 이 연산자는 던지기 null 가 아니라 NullPointerException 로 되돌아옵니다.

전파 계산기
spread 조작부호 ((.*) 는 집합된 모든 항목에 대해 실행하는 데 사용되며, 우리가 이전에 보았던 것처럼 순환이나 클립을 사용하지 않습니다.예를 들면 다음과 같습니다.
def numbers = [1,2,3,4,5,6]
*numbers // == [1,2,3,4,5,6]

def people = [
    new Person(name: 'John', age: '25'),
    new Person(name: 'Anna', age: '21')
]

def friends = people*.name // friends = ['John', 'Anna']

특질

Traits are a structural construct of the language which allows:

  • composition of behaviors

  • runtime implementation of interfaces

  • behavior overriding

  • compatibility with static type checking/compilation


나는traits를 하나의 인터페이스로 보는 것을 좋아한다. 여기서 너는 진정으로 방법을 실현할 수 있다.매우 복잡하고 구조화된 응용 프로그램이 있고 깔끔하게 유지하고 싶을 때 매우 유용하다.
이것은 절대로 내가 초기 자바에서 놓친 것이다.
다음 예는 다음과 같습니다.
trait Sociable {
    void greet() { println "Hello!" }
}

class Person implements Sociable {}

Person p = new Person()
p.greet() // Hello!

10. 정규 표현식
Groovy 본체는 정규 표현식을 지원하며 매우 간단합니다.정규 표현식 연산자는 다음과 같습니다.
  • ~ 이것은 모드 연산자로서 java.util.regex.Pattern 실례를 만드는 간단한 방법입니다.
  • def pattern = ~"^abc{2}\d"
    // pattern instanceof Pattern == true
    
  • =~ 이것은find 연산자입니다. 문자열에서 패턴을 찾아서 되돌려줍니다 Matcher:
  • def pattern = ~"abc{2}\d"
    def found = "abcc5" =~ pattern
    // found instanceof Matcher == true
    
  • 마지막으로 일치 연산자==~가 있고 문자열이 정규 표현식과 엄격하게 일치하면 되돌아오기true:
  • def found = "abcc5" ==~ pattern
    // found == true
    

    결론
    만약 당신이 여러 해 동안 자바나 다른 OOP 언어로 프로그래밍을 해 왔다면, Groovy는 마치 신선한 공기를 들이마신 것 같다.
    그것은 일을 더욱 간단하고 간단하게 할 뿐만 아니라, 그다지 지루하지 않게 한다.여기에 스크립트와 특정 분야의 언어 기능 등 추가 기능까지 더해져 Groovy를 새로운 수준으로 끌어올리고 낡은 언어에 부족한 새로운 외관을 제공했다.
    나는 네가 이 문장이 매우 재미있다고 생각하기를 바란다. 만약 네가 Groovy에 대해 어떤 경험이 있고 그것을 어떻게 사용하는지, 아래의 평론에서 나에게 알려주십시오.:)

    좋은 웹페이지 즐겨찾기