아파치 그루비
Apache Groovy![]() 그루비 로고 | |
패러다임 | 멀티패러다임: 객체 지향, 명령어, 기능, 애스펙트 지향, 스크립트 |
---|---|
설계자 | 제임스 스트래찬 |
개발자 | 기욤 라포르주(PMC 체어) 요헨 테오도로우(테크 리더) 폴 킹 세드릭 샹보 |
처음 등장한 | 전( |
안정된 릴리스 | 4.0.2 (2022년 4월 [1] [±] | , 전 (
프리뷰 릴리즈 | 4.0.0-beta-1 / 2021년 9월 6일; [1] 전( |
타이핑 분야 | 다이내믹, 스태틱, 스트롱, 오리 |
플랫폼 | 자바 SE |
면허증. | Apache 라이센스 2.0 |
파일 이름 확장자 | .groovy, .gvy, .gy, .gsh [2] |
웹 사이트 | groovy-lang |
주요 구현 | |
그래들, 그래일스 | |
영향을 받다 | |
Java, Python, Ruby, Smalltalk | |
영향받은 | |
코틀린 |
Apache Groovy는 Java 플랫폼용 Java 구문 호환 객체 지향 프로그래밍 언어입니다.Python, Ruby, Smalltalk와 유사한 기능을 가진 정적 및 동적 언어입니다.Java Platform용 프로그래밍 언어 및 스크립트 언어로 사용할 수 있으며 Java Virtual Machine(JVM; Java 가상 머신) 바이트 코드로 컴파일되어 다른 Java 코드 및 라이브러리와 심리스하게 상호 운용됩니다.Groovy는 Java 구문과 유사한 곱슬브래킷 구문을 사용합니다.Groovy는 닫힘, 여러 줄의 문자열 및 문자열에 포함된 식을 지원합니다.Groovy의 파워의 대부분은 주석을 통해 트리거되는 AST 변환에 있습니다.
Groovy 1.0은 2007년 1월 2일에, Groovy 2.0은 2012년 7월에 출시되었습니다.버전 2 이후 Groovy는 정적으로 컴파일할 수 있으며,[3][4] Java와 유사한 유형 추론 및 성능을 제공합니다.Groovy 2.4는 [5]Pivotal Software의 후원으로 2015년 3월에 종료된 마지막 메이저 릴리스입니다.그 후 Groovy는 Apache Software [6]Foundation의 Project Management Committee로 거버넌스 구조를 변경했습니다.
역사
James Strachan은 2003년 [7]8월 블로그에서 그루비의 개발에 대해 처음 언급했다.2004년 3월 그루비는 JCP에 JSR 241로[8] 제출되어 투표로 승인되었다.2004년과 2006년 사이에 몇 가지 버전이 출시되었습니다.Java Community Process(JCP; Java 커뮤니티 프로세스) 표준화 작업이 시작된 후 버전 번호가 변경되어 "1.0"이라는 이름의 버전이 2007년 1월 2일에 출시되었습니다.다양한 베타 및 출시 후보들이 1.1을 기록한 후, 2007년 12월 7일 그루비 1.1 파이널이 출시되었고, 즉시 그루비 1.5로 번호가 변경되었다.
2007년 Groovy는 JAX 2007 이노베이션 [9]어워드에서 1위를 차지했습니다.2008년에는 Groovy Web 프레임워크인 Grails가 JAX 2008 이노베이션 [10]어워드에서 2위를 차지했습니다.
2008년 11월에 Spring Source는 Groovy and Grails 회사(G2One)[11]를 인수했습니다.2009년 8월에 VMware는 Spring [12]Source를 인수했습니다.
2012년 4월 Spec Lead는 8년간의 활동 중단 후 JSR 241의 상태를 휴면 [8]상태로 변경했습니다.
Strachan은 2007년 [citation needed]그루비 1.0이 출시되기 1년 전에 이 프로젝트를 묵묵히 떠났다.2016년 10월 Strachan은 "나는 여전히 그루비(젠킨스 파이프라인이 너무 그루비해!)", 자바, 고, 타이프스크립트, 코틀린을 사랑한다"[13]고 말했다.
2012년 7월 2일, Groovy 2.0이 출시되었으며, 여기에는 정적 컴파일과 정적 유형 검사가 추가되었다.
2013년 4월에 EMC Corporation(EMC)과 VMware가 Pivotal Software의 합작회사를 분사했을 때 Groovy와 Grails는 제품 포트폴리오의 일부를 구성했습니다.Pivotal은 2015년 [5]4월부터 Groovy와 Grails의 후원을 중단했습니다.같은 달 Groovy는 인큐베이터를 [6]통해 지배구조를 Codehouse 저장소에서 Apache Software Foundation의 Project Management Committee(PMC; 프로젝트 관리 위원회)로 변경했습니다.Groovy는 Apache의 인큐베이터를 졸업하고 2015년 [14]11월에 최상위 프로젝트가 되었습니다.
특징들
대부분의 유효한 Java 파일은 유효한 Groovy 파일이기도 합니다.두 언어는 비슷하지만, Java가 필요로 하는 [15]모든 요소가 필요하지 않기 때문에 그루비 코드는 더 콤팩트할 수 있습니다.이것은 자바 프로그래머들이 그루비 프로그래밍 숙어를 [16]더 습득하기 전에 익숙한 자바 구문에서 시작하여 그루비를 점차적으로 배울 수 있게 한다.
Java에서 사용할 수 없는 Groovy 기능에는 정적 타이핑과 동적 타이핑이 모두 포함됩니다(키워드 사용).def
) 연산자 오버로드, 목록 및 관련 배열 네이티브 구문(표준), 정규 표현 네이티브 지원, 다형 반복, 문자열 보간, 추가 도우미 메서드 및 세이프 네비게이션 연산자 ?.
null 포인터를 자동으로 체크합니다(예:variable?.method()
, 또는variable?.field
를 참조해 주세요.[17]
버전 2 Groovy는 모듈 방식도 지원하므로(프로젝트 요구에 따라 필요한 항아리만 출하할 수 있으므로 Groovy 라이브러리의 크기를 줄일 수 있음), 유형 확인, 정적 컴파일, 프로젝트 코인 구문 향상, 멀티태치 블록 및 지속적인 성능 향상 기능을 사용하여invokedynamic
Java [18]7에서 도입된 명령입니다.
Groovy는 XML 및 HTML과 같은 다양한 마크업 언어에 대한 네이티브 지원을 제공하며 인라인 문서 객체 모델(DOM) 구문을 통해 구현됩니다.이 기능을 통해 균일하고 간결한 구문 및 프로그래밍 [citation needed]방법론을 통해 다양한 유형의 이기종 데이터 자산을 정의하고 조작할 수 있습니다.
Java와 달리 Groovy 소스 코드 파일은 (컴파일되지 않은) 스크립트로 실행할 수 있습니다.클래스 정의 외부에 코드가 포함되어 있거나 메인 메서드를 사용하는 클래스이거나 Runnable 또는 GroovyTestCase인 경우입니다.Groovy 스크립트는 실행 전에 완전히 구문 분석, 컴파일 및 생성됩니다(Python 및 Ruby와 유사).이는 후드 아래에서 발생하며 컴파일된 버전은 프로세스의 [19]아티팩트로 저장되지 않습니다.
GroovyBeans, 속성
GroovyBeans는 JavaBeans의 Groovy 버전입니다.Groovy는 암묵적으로 게터와 세터를 생성합니다.다음 코드에서는setColor(String color)
그리고.getColor()
은 암묵적으로 생성됩니다.색상에 직접 액세스 하는 것처럼 보이는 마지막 두 줄은 실제로 암묵적으로 생성된 [20]메서드를 호출합니다.
학급 AGroovyBean { 스트링 색. } 방어하다 마이 그루비빈 = 신규 AGroovyBean() 마이 그루비빈.setColor(컬러 설정)('베이비 블루') 주장하다 마이 그루비빈.getColor(컬러)() == '베이비 블루' 마이 그루비빈.색. = '피터' 주장하다 마이 그루비빈.색. == '피터'
Groovy는 Java의 배열 구문을 [21]연상시키는 단순하고 일관된 구문을 제공합니다.
방어하다 무비 리스트 = [데르수 우잘라, '란', 일곱 명의 사무라이] // 배열처럼 보이지만 목록입니다. 주장하다 무비 리스트[2] == 일곱 명의 사무라이 무비 리스트[3] = '카사블랑카' // 목록에 요소를 추가합니다. 주장하다 무비 리스트.크기() == 4 방어하다 month Map = [ '1월' : 31, '2월' : 28, '마치 : 31 ] // 맵을 선언합니다. 주장하다 month Map['마치] == 31 // 엔트리에 액세스합니다. month Map[에이프릴] = 30 // 지도에 엔트리를 추가합니다. 주장하다 month Map.크기() == 4
시제품 확장
Groovy는 다음을 통해 프로토타입 확장을 지원합니다.ExpandoMetaClass
확장 모듈(Groovy 2에만 해당), Objective-C와 유사한 카테고리 및DelegatingMetaClass
를 클릭합니다.[22]
ExpandoMetaClass
는 도메인 고유의 언어(DSL)를 제공하여 Ruby의 오픈 클래스 개념과 마찬가지로 클래스 변경을 쉽게 표현합니다.
번호.메타클래스 { sqrt = { 수학.sqrt(위임하다) } } 주장하다 9.sqrt() == 3 주장하다 4.sqrt() == 2
Groovy의 각 속성/메서드 호출은 메타클래스 레지스트리를 통해 이루어지기 때문에 프로토타이핑을 통한 Groovy의 코드 변경은 Java에서 볼 수 없습니다.변경된 코드는 Java에서 메타클래스 레지스트리로 이동해야만 액세스할 수 있습니다.
Groovy는 또한 다음과 같은 오버라이드 메서드를 허용합니다.getProperty()
,propertyMissing()
특히, 개발자는 오브젝트에 대한 콜을 대행 수신하고 액션을 지정할 수 있습니다.다음 코드는 클래스를 활성화합니다.java.lang.String
에 응답하다hex
속성:
열거하다 색. { 블랙입니다.('#000000'), 하얀색('#FFFF'), 빨간.('#FF0000'), 파랑색('#0000FF') 스트링 16진수 색.(스트링 16진수) { 이것..16진수 = 16진수 } } 스트링.메타클래스.getProperty = { 스트링 소유물 -> 방어하다 스트링 컬러 = 위임하다 한다면 (소유물 == '실패') { 색..가치().발견하다 { 그것.이름.().equals Ignore Case 스트링 컬러 }?.16진수 } } 주장하다 "흰색".16진수 == "#FFFF" 주장하다 '파랑'.16진수 == "#0000FF" 주장하다 "검은색".16진수 == "#000000" 주장하다 "녹색".16진수 == 무효
Grails 프레임워크는 메타프로그래밍을 광범위하게 사용하여 다음과 같은 GORM 동적 검색기를 활성화합니다.User.findByName('Josh')
기타 [23]등등.
점과 괄호
Groovy의 구문은 일부 상황에서 괄호와 점을 생략할 수 있습니다.다음 그루비 코드
가지고 가다(커피.).와 함께(설탕, 우유).그리고.(술)
라고 쓸 수 있다
가지고 가다 커피. 와 함께 설탕, 우유 그리고. 술
일반 영어처럼 보이는 도메인 고유 언어(DSL)를 개발할 수 있습니다.
기능 프로그래밍
그루비는 대부분 객체 지향 언어이지만 기능적인 프로그래밍 기능도 제공합니다.
폐쇄
Groovy의 문서에 따르면: "Groovy의 클로저는 '메서드 포인터'와 유사하게 작동하여 나중에 코드를 작성하고 실행할 수 있습니다."[24]Groovy의 폐쇄는 자유 변수, 즉 명시적으로 매개 변수로 전달되지 않은 변수를 지원하지만 선언 컨텍스트, 부분 적용('카레링'[25]이라고 함), 위임, 암묵적, 유형화 및 유형화되지 않은 매개 변수에 존재한다.
결정된 유형의 컬렉션에서 작업할 때 컬렉션에서 작업에 전달된 닫힘을 유추할 수 있습니다.
목록. = [1, 2, 3, 4, 5, 6, 7, 8, 9] /* * 0이 아닌 숫자는 true로 강제되므로 % 2 == 0(짝수)이면 false입니다. * 암묵적인 "it" 매개 변수의 유형은 IDE에서 Integer로 추론할 수 있습니다. * 다음과 같이 쓸 수도 있습니다. * 리스트.findAll { 정수 i -> i % 2 } * 리스트.find All { i - > i % 2 } */ 방어하다 승산 = 목록..모두 검색 { 그것 % 2 } 주장하다 승산 == [1, 3, 5, 7, 9]
표현식 그룹은 구현을 참조하지 않고 폐쇄 블록에 쓸 수 있으며 위임을 사용하여 나중에 응답 개체를 할당할 수 있습니다.
// 이 코드 블록에 구현에 대한 참조가 없는 식이 포함되어 있습니다. 방어하다 조작 = { 선언하다 5 합 4 나누다 3 인쇄물 }
/* * 이 클래스는 위의 클로징에서 사용할 수 있는 작업을 처리합니다.다른 클래스 * 같은 방법을 사용한다고 선언할 수 있지만, 예를 들어 웹 서비스 조작을 사용합니다. * 계산 시. */ 학급 표현 { 빅데시멀 가치 /* * Integer는 파라미터로 전달되지만 Big Decimal로 강제됩니다. * 정의되어 있습니다.클래스에 'declare(integer value)' 메서드가 있는 경우 대신 이 메서드가 사용됩니다. */ 방어하다 선언하다(빅데시멀 가치) { 이것..가치 = 가치 } 방어하다 합(빅데시멀 추가할 값) { 이것..가치 += 추가할 값 } 방어하다 나누다(빅데시멀 제수) { 이것..가치 /= 제수 } 방어하다 속성 누락(스트링 소유물) { 한다면 (소유물 == 인쇄) 인쇄 가치 } }
// 위 코드 블록의 식에 응답할 사용자를 정의합니다. 조작.위임하다 = 신규 표현() 조작()
카레시
일반적으로 부분 [25]애플리케이션이라고 하는 이 그루비 기능을 사용하면 모든 인수의 폐쇄 매개변수를 기본 매개변수로 설정하여 바운드 값을 사용하여 새 폐쇄를 만들 수 있습니다.1개의 인수를 에 제공하다curry()
메서드는 인수 1을 수정합니다.N개의 인수를 지정하면 인수 1이 수정됩니다.n.
방어하다 TwoWords With Symbol에 참여 = { 기호., 첫번째, 둘째 -> 첫번째 + 기호. + 둘째 } 주장하다 TwoWords With Symbol에 참여('#', '안녕하세요', '세계') == 'Hello # World' 방어하다 concat Words(콘캣 워드) = TwoWords With Symbol에 참여.카레시(' ') 주장하다 concat Words(콘캣 워드)('안녕하세요', '세계') == 'Hello World' 방어하다 프리펜드 헬로 = concat Words(콘캣 워드).카레시('안녕하세요') //def prependHello = joinTwoWordsWithSymbol.curry(' ' , '안녕하세요') 주장하다 프리펜드 헬로('세계') == 'Hello World'
카레는 역방향(마지막 N개 인수 수정)으로도 사용할 수 있습니다.rcurry()
.
방어하다 힘 = { 빅데시멀 가치, 빅데시멀 힘 -> 가치**힘 } 방어하다 광장 = 힘.rcury(2) 방어하다 입방체 = 힘.rcury(3) 주장하다 힘(2, 2) == 4 주장하다 광장(4) == 16 주장하다 입방체(3) == 27
또한 Groovy는 느린 평가,[26][27] 축소/접기,[28] 무한 구조 및 [30]불변성 [29]등을 지원합니다.
JSON 및 XML 처리
JavaScript Object Notation(JSON) 및 XML 처리에서 Groovy는 Builder 패턴을 채택하여 데이터 구조를 보다 상세하게 만듭니다.예를 들어 다음과 같은 XML이 있습니다.
<timeout> <language year="timeout"> <name> </name> </timeout> 객체 지향 </timeout> </timeout> </timeout> </timeout> </language> <language year="time"> <name>Ruby<, /name>,<>paradigm>, 기능, 개체 oriented<, /paradigm>, <, typing>, 오리 타이핑 dynamic<, /typing>,<>/language>,<>언어 year="2003년">,<>name>을 말한다.Groovy<, /name>,<>paradigm>, 기능, 개체 oriented<, /paradigm>, <, typing>, 오리 타이핑, 동적, static<, /typing>,<>/language>,<>/languages>을 말한다.
다음 Groovy 코드를 통해 생성할 수 있습니다.
방어하다 작가. = 신규 StringWriter() 방어하다 빌더 = 신규 그루비.xml.마크업빌더(작가.) 빌더.언어들 { 언어(연도: 1995) { 이름. 자바 패러다임 "객체 지향" 타자 치기 '정적" } 언어 (연도: 1995) { 이름. '루비 패러다임 "기능적, 객체 지향적" 타자 치기 "다이나믹 타이핑" } 언어 (연도: 2003) { 이름. "그루비" 패러다임 "기능적, 객체 지향적" 타자 치기 "타이핑, 동적, 정적" } }
또한 스트리밍 방식으로 처리할 수 있습니다.StreamingMarkupBuilder
구현을 JSON으로 변경하려면MarkupBuilder
로 교환할 수 있다JsonBuilder
를 클릭합니다.[31]
해석하고 기능하는 언어를 검색하려면 그루비의findAll
메서드는 다음 기능을 수행합니다.
방어하다 언어들 = 신규 Xml슬러퍼().해석 텍스트 작가..문자열() // 다음은 Groovy의 matcher(=~)에 대한 regex 구문을 채택한 것입니다. // boolean value: 값에 문자열이 포함되어 있으면 true, 포함되지 않으면 false 중 하나입니다. 방어하다 기능하다 = 언어들.언어.모두 검색 { 그것.패러다임 =~ 기능하고 있다 } 주장하다 기능하다.모으다 { 그것.이름. } == ["그루비", '루비]
문자열 보간
Groovy에서는 GString을 [32]사용하여 변수와 식을 사용하여 문자열을 보간할 수 있습니다.
빅데시멀 계좌 = 10.0 방어하다 본문 = "계정은 현재 $account 잔액을 보여줍니다." 주장하다 본문 == "계정은 현재 10.0의 잔액을 나타내고 있습니다."
변수와 식이 포함된 GString은 큰따옴표를 사용하여 선언해야 합니다.
복잡한 표현식은 대괄호로 묶어야 합니다.이로 인해, 그 일부가, 식에 속하지 않고, 주변 문자열에 속하는 것으로 해석되지 않게 됩니다.
빅데시멀 마이너스 = 4.0 본문 = "계정에는 현재 ${account - - - - }의 잔액이 표시되어 있습니다." 주장하다 본문 == "계정은 현재 6.0의 잔액을 나타내고 있습니다." // 식을 분리하는 괄호가 없으면 다음과 같이 됩니다. 본문 = "계정은 현재 $account-----의 잔액을 나타내고 있습니다." 주장하다 본문 == "계정 잔액은 현재 10.0 - 마이너스입니다."
식 평가는 화살표 구문을 사용하여 연기할 수 있습니다.
빅데시멀 세금 = 0.15 본문 = "계정은 현재 ${->계정*tax}의 잔액을 나타내고 있습니다." 세금 = 0.10 // GString 신고 후 tax 값이 변경되었습니다.표현 // 변수는 식을 실제로 평가해야 하는 경우에만 바인딩됩니다. 주장하다 본문 == "계정은 현재 9.000의 잔액을 나타내고 있습니다."
추상 구문 트리 변환
Groovy의 자체 문서에 따르면, "Groovy 컴파일러가 Groovy 스크립트와 클래스를 컴파일할 때, 프로세스 중 어느 시점에 소스 코드는 구체적인 구문 트리의 형태로 메모리에 나타나 추상 구문 트리로 변환됩니다.AST Transformations의 목적은 개발자가 컴파일 프로세스에 접속하여 AST가 JVM에 의해 실행되는 바이트 코드로 변환되기 전에 수정할 수 있도록 하는 것입니다.AST Transformations는 Groovy에게 향상된 컴파일 시간 메타프로그래밍 기능을 제공하여 런타임 성능 없이 언어 수준에서 강력한 유연성을 제공합니다.'오렌스 벌칙'[33]입니다.
Groovy의 AST 예는 다음과 같습니다.
- 카테고리 및 믹스인 변환
- 불변 AST 매크로
- 변환의 신규화
- 싱글톤 변환
다른 것들 중에.
특성들
Groovy의 문서에 따르면, "트레이츠는 동작의 구성, 인터페이스의 런타임 구현, 동작 오버라이드, 정적 유형 검사/컴파일과의 호환성을 가능하게 하는 언어의 구조 구조입니다."
특성은 기본 구현과 상태를 모두 포함하는 인터페이스로 볼 수 있습니다.특성은 다음 키워드를 사용하여 정의됩니다.
특성 비행성 { /* 특성 선언 */ 스트링 날다() { "난 날고 있어!" } /* 특성 내 메서드 선언 */ }
그 후, 키워드를 사용해 통상의 인터페이스와 같이 사용할 수 있습니다.implements
:
학급 새 용구 비행성 {} /* Bird 클래스의 기능에 FlyingAbility 특성을 추가합니다.* / 방어하다 새 = 신규 새() /* 새 새 인스턴스화 */ 주장하다 새.날다() == "난 날고 있어!" /* Bird 클래스는 FlyingAbility 특성의 동작을 자동으로 가져옵니다.*/
특성은 간단한 구성부터 테스트까지 광범위한 능력을 허용합니다.
도입
Groovy 도입의 주목할 만한 예는 다음과 같습니다.
- Adaptavist ScriptRunner는 Groovy 구현을 통해 전 [34][35]세계 2만 개 이상의 조직이 사용하고 있는 Atlassian 툴을 자동화 및 확장합니다.
- Apache OFBiz는 오픈소스 ERP(Enterprise Resource Planning) 시스템으로서 Groovy를 [36][37]사용합니다.
- 클라우드 관리 시스템인 Eucalyptus는 상당한 양의 그루비를 사용합니다.
- Gradle은 Groovy를 사용한 인기 빌드 자동화 도구입니다.
- LinkedIn은 Groovy와 Grails를 일부 [38]서브시스템에 사용합니다.
- 클라우드 기반 모니터링 플랫폼인 Logic Monitor는 스크립트 기반 데이터 [39]소스에 Groovy를 사용합니다.
- Jenkins는 지속적인 통합을 위한 플랫폼입니다.버전 2에서 Jenkins는 Groovy로 [40]빌드 명령을 작성할 수 있는 파이프라인 플러그인을 포함합니다.
- 라이프레이, 케일오 워크플로우에서 그루비를 사용합니다.
- Sky.com은 Groovy와 Grails를 사용하여 대규모 온라인 [41]미디어 콘텐츠를 제공하고 있습니다.
- Smart Things는 스마트 홈 및 소비자 사물 인터넷용 오픈 플랫폼이며 보안 지향 서브셋을 사용합니다[42].
- SoapUI는 웹 서비스 테스트 [43]개발을 위한 언어로 Groovy를 제공합니다.
- 시장조사 스타트업인 서바타는 그루비와 그라일을 [citation needed]사용한다.
- 유럽특허청(EPO)은 Groovy에서 데이터플로우 프로그래밍 언어를 개발하여 "각국의 특허청과 통신하기 위한 프로세스의 유사성을 활용하고 이를 하나의 보편적인 [citation needed]프로세스로 변환합니다."
- Groovy는 어떤 JVM 환경에도 통합할 수 있지만 JBoss Seam 프레임워크는 Java 외에 Groovy를 [44]개발 언어로 바로 제공합니다.
- vCalc.com는 수학 크라우드 [45]소싱 엔진의 모든 사용자 정의 수학에 Groovy를 사용합니다.
- Wired.com은 [46]웹 사이트의 제품 리뷰 섹션에 Groovy와 Grails를 사용하고 있습니다.
- XWiki SAS는 공동 오픈 소스 [47]제품에서 Groovy를 스크립트 언어로 사용합니다.
IDE 지원
많은 통합 개발 환경(IDE) 및 텍스트 편집기가 Groovy를 지원합니다.
- Android Studio, Android 앱을 만드는 데 사용되는 IDE
- ATOM 에디터
- 그루비-이클립스를 통과하는 이클립스
- 이맥스, 그루비 에맥스 모드프로젝트의 그루비 모드를 사용합니다.
- IntelliJ IDEA, 커뮤니티 에디션, Grails/Griffon Ultimate 에디션만
- JDeveloper, Oracle ADF와 함께 사용
- jEdit, Java 플랫폼용 고급 텍스트 편집기
- KDE의 고급 텍스트 편집기인 Kate는 Groovy와 200개 이상의 다른 파일 형식을 지원합니다.
- NetBeans, 버전 6.5 이후
- Microsoft Windows용 고급 텍스트 편집기인 Notepad++
- 크로스 플랫폼 텍스트 편집기 Sublime Text
- 텍스트메이트
- Visual Studio 코드
- UltraEdit, 범용 프로그램 에디터
사투리
Groovy의 다른 구현은 다음과 같습니다.
- Grooscript는 Groovy 코드를 JavaScript [48]코드로 변환합니다.Grooscript는 Apache Groovy에 비해 몇 가지 제한이 있지만 서버와 [49]클라이언트 모두에서 도메인 클래스를 사용할 수 있습니다.Grailes 버전 3.0에 대한 플러그인 지원 및 온라인 코드 [50]변환이 제공됩니다.
「 」를 참조해 주세요.
- 프로그래밍 언어 비교
- Griffon (프레임워크)– 데스크톱 프레임워크
- 프로젝트 제로
- 스팍(테스트 프레임워크)
레퍼런스
인용문
- ^ a b "Releases - apache/groovy". Retrieved 2022-05-11 – via GitHub.
- ^ "Groovy Goodness: Default Groovy Script File Extensions".
- ^ "Groovy 2.0 Performance compared to Java". 25 Aug 2012.
- ^ "Java vs Groovy2.0 vs Scala Simple Performance Test". 10 Jul 2012. Archived from the original on 10 December 2012. Retrieved 7 October 2012.
- ^ a b "Groovy 2.4 And Grails 3.0 To Be Last Major Releases Under Pivotal Sponsorship". 19 Jan 2015.
- ^ a b "Groovy joins Apache Incubator". 11 Mar 2015.
- ^ James Strachan (29 Aug 2003). "Groovy - the birth of a new dynamic language for the Java platform". Archived from the original on 1 September 2003.
- ^ a b "Java Community Process JSR 241".
- ^ "Groovy wins first prize at JAX 2007 innovation award". 2007-04-26. Archived from the original on 2015-05-13. Retrieved 2012-10-07.
- ^ "They say a lot can happen over a cup of coffee". Archived from the original on 2011-04-19. Retrieved 2012-10-07.
- ^ "SpringSource Acquires Groovy and Grails company (G2One)". 11 Nov 2008.
- ^ "VMWare Acquires SpringSource". 10 Aug 2009.
- ^ "Tweet from James Strachan". November 24, 2016. Retrieved 2016-11-24.
- ^ "Announcement on dev mailing list".
- ^ 쾨니그 2007, 32페이지
- ^ "Groovy style and language feature guidelines for Java developers". Groovy.codehaus.org. Archived from the original on 2015-01-17. Retrieved 2015-01-22.
- ^ "Groovy – Differences from Java". Groovy.codehaus.org. Archived from the original on 2009-03-17. Retrieved 2013-08-12.
- ^ "What's new in Groovy 2.0?". 28 Jun 2012.
- ^ 쾨니그 2007, 37-8페이지
- ^ 쾨니그 2007, 38-9페이지
- ^ 쾨니그 2007, 페이지 41-3
- ^ "JN3525-MetaClasses". Archived from the original on 2012-10-01. Retrieved 2012-10-07.
- ^ "Metaprogramming Techniques in Groovy and Grails". 11 Jun 2009.
- ^ "Groovy - Closures". Archived from the original on 2012-05-22.
- ^ a b "그루비는 부분 애플리케이션을 '카레링'이라고 부릅니다", 2013년 8월 10일
- ^ "Groovy - Lazy Transformation". Archived from the original on 2012-10-08. Retrieved 2012-10-07.
- ^ "Side Notes: Lazy lists in Groovy". 3 Feb 2011.
- ^ "Groovy's Fold". 20 Jun 2011. Archived from the original on 13 February 2015. Retrieved 12 February 2015.
- ^ "Functional Programming with Groovy". 5 Nov 2011.
- ^ "Function programming in Groovy". Archived from the original on 2012-10-08. Retrieved 2012-10-07.
- ^ "JsonBuilder". Archived from the original on 2012-10-02. Retrieved 2012-10-07.
- ^ "Groovy Strings - Different ways of creating them". 26 Dec 2009.
- ^ "Compile-time Metaprogramming - AST Transformations". Archived from the original on 2012-10-14. Retrieved 2012-10-07.
- ^ "ScriptRunner Documentation".
- ^ "ScriptRunner Press Release with adoption stats".
- ^ "Groovy DSL for OFBiz business logic". Apache OFBiz Project Open Wiki.
- ^ "Simple-methods examples using Groovy". Apache OFBiz Project Open Wiki.
- ^ "Grails at LinkedIn". Retrieved 2015-06-02.
- ^ "Embedded Groovy Scripting". www.logicmonitor.com. Retrieved 2020-11-20.
- ^ "Jenkins Pipeline".
- ^ Rocher, Graeme (October 2, 2008). "Graeme Rocher's Blog: Sky.com relaunches written in Grails". Graeme Rocher's Blog. Retrieved 2015-06-02.
- ^ 새로운 스마트 홈 애플리케이션의 보안 분석
- ^ "Scripting and the Script Library Scripting & Properties". www.soapui.org. Retrieved 2015-06-02.
- ^ "Chapter 11. Groovy integration". docs.jboss.org. Retrieved 2015-06-02.
- ^ "vCalc, the First ever Social Platform for the world of Math". 4 November 2014. Retrieved 2016-05-05.
- ^ "Wired.Com" (PDF). www.springsource.org. Retrieved 2015-06-02.
- ^ "XWiki SAS" (PDF). www.springsource.org. Retrieved 2015-06-02.
- ^ "Grooscript Documentation". 12 Sep 2016. Archived from the original on 28 June 2017. Retrieved 4 July 2017.
- ^ "Presentation at SpringOne/2GX on Grooscript". 13 Dec 2015.
- ^ "Grooscript online conversions". 15 May 2017. Archived from the original on 9 July 2017. Retrieved 4 July 2017.
원천
- König, Dierk; Paul King; Guillaume Laforge; Hamlet D'Arcy; Cédric Champeau; Erik Pragt; Jon Skeet (2015). Groovy in Action, Second Edition. Manning. ISBN 978-1-935182-44-3.
- Barclay, Kenneth; John Savage (2007). Groovy Programming: An Introduction for Java Developers. ISBN 978-0-12-372507-3. Archived from the original on 2010-01-12. Retrieved 2007-07-19.
- Davis, Scott (2008). Groovy Recipes: Greasing the Wheels of Java. ISBN 978-0-9787392-9-4.
- Subramaniam, Venkat (2008). Programming Groovy: Dynamic Productivity for the Java Developer. ISBN 978-1-934356-09-8.