답변:
Groovy 는 동적으로 형식이 지정된 언어로 구문이 Java와 매우 유사하며 코드가 더 적고 상용구가 적습니다. 인터프리터와 컴파일을 통해 실행될 수 있으므로 새로운 구문을 배우지 않아도 빠른 프로토 타이핑, 스크립트 및 동적 언어 학습에 유용합니다 (자바를 알고 있다고 가정). Groovy 2.0부터는 정적 컴파일에 대한 지원도 증가하고 있습니다. Groovy는 클로저를 지원하고 다소 기능적인 스타일의 프로그래밍을 지원하지만 여전히 전통적인 기능적 프로그래밍 정의와는 거리가 멀다.
Clojure 는 Lisp의 방언으로 Software Transactional Memory 와 같은 몇 가지 고급 기능이 있습니다 . Lisp를 좋아하고 JVM에서 이와 유사한 것을 사용하려면 Clojure가 적합합니다. 아마도 JVM에서 실행 되는 가장 기능적인 언어 일 수 있으며 가장 유명한 언어 일 것입니다. 또한 다른 Lisp 방언보다 불변성에 중점을 두어 기능 언어 애호가의 마음에 더 가깝습니다.
스칼라 는 Java 이외의 완전한 객체 지향 언어로, 비 연구 언어에서 사용 가능한 가장 고급 유형 시스템 중 하나이며 JVM에서 가장 고급 유형 시스템입니다. 또한 객체 지향을 손상시키지 않으면 서 기능 언어의 많은 개념과 기능을 결합하지만 기능 언어 특성에 대한 타협은 후자의 일부 애호가를 불러 일으켰습니다.
Groovy는 Grails에서 좋은 수용력과 인기있는 웹 프레임 워크를 가지고 있습니다. 또한 Gradle 빌드 시스템을 강화하여 Maven의 대중적인 대안이되었습니다. 개인적으로 Jython과 JRuby가 다른 나라에 비해 JVM- 랜드에 진출하기 시작함에 따라 유틸리티가 제한적인 언어라고 생각합니다.
Clojure는 매우 흥미로운 기능을 할인하더라도 JVM에 대한 Lisp 방언으로 강력한 호소력을 발휘합니다. 당연히 인기가 제한 될 수 있지만, 오랫동안 주변에 충성스러운 커뮤니티가있을 것으로 기대합니다.
스칼라는 Java와 직접 경쟁하여 거의 모든 측면에서 돈을 벌 수 있습니다. 물론 현재 인기를 끌 수는 없으며 강력한 기업 지원이 없기 때문에 기업 환경에 대한 수용이 방해받을 수 있습니다. 언어가 어떻게 진화 하는가라는 점에서 자바보다 훨씬 더 역동적 인 언어이기도합니다. 언어의 관점에서 보면 좋은 일입니다. 수천 줄의 코드를 작성하려는 사용자의 관점에서는 그렇지 않습니다.
마지막 공개로, 나는 Scala에 매우 익숙하며 다른 두 가지에 대해서만 알고 있습니다.
스칼라는 퍼널 (Funnel) 로 알려진 순수 기능 언어에서 발전했으며, 거의 모든 Java 구문의 클린 룸 구현을 나타내며, 분명한 개선이 이루어질 수 있거나 언어의 기능적 특성을 손상시킬 수있는 위치 만 다릅니다. 이러한 차이점에는 정적 메서드 대신 단일 객체 및 형식 유추가 포함됩니다.
이것의 대부분은 Martin Odersky의 피자 언어에 대한 이전 연구를 기반으로 한 것입니다 . OO / FP 통합은 단순한 폐쇄를 뛰어 넘어 사후 기능으로 설명되는 언어로 이어졌습니다.
그럼에도 불구하고 여러 가지면에서 Java와 가장 가깝습니다. 주로 OO 지원과 정적 타이핑의 조합뿐만 아니라 Java와 매우 긴밀하게 통합되어야하는 언어 디자인의 명시적인 목표 때문입니다.
Groovy는 다음과 같이 자바의 가장 큰 두 가지 비판을 명시 적으로 해결합니다.
아마도 Clojure와 Scala가 제공하는 더 풍부한 기능적 구성물을 제공하지는 않지만 특히 스크립트 실 프로그램을 작성하기 위해 명확한 진화 적 개선을 제공하는 것은 구문 적 으로 Java에 가장 가깝습니다.
Groovy는 주로 스프링 소스를 통해 세 가지 언어를 가장 강력하게 지원합니다.
Clojure는 LISP 제품군의 기능적 언어이며 동적으로 입력됩니다.
STM 지원과 같은 기능은 최상의 동시성 지원을 제공하는 반면 Scala는 이를 복제하기 위해 Akka 와 같은 타사 라이브러리가 필요합니다 .
문법적으로 일반적인 Java 코드에서 가장 먼 세 언어입니다.
나는 또한 스칼라에 가장 익숙하다는 것을 공개해야합니다 :)
클로저와 놀 시간이 없었습니다. 그러나 스칼라 대 그루비의 경우, 이것은 James Strachan의 말입니다-Groovy creator
"하지만 javac의 장기적인 교체에 대한 팁은 스칼라입니다. 매우 인상적입니다! 누군가가 2003 년에 Lex Spoon & Bill Venners 인 Martin Odersky의 Programming in Scala book을 보여줬다면 솔직히 말할 수 있습니다. 아마도 그루비를 만들지 않았을 것입니다. "
여기 에서 전체 이야기를 읽을 수 있습니다
어디에서 왔는지 또는 어떤 개발자를 주로 대상으로하는지 차별화 할 수 있습니다.
Groovy 는 Java의 스크립팅 버전과 비슷합니다. 오랜 자바 프로그래머들은 대규모 아키텍처로 지원되는 민첩한 애플리케이션을 구축 할 때 집에있는 것처럼 느낍니다. Groovy on Grails는 Rails 프레임 워크와 유사한 이름으로 제안됩니다. 항상 Java의 자세한 정보를보고 싶지 않은 사람들을 위해.
스칼라 는 객체 지향적이고 기능적인 프로그래밍 언어이며 Ruby 또는 Python 프로그래머는이 언어에 더 가깝게 느낄 수 있습니다. 이 프로그래밍 언어에서 발견되는 많은 공통적 인 좋은 아이디어를 사용합니다.
Clojure 는 Lisp 프로그래밍 언어의 방언이므로 Lisp, Scheme 또는 Haskell 개발자는이 언어로 개발하는 동안 집에서 느낄 수 있습니다.
나는 Scott 2008, Copyright 2008의 Pragmatic Programmers 책 "Groovy Recipes : Java의 바퀴를 기름칠"을 읽고 있으며 같은 해 4 월에 인쇄되었습니다.
약간 오래되었지만 책은 Groovy가 문자 그대로 Java의 확장이라는 것을 분명히합니다. Java와 똑같은 기능을하는 Java 코드를 작성하고 파일 이름을 * .groovy로 바꿀 수 있으며 정상적으로 작동합니다. 이 책에 따르면, 필요한 라이브러리를 포함하면 반대의 경우도 마찬가지입니다. 지금까지 실험은 이것을 입증하는 것으로 보입니다.
분명히 문법은 완전히 다릅니다 (Groovy는 Java에 가장 가깝습니다).하지만 그것이 당신이 요구하는 것이 아니라고 생각합니다.
자바 애플리케이션을 스크립팅하기 위해 그것들을 사용하는데 관심이 있다면, 스칼라는 자바에서 쉽게 평가할 수있는 방법 이 없기 때문에 , 그루비는 그 목적에 특히 적합하기 때문에 아마도 좋은 선택이 아닐 것이다 .
eval
필요 하지 않습니다.