SlideShare a Scribd company logo
1 of 24
Download to read offline
1
그루비 소개
2013-11-12
발표자 : 김연수
2
Contents Table
Ⅰ. 개요
Ⅱ. 자바와의 비교
Ⅲ. 그루비 계열 기술들
1. 그루비란?
2. 특징
3. 스크립트 언어로의 전환
4. 어떤 업무에 활용 할 수 있을까?
5. 근황
6. 사례
1. 자바와의 차이점(기본 문법)
2. 코드량 비율
3. 수행 속도
1. Grails
2. Gradle
Ⅳ. 그루비의 한계
3
Ⅰ. 그루비 소개
1. 그루비란?
2. 특징
3. 스크립트 언어로의 전환
4. 어떤 업무에 활용할 수 있을까?
5. 근황
6. 사례
4
그루비란? 1. 그루비 소개
그루비란?
그루비(Groovy)는 2002년 영국 출신의 프로그래머언 제임스 스트
라칸에 의해 창시 되었으며, 제임스 스트라칸은 그루비의 가장 중
요한 점이 타입이 유연 간결한 동적인 프로그래밍 언어라고 한다.
그루비는 자바, 파이썬, 루비, 스몰토크등의 특징을 더한 동적 객
체 지향 프로그래밍 언어이다.
영향을 받
은 언어
자바
루비
스몰톡
파이썬
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 지원 등의 특징도 가지고 있지만,
이는 좀 복잡하여 설명을 생략
6
스크립트 언어로의 전환 1. 그루비 소개
스크립트 언어로의 전환
기존 메인 언어를 사용하고 있는 개발자들은 다음과 같은 형태로 스크립트 언어 전환을 비교적 쉽게 할 수 있다.
위의 스크립트 언어중 일부 Python, Ruby, Groovy의 특징을 비교하면,
특징 비교
Groovy
Python
Ruby
•파이썬
•거의 모든 영역에 라이브러리가 존재한다
•루비
•가독성이 뛰어나다 (코드 문법이 인간 친화적이다)
•그루비
•루비와 비슷하며, 자바와 상호간 연동 할 수 있고, 루
비보다 빠르다
7
어떤 업무에 활용 할 수 있을까?
어떤 업무에 활용 할 수 있을까?
1. 그루비 소개
운영 유틸리티
테스트 코드(기존 자
바 코드를 테스트 하
는)
프로젝트 개발시 필
요한 도구
빠른 프로토 타입 개
발(웹 사이트, 웹서
비스 – Grails 이용)
그루비는 실제로 자바로 할 수 있는 거의 모든 것을 개발 할 수 있다
9
근황 1. 그루비 소개
TIOBE 순위
2013년 10월 TIOBE 순위를 보면, 전년대
비 그루비의 순위가 급등하여 18위에 등
극한 걸 볼 수 있다.
이는 자바에 비하면 높은 순위는 아니나,
비슷한 계열의 스크립트 언어, 파이썬 펄
, 루비 바로 아래에 위치한 스크립트 언
어란 점은 눈여겨 볼만 하다.
10
근황
프로그래밍 언어별 평균 연봉
1. 그루비 소개
2013년 8월 21일 프로그래밍 언어별 평균 연봉에 의하면 Groovy는 102,650.86$(한화로 약 1억이
넘는 금액)로, 자바 바로 다음 순위에 위치했다.
http://bpodgursky.com/2013/08/21/average-income-per-programming-language/
11
사례 1. 그루비 소개
그루비 사례 1
CODENARC라는 그루비 소스 코드 정적 분석 툴(grails로 개발된 웹 어플리케이션)
[이미 정의된 지켜야 될 코딩 룰중 현재의 소스가 어떤 것들을 어겼는지 알려줌]
12
사례 1. 그루비 소개
그루비 사례 2
Linkedin이라는 비즈니스 중심의 소셜 네트워크 사이트
(비즈니스 인맥 사이트인 동시에, 구인 구직 사이트라 할 수 있음)
2002년 레이드 호프만(Reid Hoffman)이 10명의 동료들과 공동으로 설립하였으며 2003년 5월 사이트 개설을 통
해 서비스를 제공하기 시작했다.
링크트인의 가입자 수는 서비스 런칭 6년 뒤인 2009년 10월 5천만 명을 돌파하였으며, 이후 1년 반이 지난
2011년 3월 1억 명을 넘어섰다.
(2008년 5월 5일 자료)
ㅋ
13
사례 1. 그루비 소개
그루비 사례 2
개발 과정에서 나온 얘기
(동적 언어는 자바 개발자 팀에게 새로워 익숙하지 않다)
•그루비는 보기에 자바와 같다, 그러나 동적 특성은 컴파일시에 오류를
잡기가 힘들다, 그리고 리팩토링을 자동화 하기 힘들다
•심각하지 않은 오류를 잡는데 테스트 범위가 더 많이 필요하다
결론
•Grails는 메인 자바 웹 프레임워크 보다 생산성이 더 높다
•Grails는 기업 환경에서 사용 할 수 있다(J2EE 처럼)
•Grails는 자바 생태계의 콤포넌트 들과 긴밀하게 통합 될 수
있다
왜 Grails 인가?
•더 나은 생산성을 가진 웹 프레임워크
•신속한 프로토 타이핑의 가능성과 생산성
•Benefit&Risk 생략
14
Ⅱ. 자바와의 비교
1. 자바와의 차이점(기본 문법)
2. 코드량 비율
3. 수행 속도
15
자바와의 차이점
자바와의 차이점(기본 문법)
2. 자바와의 비교
http://groovy.codehaus.org/Groovy+style+and+language+feature+guidelines+for+Java+developers
16
자바와의 차이점
코드량 비율
2. 자바와의 비교
C 코드로 개발된 코드를 다른 고급언어들로 표현 했을때의 일반적인 소스코드 비율(숫자가 높을수록
좋음)
그루비는 자바 코드와 유사하면서
도 이와 같은 결과가 가능하다
(이는 곧 자바 보다 생산성이 향상
됨을 의미한다)
각종 자료 출처 : CODE COMPLETE 2/E 서적
참고로
•프로그래밍 언어는 다양한 방법으로 생산성과 품질에 영향을 준다
•친숙한 언어를 사용할때(그렇지 않은 경우 보다) 생산성이 높다(3년이상 사용시 30% 높다, 경험이 적은
사람보다는 3배이상 높다)
•고급 언어를 사용하는 프로그래머가 저급언어 프로그래머 보다 생산성과 품질이 높다 – 이를 테면 고급
언어는 코드 한줄로 저급언어의 여러 가지를 표현할 수 있다(생산성, 신뢰성, 명료성 향상)
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보다
빠르다는 얘기가 있음)
18
Ⅲ. 그루비 계열 기술들
1. Grails
2. Gradle
19
Grails
Grails
3. 그루비 계열 기술들
Grails는 Ruby 언어의 웹 개발 프레임워크인 Ruby On Rails를 그루비용으로 개발한 웹 개
발 프레임 워크이다. 하지만 Grails가 다른 프레임워크와의 차이점은 Spring이나 Hibernat
e같이 기존에 구현된 뛰어난 자바 기술을 활용하여 구현됐다는 점이다.
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 등 …)
20
Gradle
Gradle
3. 그루비 계열 기술들
Gradle은 지금까지 자바 진영에서 많이 사용해온 Ant 빌드 툴과 Maven 빌드 툴의 단점은 버리고, 장점을 취한 빌드 툴이다. 따라서
Ant와 Maven 빌드 툴의 기능을 모두 포함하고 있다.
Ant의 가장 큰 장점을 들자면 개발자가 자유롭게 빌드 단위(Ant에서는 target이라고 한다.)를 지정하고 빌드 단위 간의 의존 관계를
자유롭게 설정할 수 있다는 것이다. 하지만 자유도가 높다는 것은 잘 활용할 경우 좋은 도구가 될 수 있지만 그렇지 않을 경우 애물
단지로 전락할 가능성이 있다는 것이다.
Maven의 가장 큰 장점은 Convention Over Configuration 전략에 따라 프로젝트 빌드 과정에 대한 많은 부분이 이미 관례로 정해져
있다는 것이다. 따라서 Maven 기반 프로젝트를 경험한 개발자는 Maven을 기반으로 하고 있는 새로운 프로젝트에서도 쉽게 적응할
수 있다는 것이다. 하지만 관례가 항상 좋은 것은 아니며, 특수한 상황이 발생하는 경우에는 맞지 않는 경우도 종종 발생한다. Mave
n의 관례에 거부감을 가지는 개발자도 있다.
Gradle은 Ant의 자유도와 Maven의 관례의 장점을 모두 흡수했다. 그리고 Ant와 Maven 빌드 툴 모두 가지고 있
었던 가장 큰 단점이 XML에 대한 이슈도 Groovy라는 언어를 사용해 해결하고 있다. Ant의 자유도와 Maven의 관
례를 어떻게 흡수하고 있는지 앞으로 살펴보도록 하겠다.
(쉽게 정리하면, 고정적인 빌드 과정 속 동적인 빌드 관련 동작을 추가 하기 쉽다 – 그루비 문법 사용)
21
Ⅳ. 그루비의 한계
22
스칼라
4. 그루비의 한계
James Strachan
(그루비 제작자)
I can honestly say if someone had sho
wn me the Programming Scala book b
y by Martin Odersky, Lex Spoon & Bill
Venners back in 2003 I'd probably hav
e never created Groovy.
만약 내가 2003년(그루비 제작 시기)에 프
로그래밍 스칼라 책을 읽었다면 그루비를
만들지 않았을 것이다.
정적 타이
핑
동적 타이
핑
함수형 프
로그래밍
객체지향
프로그래
밍
스칼라
JVM 위에서 실행 되
고, 자바 보다 느리지
도 않다고?
스프링 제작자 로드
존슨도 스칼라를 배운
다고?
스칼라의 대표적인 웹 개발 프레임 워크
23
동적 타이핑 언어와 컨벤션
4. 그루비의 한계
동적 타이핑
컨벤션
자료의 부재
•Eclipse의 자동완성(Code Assist) 기능 사용 불가
- 라이브러리 사용시 API 문서를 자세히 봐야하는 불편함
- 해결 방법 : 테스트 코드를 꼼꼼히 작성하라
•특정 모듈 개발 시 로직을 확인하기 어려워 질 수 있다.
•자바의 경우 컴파일 단계에서 잡을 수 있는 에러도 런타임
시에 발견하게 된다.
•그루비 라이브러리가 아닌 자바 라이브러리로 소스를 짜
다 보면 자바와의 코드 라인 수 차이가 크지 않다.
•컨벤션이 없다.
(오히려 다양한 문법을 제공하니 컨벤션을 강요하지 않는
경향이 있는듯)
•그루비로 포팅된 라이브러리가 아닌 자바 라이브러리만을
사용하여 구현하다 보면 결국 자바 코드와 크게 다르지 않
다.
•여럿이서 프로젝트를 하게 된다면 이 부분을 잘 정의할 필
요가 있다.
•번역서는 국내 유일 단 한권
•구글에 검색하여도 한글로 작성된 자료는 매우 부족
24
그럼에도 그루비
4. 그루비의 한계
자바
그루비
자바 개발자의 그루
비 학습은 쉽게 배워
생산성을 크게 향상
시킬 뿐만 아니라 자
바의 역량 마저 높여
줄 수 있다.
새로운 방법을 통한 기존 지식의 확장
등으로, 스칼라 보다 쉽게 배우고 스칼
라보다 빠른 생산성
JVM을 이용하게 개발된 프로그래밍 언어는 많지만
그중 그루비는 JSR(Java Specification Requests)-24
1에 등록된 자바가 인정한 제 2의 공식언어라 볼 수
있다
26
감사합니다.

More Related Content

What's hot

ant로 안드로이드 앱을 자동으로 빌드하자
ant로 안드로이드 앱을 자동으로 빌드하자ant로 안드로이드 앱을 자동으로 빌드하자
ant로 안드로이드 앱을 자동으로 빌드하자Sewon Ann
 
[TECHCON 2019: MOBILE - Android]4.쪼개지고 나누어지는 안드로이드
[TECHCON 2019: MOBILE - Android]4.쪼개지고 나누어지는 안드로이드[TECHCON 2019: MOBILE - Android]4.쪼개지고 나누어지는 안드로이드
[TECHCON 2019: MOBILE - Android]4.쪼개지고 나누어지는 안드로이드NAVER Engineering
 
Gradle 사용하기
Gradle 사용하기Gradle 사용하기
Gradle 사용하기jiseob kim
 
[세미나] 20160520 Gradle
[세미나] 20160520 Gradle[세미나] 20160520 Gradle
[세미나] 20160520 GradleSanghoon Yoon
 
[TECHCON 2019: MOBILE - Android]7.20분만에 만들어보는 라이브 방송 앱
[TECHCON 2019: MOBILE - Android]7.20분만에 만들어보는 라이브 방송 앱[TECHCON 2019: MOBILE - Android]7.20분만에 만들어보는 라이브 방송 앱
[TECHCON 2019: MOBILE - Android]7.20분만에 만들어보는 라이브 방송 앱NAVER Engineering
 
이클립스 플랫폼
이클립스 플랫폼이클립스 플랫폼
이클립스 플랫폼Kenu, GwangNam Heo
 
웹 IDE 비교
웹 IDE 비교웹 IDE 비교
웹 IDE 비교Junyoung Lee
 
[자바카페] 미니 세미나 ProGuard
[자바카페] 미니 세미나 ProGuard[자바카페] 미니 세미나 ProGuard
[자바카페] 미니 세미나 ProGuardChi Hwan Choi
 
Go web framework 비교[번역 정리]
Go web framework 비교[번역 정리]Go web framework 비교[번역 정리]
Go web framework 비교[번역 정리]흥배 최
 
Doxygen 사용법
Doxygen 사용법Doxygen 사용법
Doxygen 사용법YoungSu Son
 
KotlinJS Overview - TwiceRound #001
KotlinJS Overview - TwiceRound #001KotlinJS Overview - TwiceRound #001
KotlinJS Overview - TwiceRound #001Lee WonJae
 
응답하라 반응형웹 - 4. angular
응답하라 반응형웹 - 4. angular응답하라 반응형웹 - 4. angular
응답하라 반응형웹 - 4. angularredribbon1307
 
Golang Restful 서버 개발기
Golang Restful 서버 개발기Golang Restful 서버 개발기
Golang Restful 서버 개발기Hyejong
 
KotlinJS Practice : Chrome API - TwiceRound Project #002
KotlinJS Practice : Chrome API - TwiceRound Project #002KotlinJS Practice : Chrome API - TwiceRound Project #002
KotlinJS Practice : Chrome API - TwiceRound Project #002Lee WonJae
 
진보한 개발 환경에서 품질 좋은 코드 생산 (WebStorm)
진보한 개발 환경에서 품질 좋은 코드 생산 (WebStorm)진보한 개발 환경에서 품질 좋은 코드 생산 (WebStorm)
진보한 개발 환경에서 품질 좋은 코드 생산 (WebStorm)우영 주
 
C++ GUI 라이브러리 소개: Qt & Nana
C++ GUI 라이브러리 소개: Qt & NanaC++ GUI 라이브러리 소개: Qt & Nana
C++ GUI 라이브러리 소개: Qt & NanaLazy Ahasil
 
Github + Heroku + Circle CI 를 이용한 Django Application 배포 자동화
Github + Heroku + Circle CI 를 이용한 Django Application 배포 자동화Github + Heroku + Circle CI 를 이용한 Django Application 배포 자동화
Github + Heroku + Circle CI 를 이용한 Django Application 배포 자동화Jae-yeol Lee
 

What's hot (20)

ant로 안드로이드 앱을 자동으로 빌드하자
ant로 안드로이드 앱을 자동으로 빌드하자ant로 안드로이드 앱을 자동으로 빌드하자
ant로 안드로이드 앱을 자동으로 빌드하자
 
[TECHCON 2019: MOBILE - Android]4.쪼개지고 나누어지는 안드로이드
[TECHCON 2019: MOBILE - Android]4.쪼개지고 나누어지는 안드로이드[TECHCON 2019: MOBILE - Android]4.쪼개지고 나누어지는 안드로이드
[TECHCON 2019: MOBILE - Android]4.쪼개지고 나누어지는 안드로이드
 
Gradle 사용하기
Gradle 사용하기Gradle 사용하기
Gradle 사용하기
 
Gradle 소개
Gradle 소개Gradle 소개
Gradle 소개
 
[세미나] 20160520 Gradle
[세미나] 20160520 Gradle[세미나] 20160520 Gradle
[세미나] 20160520 Gradle
 
[TECHCON 2019: MOBILE - Android]7.20분만에 만들어보는 라이브 방송 앱
[TECHCON 2019: MOBILE - Android]7.20분만에 만들어보는 라이브 방송 앱[TECHCON 2019: MOBILE - Android]7.20분만에 만들어보는 라이브 방송 앱
[TECHCON 2019: MOBILE - Android]7.20분만에 만들어보는 라이브 방송 앱
 
이클립스 플랫폼
이클립스 플랫폼이클립스 플랫폼
이클립스 플랫폼
 
웹 IDE 비교
웹 IDE 비교웹 IDE 비교
웹 IDE 비교
 
Goorm소개
Goorm소개Goorm소개
Goorm소개
 
[자바카페] 미니 세미나 ProGuard
[자바카페] 미니 세미나 ProGuard[자바카페] 미니 세미나 ProGuard
[자바카페] 미니 세미나 ProGuard
 
Grunt
GruntGrunt
Grunt
 
Go web framework 비교[번역 정리]
Go web framework 비교[번역 정리]Go web framework 비교[번역 정리]
Go web framework 비교[번역 정리]
 
Doxygen 사용법
Doxygen 사용법Doxygen 사용법
Doxygen 사용법
 
KotlinJS Overview - TwiceRound #001
KotlinJS Overview - TwiceRound #001KotlinJS Overview - TwiceRound #001
KotlinJS Overview - TwiceRound #001
 
응답하라 반응형웹 - 4. angular
응답하라 반응형웹 - 4. angular응답하라 반응형웹 - 4. angular
응답하라 반응형웹 - 4. angular
 
Golang Restful 서버 개발기
Golang Restful 서버 개발기Golang Restful 서버 개발기
Golang Restful 서버 개발기
 
KotlinJS Practice : Chrome API - TwiceRound Project #002
KotlinJS Practice : Chrome API - TwiceRound Project #002KotlinJS Practice : Chrome API - TwiceRound Project #002
KotlinJS Practice : Chrome API - TwiceRound Project #002
 
진보한 개발 환경에서 품질 좋은 코드 생산 (WebStorm)
진보한 개발 환경에서 품질 좋은 코드 생산 (WebStorm)진보한 개발 환경에서 품질 좋은 코드 생산 (WebStorm)
진보한 개발 환경에서 품질 좋은 코드 생산 (WebStorm)
 
C++ GUI 라이브러리 소개: Qt & Nana
C++ GUI 라이브러리 소개: Qt & NanaC++ GUI 라이브러리 소개: Qt & Nana
C++ GUI 라이브러리 소개: Qt & Nana
 
Github + Heroku + Circle CI 를 이용한 Django Application 배포 자동화
Github + Heroku + Circle CI 를 이용한 Django Application 배포 자동화Github + Heroku + Circle CI 를 이용한 Django Application 배포 자동화
Github + Heroku + Circle CI 를 이용한 Django Application 배포 자동화
 

Viewers also liked

Groovy 시작 입문
Groovy 시작 입문Groovy 시작 입문
Groovy 시작 입문라한사 아
 
Writing a massive javascript app
Writing a massive javascript appWriting a massive javascript app
Writing a massive javascript appJustin Park
 
2015 디시 게임마케팅 제안
2015 디시 게임마케팅 제안2015 디시 게임마케팅 제안
2015 디시 게임마케팅 제안동익 황
 
01 cep problem_statement_ppt
01 cep problem_statement_ppt01 cep problem_statement_ppt
01 cep problem_statement_ppt영민 백
 
practical perf testing - d2startup
practical perf testing - d2startuppractical perf testing - d2startup
practical perf testing - d2startupJunHo Yoon
 
애플리케이션 개발 단계에서의 성능 품질과 생산성 효율, 둘 다 잡기
애플리케이션 개발 단계에서의 성능 품질과 생산성 효율, 둘 다 잡기애플리케이션 개발 단계에서의 성능 품질과 생산성 효율, 둘 다 잡기
애플리케이션 개발 단계에서의 성능 품질과 생산성 효율, 둘 다 잡기Ki Bae Kim
 
Patent DB - WIPS ON Guide(201501)
Patent DB - WIPS ON Guide(201501)Patent DB - WIPS ON Guide(201501)
Patent DB - WIPS ON Guide(201501)Yulee Kwon
 
Advanced nGrinder 2nd Edition
Advanced nGrinder 2nd EditionAdvanced nGrinder 2nd Edition
Advanced nGrinder 2nd EditionJunHo Yoon
 
awesome groovy
awesome groovyawesome groovy
awesome groovyPaul King
 
Dreamvill si proposal(20031210)
Dreamvill si proposal(20031210)Dreamvill si proposal(20031210)
Dreamvill si proposal(20031210)Seung Min Shin
 
Scala For Java Programmers
Scala For Java ProgrammersScala For Java Programmers
Scala For Java ProgrammersEnno Runne
 
Spring Cloud and Netflix OSS overview v1
Spring Cloud and Netflix OSS overview v1Spring Cloud and Netflix OSS overview v1
Spring Cloud and Netflix OSS overview v1Dmitry Skaredov
 
격변하는 프로그래밍 언어, 이제는 Let it go
격변하는 프로그래밍 언어, 이제는 Let it go격변하는 프로그래밍 언어, 이제는 Let it go
격변하는 프로그래밍 언어, 이제는 Let it goChris Ohk
 
[특강 개봉중] 학습 현장에서 활용할 수 있는 Sns 실용팁 익히기 130510
[특강 개봉중] 학습 현장에서 활용할 수 있는 Sns 실용팁 익히기 130510[특강 개봉중] 학습 현장에서 활용할 수 있는 Sns 실용팁 익히기 130510
[특강 개봉중] 학습 현장에서 활용할 수 있는 Sns 실용팁 익히기 130510규문 최
 
Angular2를 위한 타입스크립트
Angular2를 위한 타입스크립트Angular2를 위한 타입스크립트
Angular2를 위한 타입스크립트Jin wook
 
자바 웹 개발 시작하기 (5주차 : 스프링 프래임워크)
자바 웹 개발 시작하기 (5주차 : 스프링 프래임워크)자바 웹 개발 시작하기 (5주차 : 스프링 프래임워크)
자바 웹 개발 시작하기 (5주차 : 스프링 프래임워크)DK Lee
 
환경부제안서 2010.03.16
환경부제안서 2010.03.16환경부제안서 2010.03.16
환경부제안서 2010.03.16Yeonmoon Jeong
 
토종 개발자가 바라본 실리콘밸리 개발 트랜드
토종 개발자가 바라본 실리콘밸리 개발 트랜드토종 개발자가 바라본 실리콘밸리 개발 트랜드
토종 개발자가 바라본 실리콘밸리 개발 트랜드Justin Park
 
IoTivity 오픈소스 기술
IoTivity 오픈소스 기술IoTivity 오픈소스 기술
IoTivity 오픈소스 기술Wonsuk Lee
 
자바8 스트림 API 소개
자바8 스트림 API 소개자바8 스트림 API 소개
자바8 스트림 API 소개beom kyun choi
 

Viewers also liked (20)

Groovy 시작 입문
Groovy 시작 입문Groovy 시작 입문
Groovy 시작 입문
 
Writing a massive javascript app
Writing a massive javascript appWriting a massive javascript app
Writing a massive javascript app
 
2015 디시 게임마케팅 제안
2015 디시 게임마케팅 제안2015 디시 게임마케팅 제안
2015 디시 게임마케팅 제안
 
01 cep problem_statement_ppt
01 cep problem_statement_ppt01 cep problem_statement_ppt
01 cep problem_statement_ppt
 
practical perf testing - d2startup
practical perf testing - d2startuppractical perf testing - d2startup
practical perf testing - d2startup
 
애플리케이션 개발 단계에서의 성능 품질과 생산성 효율, 둘 다 잡기
애플리케이션 개발 단계에서의 성능 품질과 생산성 효율, 둘 다 잡기애플리케이션 개발 단계에서의 성능 품질과 생산성 효율, 둘 다 잡기
애플리케이션 개발 단계에서의 성능 품질과 생산성 효율, 둘 다 잡기
 
Patent DB - WIPS ON Guide(201501)
Patent DB - WIPS ON Guide(201501)Patent DB - WIPS ON Guide(201501)
Patent DB - WIPS ON Guide(201501)
 
Advanced nGrinder 2nd Edition
Advanced nGrinder 2nd EditionAdvanced nGrinder 2nd Edition
Advanced nGrinder 2nd Edition
 
awesome groovy
awesome groovyawesome groovy
awesome groovy
 
Dreamvill si proposal(20031210)
Dreamvill si proposal(20031210)Dreamvill si proposal(20031210)
Dreamvill si proposal(20031210)
 
Scala For Java Programmers
Scala For Java ProgrammersScala For Java Programmers
Scala For Java Programmers
 
Spring Cloud and Netflix OSS overview v1
Spring Cloud and Netflix OSS overview v1Spring Cloud and Netflix OSS overview v1
Spring Cloud and Netflix OSS overview v1
 
격변하는 프로그래밍 언어, 이제는 Let it go
격변하는 프로그래밍 언어, 이제는 Let it go격변하는 프로그래밍 언어, 이제는 Let it go
격변하는 프로그래밍 언어, 이제는 Let it go
 
[특강 개봉중] 학습 현장에서 활용할 수 있는 Sns 실용팁 익히기 130510
[특강 개봉중] 학습 현장에서 활용할 수 있는 Sns 실용팁 익히기 130510[특강 개봉중] 학습 현장에서 활용할 수 있는 Sns 실용팁 익히기 130510
[특강 개봉중] 학습 현장에서 활용할 수 있는 Sns 실용팁 익히기 130510
 
Angular2를 위한 타입스크립트
Angular2를 위한 타입스크립트Angular2를 위한 타입스크립트
Angular2를 위한 타입스크립트
 
자바 웹 개발 시작하기 (5주차 : 스프링 프래임워크)
자바 웹 개발 시작하기 (5주차 : 스프링 프래임워크)자바 웹 개발 시작하기 (5주차 : 스프링 프래임워크)
자바 웹 개발 시작하기 (5주차 : 스프링 프래임워크)
 
환경부제안서 2010.03.16
환경부제안서 2010.03.16환경부제안서 2010.03.16
환경부제안서 2010.03.16
 
토종 개발자가 바라본 실리콘밸리 개발 트랜드
토종 개발자가 바라본 실리콘밸리 개발 트랜드토종 개발자가 바라본 실리콘밸리 개발 트랜드
토종 개발자가 바라본 실리콘밸리 개발 트랜드
 
IoTivity 오픈소스 기술
IoTivity 오픈소스 기술IoTivity 오픈소스 기술
IoTivity 오픈소스 기술
 
자바8 스트림 API 소개
자바8 스트림 API 소개자바8 스트림 API 소개
자바8 스트림 API 소개
 

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

(알도개) GraalVM – 자바를 넘어선 새로운 시작의 서막
(알도개) GraalVM – 자바를 넘어선 새로운 시작의 서막(알도개) GraalVM – 자바를 넘어선 새로운 시작의 서막
(알도개) GraalVM – 자바를 넘어선 새로운 시작의 서막Jay Park
 
지금 우리에게 필요한 것은
지금 우리에게 필요한 것은지금 우리에게 필요한 것은
지금 우리에게 필요한 것은현진 김
 
Golang+on+analytics+and+blockchain
Golang+on+analytics+and+blockchainGolang+on+analytics+and+blockchain
Golang+on+analytics+and+blockchainNAVER Engineering
 
Front end dev 2016 & beyond
Front end dev 2016 & beyondFront end dev 2016 & beyond
Front end dev 2016 & beyondJae Sung Park
 
전형규, SilvervineUE4Lua: UE4에서 Lua 사용하기, NDC2019
전형규, SilvervineUE4Lua: UE4에서 Lua 사용하기, NDC2019전형규, SilvervineUE4Lua: UE4에서 Lua 사용하기, NDC2019
전형규, SilvervineUE4Lua: UE4에서 Lua 사용하기, NDC2019devCAT Studio, NEXON
 
모바일 크로스플랫폼 비교 - 월간슬라이드 4월
모바일 크로스플랫폼 비교 - 월간슬라이드 4월모바일 크로스플랫폼 비교 - 월간슬라이드 4월
모바일 크로스플랫폼 비교 - 월간슬라이드 4월월간 IT 슬라이드
 
[150124 박민근] 모바일 게임 개발에서 루아 스크립트 활용하기
[150124 박민근] 모바일 게임 개발에서 루아 스크립트 활용하기[150124 박민근] 모바일 게임 개발에서 루아 스크립트 활용하기
[150124 박민근] 모바일 게임 개발에서 루아 스크립트 활용하기MinGeun Park
 
Single-page Application
Single-page ApplicationSingle-page Application
Single-page ApplicationSangmin Yoon
 
Introduction to Golang v2
Introduction to Golang v2Introduction to Golang v2
Introduction to Golang v2Hyejong
 
31기 고지웅 "구글오픈소스"
31기 고지웅 "구글오픈소스"31기 고지웅 "구글오픈소스"
31기 고지웅 "구글오픈소스"hyu_jaram
 
AngularJS In Production
AngularJS In ProductionAngularJS In Production
AngularJS In ProductionMooYeol Lee
 
Java (spring) vs javascript (node.js)
Java (spring) vs javascript (node.js)Java (spring) vs javascript (node.js)
Java (spring) vs javascript (node.js)류 영수
 
Modern Android App Development
Modern Android App DevelopmentModern Android App Development
Modern Android App DevelopmentChi Hwan Choi
 
(책 소개) Tucker의 Go 언어 프로그래밍
(책 소개) Tucker의 Go 언어 프로그래밍(책 소개) Tucker의 Go 언어 프로그래밍
(책 소개) Tucker의 Go 언어 프로그래밍Jay Park
 
Crawling with AWS Lambda
Crawling with AWS LambdaCrawling with AWS Lambda
Crawling with AWS LambdaSeungho Kim
 
도커 컨테이너 활용 사례 Codigm - 남 유석 개발팀장 :: AWS Container Day
도커 컨테이너 활용 사례 Codigm - 남 유석 개발팀장 :: AWS Container Day도커 컨테이너 활용 사례 Codigm - 남 유석 개발팀장 :: AWS Container Day
도커 컨테이너 활용 사례 Codigm - 남 유석 개발팀장 :: AWS Container DayAmazon Web Services Korea
 
클라우드 IDE, 구름 프로젝트 | Devon 2012
클라우드 IDE, 구름 프로젝트 | Devon 2012클라우드 IDE, 구름 프로젝트 | Devon 2012
클라우드 IDE, 구름 프로젝트 | Devon 2012Daum DNA
 
GKAC 2014 Nov. - 그루비로 안드로이드 앱 개발하기
GKAC 2014 Nov. - 그루비로 안드로이드 앱 개발하기GKAC 2014 Nov. - 그루비로 안드로이드 앱 개발하기
GKAC 2014 Nov. - 그루비로 안드로이드 앱 개발하기GDG Korea
 

Similar to 그루비 소개 발표자료 - 김연수 (20)

(알도개) GraalVM – 자바를 넘어선 새로운 시작의 서막
(알도개) GraalVM – 자바를 넘어선 새로운 시작의 서막(알도개) GraalVM – 자바를 넘어선 새로운 시작의 서막
(알도개) GraalVM – 자바를 넘어선 새로운 시작의 서막
 
지금 우리에게 필요한 것은
지금 우리에게 필요한 것은지금 우리에게 필요한 것은
지금 우리에게 필요한 것은
 
Golang+on+analytics+and+blockchain
Golang+on+analytics+and+blockchainGolang+on+analytics+and+blockchain
Golang+on+analytics+and+blockchain
 
Front end dev 2016 & beyond
Front end dev 2016 & beyondFront end dev 2016 & beyond
Front end dev 2016 & beyond
 
전형규, SilvervineUE4Lua: UE4에서 Lua 사용하기, NDC2019
전형규, SilvervineUE4Lua: UE4에서 Lua 사용하기, NDC2019전형규, SilvervineUE4Lua: UE4에서 Lua 사용하기, NDC2019
전형규, SilvervineUE4Lua: UE4에서 Lua 사용하기, NDC2019
 
모바일 크로스플랫폼 비교 - 월간슬라이드 4월
모바일 크로스플랫폼 비교 - 월간슬라이드 4월모바일 크로스플랫폼 비교 - 월간슬라이드 4월
모바일 크로스플랫폼 비교 - 월간슬라이드 4월
 
[150124 박민근] 모바일 게임 개발에서 루아 스크립트 활용하기
[150124 박민근] 모바일 게임 개발에서 루아 스크립트 활용하기[150124 박민근] 모바일 게임 개발에서 루아 스크립트 활용하기
[150124 박민근] 모바일 게임 개발에서 루아 스크립트 활용하기
 
Single-page Application
Single-page ApplicationSingle-page Application
Single-page Application
 
Introduction to Golang v2
Introduction to Golang v2Introduction to Golang v2
Introduction to Golang v2
 
31기 고지웅 "구글오픈소스"
31기 고지웅 "구글오픈소스"31기 고지웅 "구글오픈소스"
31기 고지웅 "구글오픈소스"
 
AngularJS In Production
AngularJS In ProductionAngularJS In Production
AngularJS In Production
 
Java (spring) vs javascript (node.js)
Java (spring) vs javascript (node.js)Java (spring) vs javascript (node.js)
Java (spring) vs javascript (node.js)
 
WebGL
WebGLWebGL
WebGL
 
Modern Android App Development
Modern Android App DevelopmentModern Android App Development
Modern Android App Development
 
(책 소개) Tucker의 Go 언어 프로그래밍
(책 소개) Tucker의 Go 언어 프로그래밍(책 소개) Tucker의 Go 언어 프로그래밍
(책 소개) Tucker의 Go 언어 프로그래밍
 
Crawling with AWS Lambda
Crawling with AWS LambdaCrawling with AWS Lambda
Crawling with AWS Lambda
 
도커 컨테이너 활용 사례 Codigm - 남 유석 개발팀장 :: AWS Container Day
도커 컨테이너 활용 사례 Codigm - 남 유석 개발팀장 :: AWS Container Day도커 컨테이너 활용 사례 Codigm - 남 유석 개발팀장 :: AWS Container Day
도커 컨테이너 활용 사례 Codigm - 남 유석 개발팀장 :: AWS Container Day
 
Goorm
GoormGoorm
Goorm
 
클라우드 IDE, 구름 프로젝트 | Devon 2012
클라우드 IDE, 구름 프로젝트 | Devon 2012클라우드 IDE, 구름 프로젝트 | Devon 2012
클라우드 IDE, 구름 프로젝트 | Devon 2012
 
GKAC 2014 Nov. - 그루비로 안드로이드 앱 개발하기
GKAC 2014 Nov. - 그루비로 안드로이드 앱 개발하기GKAC 2014 Nov. - 그루비로 안드로이드 앱 개발하기
GKAC 2014 Nov. - 그루비로 안드로이드 앱 개발하기
 

More from Yeon Soo Kim

Effective Unit Testing
Effective Unit TestingEffective Unit Testing
Effective Unit TestingYeon Soo Kim
 
프로그래머로 사는법
프로그래머로 사는법프로그래머로 사는법
프로그래머로 사는법Yeon Soo Kim
 
Spring3 발표자료 - 김연수
Spring3 발표자료 - 김연수Spring3 발표자료 - 김연수
Spring3 발표자료 - 김연수Yeon Soo Kim
 
HTTP 발표자료 - 김연수
HTTP 발표자료 - 김연수HTTP 발표자료 - 김연수
HTTP 발표자료 - 김연수Yeon Soo Kim
 
파이썬을 배워야하는 이유 발표자료 - 김연수
파이썬을 배워야하는 이유 발표자료 - 김연수파이썬을 배워야하는 이유 발표자료 - 김연수
파이썬을 배워야하는 이유 발표자료 - 김연수Yeon Soo Kim
 
Open API 발표자료 - 김연수
Open API 발표자료 - 김연수Open API 발표자료 - 김연수
Open API 발표자료 - 김연수Yeon Soo Kim
 
TCP/IP 발표자료 - 김연수
TCP/IP 발표자료 - 김연수TCP/IP 발표자료 - 김연수
TCP/IP 발표자료 - 김연수Yeon Soo Kim
 
Ajax 기술문서 - 김연수
Ajax 기술문서 - 김연수Ajax 기술문서 - 김연수
Ajax 기술문서 - 김연수Yeon Soo Kim
 

More from Yeon Soo Kim (8)

Effective Unit Testing
Effective Unit TestingEffective Unit Testing
Effective Unit Testing
 
프로그래머로 사는법
프로그래머로 사는법프로그래머로 사는법
프로그래머로 사는법
 
Spring3 발표자료 - 김연수
Spring3 발표자료 - 김연수Spring3 발표자료 - 김연수
Spring3 발표자료 - 김연수
 
HTTP 발표자료 - 김연수
HTTP 발표자료 - 김연수HTTP 발표자료 - 김연수
HTTP 발표자료 - 김연수
 
파이썬을 배워야하는 이유 발표자료 - 김연수
파이썬을 배워야하는 이유 발표자료 - 김연수파이썬을 배워야하는 이유 발표자료 - 김연수
파이썬을 배워야하는 이유 발표자료 - 김연수
 
Open API 발표자료 - 김연수
Open API 발표자료 - 김연수Open API 발표자료 - 김연수
Open API 발표자료 - 김연수
 
TCP/IP 발표자료 - 김연수
TCP/IP 발표자료 - 김연수TCP/IP 발표자료 - 김연수
TCP/IP 발표자료 - 김연수
 
Ajax 기술문서 - 김연수
Ajax 기술문서 - 김연수Ajax 기술문서 - 김연수
Ajax 기술문서 - 김연수
 

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

  • 2. 2 Contents Table Ⅰ. 개요 Ⅱ. 자바와의 비교 Ⅲ. 그루비 계열 기술들 1. 그루비란? 2. 특징 3. 스크립트 언어로의 전환 4. 어떤 업무에 활용 할 수 있을까? 5. 근황 6. 사례 1. 자바와의 차이점(기본 문법) 2. 코드량 비율 3. 수행 속도 1. Grails 2. Gradle Ⅳ. 그루비의 한계
  • 3. 3 Ⅰ. 그루비 소개 1. 그루비란? 2. 특징 3. 스크립트 언어로의 전환 4. 어떤 업무에 활용할 수 있을까? 5. 근황 6. 사례
  • 4. 4 그루비란? 1. 그루비 소개 그루비란? 그루비(Groovy)는 2002년 영국 출신의 프로그래머언 제임스 스트 라칸에 의해 창시 되었으며, 제임스 스트라칸은 그루비의 가장 중 요한 점이 타입이 유연 간결한 동적인 프로그래밍 언어라고 한다. 그루비는 자바, 파이썬, 루비, 스몰토크등의 특징을 더한 동적 객 체 지향 프로그래밍 언어이다. 영향을 받 은 언어 자바 루비 스몰톡 파이썬
  • 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 지원 등의 특징도 가지고 있지만, 이는 좀 복잡하여 설명을 생략
  • 6. 6 스크립트 언어로의 전환 1. 그루비 소개 스크립트 언어로의 전환 기존 메인 언어를 사용하고 있는 개발자들은 다음과 같은 형태로 스크립트 언어 전환을 비교적 쉽게 할 수 있다. 위의 스크립트 언어중 일부 Python, Ruby, Groovy의 특징을 비교하면, 특징 비교 Groovy Python Ruby •파이썬 •거의 모든 영역에 라이브러리가 존재한다 •루비 •가독성이 뛰어나다 (코드 문법이 인간 친화적이다) •그루비 •루비와 비슷하며, 자바와 상호간 연동 할 수 있고, 루 비보다 빠르다
  • 7. 7 어떤 업무에 활용 할 수 있을까? 어떤 업무에 활용 할 수 있을까? 1. 그루비 소개 운영 유틸리티 테스트 코드(기존 자 바 코드를 테스트 하 는) 프로젝트 개발시 필 요한 도구 빠른 프로토 타입 개 발(웹 사이트, 웹서 비스 – Grails 이용) 그루비는 실제로 자바로 할 수 있는 거의 모든 것을 개발 할 수 있다
  • 8. 9 근황 1. 그루비 소개 TIOBE 순위 2013년 10월 TIOBE 순위를 보면, 전년대 비 그루비의 순위가 급등하여 18위에 등 극한 걸 볼 수 있다. 이는 자바에 비하면 높은 순위는 아니나, 비슷한 계열의 스크립트 언어, 파이썬 펄 , 루비 바로 아래에 위치한 스크립트 언 어란 점은 눈여겨 볼만 하다.
  • 9. 10 근황 프로그래밍 언어별 평균 연봉 1. 그루비 소개 2013년 8월 21일 프로그래밍 언어별 평균 연봉에 의하면 Groovy는 102,650.86$(한화로 약 1억이 넘는 금액)로, 자바 바로 다음 순위에 위치했다. http://bpodgursky.com/2013/08/21/average-income-per-programming-language/
  • 10. 11 사례 1. 그루비 소개 그루비 사례 1 CODENARC라는 그루비 소스 코드 정적 분석 툴(grails로 개발된 웹 어플리케이션) [이미 정의된 지켜야 될 코딩 룰중 현재의 소스가 어떤 것들을 어겼는지 알려줌]
  • 11. 12 사례 1. 그루비 소개 그루비 사례 2 Linkedin이라는 비즈니스 중심의 소셜 네트워크 사이트 (비즈니스 인맥 사이트인 동시에, 구인 구직 사이트라 할 수 있음) 2002년 레이드 호프만(Reid Hoffman)이 10명의 동료들과 공동으로 설립하였으며 2003년 5월 사이트 개설을 통 해 서비스를 제공하기 시작했다. 링크트인의 가입자 수는 서비스 런칭 6년 뒤인 2009년 10월 5천만 명을 돌파하였으며, 이후 1년 반이 지난 2011년 3월 1억 명을 넘어섰다. (2008년 5월 5일 자료) ㅋ
  • 12. 13 사례 1. 그루비 소개 그루비 사례 2 개발 과정에서 나온 얘기 (동적 언어는 자바 개발자 팀에게 새로워 익숙하지 않다) •그루비는 보기에 자바와 같다, 그러나 동적 특성은 컴파일시에 오류를 잡기가 힘들다, 그리고 리팩토링을 자동화 하기 힘들다 •심각하지 않은 오류를 잡는데 테스트 범위가 더 많이 필요하다 결론 •Grails는 메인 자바 웹 프레임워크 보다 생산성이 더 높다 •Grails는 기업 환경에서 사용 할 수 있다(J2EE 처럼) •Grails는 자바 생태계의 콤포넌트 들과 긴밀하게 통합 될 수 있다 왜 Grails 인가? •더 나은 생산성을 가진 웹 프레임워크 •신속한 프로토 타이핑의 가능성과 생산성 •Benefit&Risk 생략
  • 13. 14 Ⅱ. 자바와의 비교 1. 자바와의 차이점(기본 문법) 2. 코드량 비율 3. 수행 속도
  • 14. 15 자바와의 차이점 자바와의 차이점(기본 문법) 2. 자바와의 비교 http://groovy.codehaus.org/Groovy+style+and+language+feature+guidelines+for+Java+developers
  • 15. 16 자바와의 차이점 코드량 비율 2. 자바와의 비교 C 코드로 개발된 코드를 다른 고급언어들로 표현 했을때의 일반적인 소스코드 비율(숫자가 높을수록 좋음) 그루비는 자바 코드와 유사하면서 도 이와 같은 결과가 가능하다 (이는 곧 자바 보다 생산성이 향상 됨을 의미한다) 각종 자료 출처 : CODE COMPLETE 2/E 서적 참고로 •프로그래밍 언어는 다양한 방법으로 생산성과 품질에 영향을 준다 •친숙한 언어를 사용할때(그렇지 않은 경우 보다) 생산성이 높다(3년이상 사용시 30% 높다, 경험이 적은 사람보다는 3배이상 높다) •고급 언어를 사용하는 프로그래머가 저급언어 프로그래머 보다 생산성과 품질이 높다 – 이를 테면 고급 언어는 코드 한줄로 저급언어의 여러 가지를 표현할 수 있다(생산성, 신뢰성, 명료성 향상)
  • 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보다 빠르다는 얘기가 있음)
  • 17. 18 Ⅲ. 그루비 계열 기술들 1. Grails 2. Gradle
  • 18. 19 Grails Grails 3. 그루비 계열 기술들 Grails는 Ruby 언어의 웹 개발 프레임워크인 Ruby On Rails를 그루비용으로 개발한 웹 개 발 프레임 워크이다. 하지만 Grails가 다른 프레임워크와의 차이점은 Spring이나 Hibernat e같이 기존에 구현된 뛰어난 자바 기술을 활용하여 구현됐다는 점이다. 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 등 …)
  • 19. 20 Gradle Gradle 3. 그루비 계열 기술들 Gradle은 지금까지 자바 진영에서 많이 사용해온 Ant 빌드 툴과 Maven 빌드 툴의 단점은 버리고, 장점을 취한 빌드 툴이다. 따라서 Ant와 Maven 빌드 툴의 기능을 모두 포함하고 있다. Ant의 가장 큰 장점을 들자면 개발자가 자유롭게 빌드 단위(Ant에서는 target이라고 한다.)를 지정하고 빌드 단위 간의 의존 관계를 자유롭게 설정할 수 있다는 것이다. 하지만 자유도가 높다는 것은 잘 활용할 경우 좋은 도구가 될 수 있지만 그렇지 않을 경우 애물 단지로 전락할 가능성이 있다는 것이다. Maven의 가장 큰 장점은 Convention Over Configuration 전략에 따라 프로젝트 빌드 과정에 대한 많은 부분이 이미 관례로 정해져 있다는 것이다. 따라서 Maven 기반 프로젝트를 경험한 개발자는 Maven을 기반으로 하고 있는 새로운 프로젝트에서도 쉽게 적응할 수 있다는 것이다. 하지만 관례가 항상 좋은 것은 아니며, 특수한 상황이 발생하는 경우에는 맞지 않는 경우도 종종 발생한다. Mave n의 관례에 거부감을 가지는 개발자도 있다. Gradle은 Ant의 자유도와 Maven의 관례의 장점을 모두 흡수했다. 그리고 Ant와 Maven 빌드 툴 모두 가지고 있 었던 가장 큰 단점이 XML에 대한 이슈도 Groovy라는 언어를 사용해 해결하고 있다. Ant의 자유도와 Maven의 관 례를 어떻게 흡수하고 있는지 앞으로 살펴보도록 하겠다. (쉽게 정리하면, 고정적인 빌드 과정 속 동적인 빌드 관련 동작을 추가 하기 쉽다 – 그루비 문법 사용)
  • 21. 22 스칼라 4. 그루비의 한계 James Strachan (그루비 제작자) I can honestly say if someone had sho wn me the Programming Scala book b y by Martin Odersky, Lex Spoon & Bill Venners back in 2003 I'd probably hav e never created Groovy. 만약 내가 2003년(그루비 제작 시기)에 프 로그래밍 스칼라 책을 읽었다면 그루비를 만들지 않았을 것이다. 정적 타이 핑 동적 타이 핑 함수형 프 로그래밍 객체지향 프로그래 밍 스칼라 JVM 위에서 실행 되 고, 자바 보다 느리지 도 않다고? 스프링 제작자 로드 존슨도 스칼라를 배운 다고? 스칼라의 대표적인 웹 개발 프레임 워크
  • 22. 23 동적 타이핑 언어와 컨벤션 4. 그루비의 한계 동적 타이핑 컨벤션 자료의 부재 •Eclipse의 자동완성(Code Assist) 기능 사용 불가 - 라이브러리 사용시 API 문서를 자세히 봐야하는 불편함 - 해결 방법 : 테스트 코드를 꼼꼼히 작성하라 •특정 모듈 개발 시 로직을 확인하기 어려워 질 수 있다. •자바의 경우 컴파일 단계에서 잡을 수 있는 에러도 런타임 시에 발견하게 된다. •그루비 라이브러리가 아닌 자바 라이브러리로 소스를 짜 다 보면 자바와의 코드 라인 수 차이가 크지 않다. •컨벤션이 없다. (오히려 다양한 문법을 제공하니 컨벤션을 강요하지 않는 경향이 있는듯) •그루비로 포팅된 라이브러리가 아닌 자바 라이브러리만을 사용하여 구현하다 보면 결국 자바 코드와 크게 다르지 않 다. •여럿이서 프로젝트를 하게 된다면 이 부분을 잘 정의할 필 요가 있다. •번역서는 국내 유일 단 한권 •구글에 검색하여도 한글로 작성된 자료는 매우 부족
  • 23. 24 그럼에도 그루비 4. 그루비의 한계 자바 그루비 자바 개발자의 그루 비 학습은 쉽게 배워 생산성을 크게 향상 시킬 뿐만 아니라 자 바의 역량 마저 높여 줄 수 있다. 새로운 방법을 통한 기존 지식의 확장 등으로, 스칼라 보다 쉽게 배우고 스칼 라보다 빠른 생산성 JVM을 이용하게 개발된 프로그래밍 언어는 많지만 그중 그루비는 JSR(Java Specification Requests)-24 1에 등록된 자바가 인정한 제 2의 공식언어라 볼 수 있다

Editor's Notes

  1. 목차는 다음과 같이 이루어져 있습니다.