그루비 소개 발표자료 - 김연수

24
1 그루비 소개 2013-11-12 발표자 : 김연수

description

사내 세미나 - 그루비 소개 발표자료 (2013. 11. 12) 최근에 파이썬 및 장고 프레임워크를 배워 간단한 웹 사이트를 구축한 이후, 우연히 그루비를 알게 되었고 자바의 모든 라이브러리 및 기능을 그대로 사용 할 수 있고, 자바 개발자의 경우 학습 비용도 거의 들지 않는다고 하여, 그루비에 대해 알아보게 되었다. (파이썬의 경우 간결하고 깔끔한 코드에 감탄했지만, 새로운 언어를 사용하는 터라 기존의 자바 개발경험을 이용할 수 없었던 문제는 간단한 기능을 구현하는데에도 많이 답답하였다) 그리고 그렇게 알게 된 자료를 토대로 사내 세미나 발표자료를 만들어 보았다.

Transcript of 그루비 소개 발표자료 - 김연수

Page 1: 그루비 소개 발표자료 - 김연수

1

그루비 소개 2013-11-12

발표자 : 김연수

Page 2: 그루비 소개 발표자료 - 김연수

2

Contents Table

Ⅰ. 개요

Ⅱ. 자바와의 비교

Ⅲ. 그루비 계열 기술들

1. 그루비란?

2. 특징

3. 스크립트 언어로의 전환

4. 어떤 업무에 활용 할 수 있을까?

5. 근황

6. 사례

1. 자바와의 차이점(기본 문법)

2. 코드량 비율

3. 수행 속도

1. Grails

2. Gradle

Ⅳ. 그루비의 한계

Page 3: 그루비 소개 발표자료 - 김연수

3

Ⅰ. 그루비 소개

1. 그루비란?

2. 특징

3. 스크립트 언어로의 전환

4. 어떤 업무에 활용할 수 있을까?

5. 근황

6. 사례

Page 4: 그루비 소개 발표자료 - 김연수

4

그루비란? 1. 그루비 소개

그루비란?

그루비(Groovy)는 2002년 영국 출신의 프로그래머언 제임스 스트

라칸에 의해 창시 되었으며, 제임스 스트라칸은 그루비의 가장 중

요한 점이 타입이 유연 간결한 동적인 프로그래밍 언어라고 한다.

그루비는 자바, 파이썬, 루비, 스몰토크등의 특징을 더한 동적 객

체 지향 프로그래밍 언어이다.

영향을 받은 언어

자바

루비

스몰톡

파이썬

Page 5: 그루비 소개 발표자료 - 김연수

5

특징

특징

•자바에서 그루비를 불러와 호출, 그루비에서 기존 자바 모듈을 불러와 호출 하는것이 간편하다.(JVM에서 구동된다)

•자바의 클래스(바이트 코드) 파일로 컴파일 된다.

•자바의 문법을 99% 지원한다.(거의 대부분 지원, 그루비 소스 내에서 자바 문법을 사용하여도 됨)

자바와의 상호 연동

•기존 자바코드를 사용할 수 있으며, 기존 자바코드와 문법이 굉장히 유사하여, 공식 홈페이지에서는 “almost-zero learning curve.” 학습 비용이 거의 제로에 가깝다고 말할 정도이다.

•기존 자바 라이브러리 그대로 사용 가능

기존 자바개발자의 경우 학습 비용이 적다

•자바의 정적 타이핑 방식이 아닌 동적 타이핑 방식이라 이로 인해 코드가 한결 간결해지는 장점을 가지고 있다.

•컴파일 하지 않고 바로 실행 가능하다.

•빠른 개발

동적 타이핑 언어

•함수형 프로그래밍의 패러다임으로 펑션을 인자로 넘기고, 리턴 받을 수 있다.

•자바 8에서 지원되는 클로저를 기본으로 지원

•이를 통해 구현된 GDK를 통해 각종 반복문, 스트림 제어, 리소스 관리, 패턴 분야에서 강점을 발휘 하는데, 이는 네트워크 연결, DB 커넥션, GUI, 그래픽, SWT 등의 영역에서 용이하게 사용됩니다.

클로저 지원

•Java의 JDK를 확장시킨 Groovy의 GDK는 각종 편리하고 강력한 기능을 제공 한다.

•GString, 각종(JSON, XML) Builder, Groovy Beans, Groovy Templates, Regular Expression 등

GDK(Groovy Development Kit)

1. 그루비 소개

* DSL(Domain Specific Lanaguage), Meta Programming 지원 등의 특징도 가지고 있지만, 이는 좀 복잡하여 설명을 생략

Page 6: 그루비 소개 발표자료 - 김연수

6

스크립트 언어로의 전환 1. 그루비 소개

스크립트 언어로의 전환

기존 메인 언어를 사용하고 있는 개발자들은 다음과 같은 형태로 스크립트 언어 전환을 비교적 쉽게 할 수 있다.

위의 스크립트 언어중 일부 Python, Ruby, Groovy의 특징을 비교하면,

특징 비교

Groovy

Python Ruby

•파이썬 •거의 모든 영역에 라이브러리가 존재한다

•루비 •가독성이 뛰어나다 (코드 문법이 인간 친화적이다)

•그루비 •루비와 비슷하며, 자바와 상호간 연동 할 수 있고, 루비보다 빠르다

Page 7: 그루비 소개 발표자료 - 김연수

7

어떤 업무에 활용 할 수 있을까?

어떤 업무에 활용 할 수 있을까?

1. 그루비 소개

운영 유틸리티

테스트 코드(기존 자바 코드를 테스트 하

는)

프로젝트 개발시 필요한 도구

빠른 프로토 타입 개발(웹 사이트, 웹서비스 – Grails 이용)

그루비는 실제로 자바로 할 수 있는 거의 모든 것을 개발 할 수 있다

Page 8: 그루비 소개 발표자료 - 김연수

9

근황 1. 그루비 소개

TIOBE 순위

2013년 10월 TIOBE 순위를 보면, 전년대비 그루비의 순위가 급등하여 18위에 등극한 걸 볼 수 있다. 이는 자바에 비하면 높은 순위는 아니나, 비슷한 계열의 스크립트 언어, 파이썬 펄, 루비 바로 아래에 위치한 스크립트 언어란 점은 눈여겨 볼만 하다.

Page 10: 그루비 소개 발표자료 - 김연수

11

사례 1. 그루비 소개

그루비 사례 1

CODENARC라는 그루비 소스 코드 정적 분석 툴(grails로 개발된 웹 어플리케이션)

[이미 정의된 지켜야 될 코딩 룰중 현재의 소스가 어떤 것들을 어겼는지 알려줌]

Page 11: 그루비 소개 발표자료 - 김연수

12

사례 1. 그루비 소개

그루비 사례 2

Linkedin이라는 비즈니스 중심의 소셜 네트워크 사이트

(비즈니스 인맥 사이트인 동시에, 구인 구직 사이트라 할 수 있음)

2002년 레이드 호프만(Reid Hoffman)이 10명의 동료들과 공동으로 설립하였으며 2003년 5월 사이트 개설을 통

해 서비스를 제공하기 시작했다.

링크트인의 가입자 수는 서비스 런칭 6년 뒤인 2009년 10월 5천만 명을 돌파하였으며, 이후 1년 반이 지난

2011년 3월 1억 명을 넘어섰다.

(2008년 5월 5일 자료)ㅋ

Page 12: 그루비 소개 발표자료 - 김연수

13

사례 1. 그루비 소개

그루비 사례 2

개발 과정에서 나온 얘기

(동적 언어는 자바 개발자 팀에게 새로워 익숙하지 않다) •그루비는 보기에 자바와 같다, 그러나 동적 특성은 컴파일시에 오류를

잡기가 힘들다, 그리고 리팩토링을 자동화 하기 힘들다 •심각하지 않은 오류를 잡는데 테스트 범위가 더 많이 필요하다

결론

•Grails는 메인 자바 웹 프레임워크 보다 생산성이 더 높다 •Grails는 기업 환경에서 사용 할 수 있다(J2EE 처럼)

•Grails는 자바 생태계의 콤포넌트 들과 긴밀하게 통합 될 수

있다

왜 Grails 인가?

•더 나은 생산성을 가진 웹 프레임워크 •신속한 프로토 타이핑의 가능성과 생산성 •Benefit&Risk 생략

Page 13: 그루비 소개 발표자료 - 김연수

14

Ⅱ. 자바와의 비교

1. 자바와의 차이점(기본 문법)

2. 코드량 비율

3. 수행 속도

Page 14: 그루비 소개 발표자료 - 김연수

15

자바와의 차이점

자바와의 차이점(기본 문법)

2. 자바와의 비교

http://groovy.codehaus.org/Groovy+style+and+language+feature+guidelines+for+Java+developers

Page 15: 그루비 소개 발표자료 - 김연수

16

자바와의 차이점

코드량 비율

2. 자바와의 비교

C 코드로 개발된 코드를 다른 고급언어들로 표현 했을때의 일반적인 소스코드 비율(숫자가 높을수록

좋음)

그루비는 자바 코드와 유사하면서도 이와 같은 결과가 가능하다 (이는 곧 자바 보다 생산성이 향상 됨을 의미한다)

각종 자료 출처 : CODE COMPLETE 2/E 서적

참고로 •프로그래밍 언어는 다양한 방법으로 생산성과 품질에 영향을 준다

•친숙한 언어를 사용할때(그렇지 않은 경우 보다) 생산성이 높다(3년이상 사용시 30% 높다, 경험이 적은 사람보다는 3배이상 높다) •고급 언어를 사용하는 프로그래머가 저급언어 프로그래머 보다 생산성과 품질이 높다 – 이를 테면 고급언어는 코드 한줄로 저급언어의 여러 가지를 표현할 수 있다(생산성, 신뢰성, 명료성 향상)

Page 16: 그루비 소개 발표자료 - 김연수

17

자바와의 차이점

수행 속도

2. 자바와의 비교

http://www.kubrynski.com/2013/07/java-7-vs-groovy-21-performance.html

http://keyzero.wordpress.com/2010/05/26/groovy-vs-ruby-vs-python-performance/

수행 속도 테스트는 보통 간단한 소스로 테스트를 하는 것이기 때문에 지나치게 신뢰할 필요 없이 그냥

참고자료일뿐

(최신의 자료가 구하기 힘들어 이전 버전의 자료를 삽입)

결과상으로 보면 그루비는 자바 보다 약 4-5배 느리고,파이썬과

루비, JRUBY 보단 빠르다 (일반적으로 JVM에서 구동되는 언어는 CPYTHON과 RUBY보다

빠르다는 얘기가 있음)

Page 17: 그루비 소개 발표자료 - 김연수

18

Ⅲ. 그루비 계열 기술들

1. Grails

2. Gradle

Page 18: 그루비 소개 발표자료 - 김연수

19

Grails

Grails

3. 그루비 계열 기술들

Grails는 Ruby 언어의 웹 개발 프레임워크인 Ruby On Rails를 그루비용으로 개발한 웹 개발 프레임 워크이다. 하지만 Grails가 다른 프레임워크와의 차이점은 Spring이나 Hibernate같이 기존에 구현된 뛰어난 자바 기술을 활용하여 구현됐다는 점이다.

Web MVC

(Spring)

GSP

(Views)

Servlet Container

(Jetty)

GORM

(Data Access)

Database

(HSQLDB)

I18n

(국제화 지원)

Build

(커스텀 빌드 환경 구축)

Test Support

(기본적으로 Mock 등 테스트 통합 지원)

Doc Engine

(Full Stack Framework)

이 모든 기능을 기본적으로 포함하며, 간단한 명령어 실행으로 모든 코드를 간단하게 생성 가능

(Domain Class, Controller, 자동 Configuration, View 등 …)

Page 19: 그루비 소개 발표자료 - 김연수

20

Gradle

Gradle

3. 그루비 계열 기술들

Gradle은 지금까지 자바 진영에서 많이 사용해온 Ant 빌드 툴과 Maven 빌드 툴의 단점은 버리고, 장점을 취한 빌드 툴이다. 따라서 Ant와 Maven 빌드 툴의 기능을 모두 포함하고 있다. Ant의 가장 큰 장점을 들자면 개발자가 자유롭게 빌드 단위(Ant에서는 target이라고 한다.)를 지정하고 빌드 단위 간의 의존 관계를 자유롭게 설정할 수 있다는 것이다. 하지만 자유도가 높다는 것은 잘 활용할 경우 좋은 도구가 될 수 있지만 그렇지 않을 경우 애물단지로 전락할 가능성이 있다는 것이다. Maven의 가장 큰 장점은 Convention Over Configuration 전략에 따라 프로젝트 빌드 과정에 대한 많은 부분이 이미 관례로 정해져 있다는 것이다. 따라서 Maven 기반 프로젝트를 경험한 개발자는 Maven을 기반으로 하고 있는 새로운 프로젝트에서도 쉽게 적응할 수 있다는 것이다. 하지만 관례가 항상 좋은 것은 아니며, 특수한 상황이 발생하는 경우에는 맞지 않는 경우도 종종 발생한다. Maven의 관례에 거부감을 가지는 개발자도 있다.

Gradle은 Ant의 자유도와 Maven의 관례의 장점을 모두 흡수했다. 그리고 Ant와 Maven 빌드 툴 모두 가지고 있었던 가장 큰 단점이 XML에 대한 이슈도 Groovy라는 언어를 사용해 해결하고 있다. Ant의 자유도와 Maven의 관례를 어떻게 흡수하고 있는지 앞으로 살펴보도록 하겠다. (쉽게 정리하면, 고정적인 빌드 과정 속 동적인 빌드 관련 동작을 추가 하기 쉽다 – 그루비 문법 사용)

Page 20: 그루비 소개 발표자료 - 김연수

21

Ⅳ. 그루비의 한계

Page 21: 그루비 소개 발표자료 - 김연수

22

스칼라

4. 그루비의 한계

James Strachan (그루비 제작자)

I can honestly say if someone had shown me the Programming Scala book by by Martin Odersky, Lex Spoon & Bill Venners back in 2003 I'd probably hav

e never created Groovy.

만약 내가 2003년(그루비 제작 시기)에 프로그래밍 스칼라 책을 읽었다면 그루비를 만들지 않았을 것이다.

정적 타이핑

동적 타이핑

함수형 프로그래밍

객체지향 프로그래

밍 스칼라

JVM 위에서 실행 되고, 자바 보다 느리지

도 않다고?

스프링 제작자 로드 존슨도 스칼라를 배운

다고?

스칼라의 대표적인 웹 개발 프레임 워크

Page 22: 그루비 소개 발표자료 - 김연수

23

동적 타이핑 언어와 컨벤션

4. 그루비의 한계

동적 타이핑

컨벤션

자료의 부재

•Eclipse의 자동완성(Code Assist) 기능 사용 불가 - 라이브러리 사용시 API 문서를 자세히 봐야하는 불편함 - 해결 방법 : 테스트 코드를 꼼꼼히 작성하라

•특정 모듈 개발 시 로직을 확인하기 어려워 질 수 있다.

•자바의 경우 컴파일 단계에서 잡을 수 있는 에러도 런타임 시에 발견하게 된다.

•그루비 라이브러리가 아닌 자바 라이브러리로 소스를 짜다 보면 자바와의 코드 라인 수 차이가 크지 않다.

•컨벤션이 없다. (오히려 다양한 문법을 제공하니 컨벤션을 강요하지 않는 경향이 있는듯)

•그루비로 포팅된 라이브러리가 아닌 자바 라이브러리만을 사용하여 구현하다 보면 결국 자바 코드와 크게 다르지 않다.

•여럿이서 프로젝트를 하게 된다면 이 부분을 잘 정의할 필요가 있다.

•번역서는 국내 유일 단 한권

•구글에 검색하여도 한글로 작성된 자료는 매우 부족

Page 23: 그루비 소개 발표자료 - 김연수

24

그럼에도 그루비

4. 그루비의 한계

자바

그루비

자바 개발자의 그루비 학습은 쉽게 배워 생산성을 크게 향상 시킬 뿐만 아니라 자바의 역량 마저 높여

줄 수 있다.

새로운 방법을 통한 기존 지식의 확장 등으로, 스칼라 보다 쉽게 배우고 스칼라보다 빠른 생산성

JVM을 이용하게 개발된 프로그래밍 언어는 많지만 그중 그루비는 JSR(Java Specification Requests)-241에 등록된 자바가 인정한 제 2의 공식언어라 볼 수 있다

Page 24: 그루비 소개 발표자료 - 김연수

26

감사합니다.