15. Apache Commons Library
프로그램의 공통적인 기능을 재사용하기
위한 목적으로 시작
Google Library와 더불어 전세계적으로 가
장 많이 사용되고 있는 Library
현재 Commons Library는 40여개의 컴포
넌트들로 구성
각각의 컴포넌트를 필요에 따라서 선택적
으로 사용하는 것이 가능
16.
17.
18.
19. 대표적인 코드 저장소인 Google Code(http://code.google.com/)와
소스포지(http://sourceforge.net/)에 공개된 약 160,000개의 오픈소스 프로젝트 중
Commons 라이브러리가 사용된 프로젝트를 분석하여 시각적으로 표현한 것
35. Release Note
Last Published
2011년 11월 09일 (Version:3.1)
javaSE 5.0 기준으로 재개발하여 배포
Commons Lang 2.x
JDK 1.2 ~ JDK 1.4 까지 지원
org.apache.commons.lang.*
Commons Lang 3.x
JDK 1.5 이상 지원
org.apache.commons.lang3.*
개발시 사용하는 JDK 기준으로 선택적으로 사용
필요에 의하여 혼용하여 사용 가능 (권장하지 않음)
36. Release Note
Last Published
2008년 4월 15일 (Version:3.2.1)
현재 Commons Collections 개발중단
Commons Collections 라이브러리
JDK 1.2 ~ JDK 1.4 까지 지원
org.apache.commons.collection.*
개발시 사용하는 JDK 버전이 1.5 이상일 경우 사용을
권장하지 않음
37.
38. 소개
Google Core Library (JavaSE 5.0 +)
구글 자바 프로젝트에서 기본적으로 사용
Google Guava로 명칭을 통일
Andorid 개발 지원
GWT 개발 지원
Apache license 2.0
39. Apache Commons
Lang 컴포넌트
Apache Commons Google
Collections 컴포넌트
Guava
유용한 유틸리티
40.
41. Release Note
Last Published
2012년 4월 30일 (Version:Release12)
Apache Commons Collections 라이브러리가
Generic를 지원하지 않아 대체하려 개발 시작
2009년 JDK 1.5를 기반으로 프로젝트 시작
Release11까지는 JDK 1.5 기반
Release12부터 JDK 1.6 기반
버전업을 하면서 이름 변경
Google Collections Library => Google Guava
42. 제공되는 기능
• Collections • Strings
• Concurrency • Math
• Primitives • In-memory caching
• Reflection • Publish/Subscribe
• Comparison • Various basic data
• I/O
• Hashing
• networking
43. 제공되는 기능
• Collections • Strings
• Concurrency • Math
• Primitives • In-memory caching
• Reflection • Publish/Subscribe
“JDK-plus”!!!
• Comparison • Various basic data
• I/O
• Hashing
• networking
44.
45.
46. Basic 유틸리티 (1/4)
Object 클래스 유틸리티
java.lang.Object 클래스 Wrapping 유틸리티
com.google.common.base.Objects
equals() : equals 메소드 Override 지원
hashCode() : hashCode 메소드 Override 지원
toString() : toString 메소드 Override 지원
47.
48. Basic 유틸리티 (2/4)
Null 체크 유틸리티
문자열의 null 문제를 다양하게 체크
com.google.common.base.Strings
emptyToNull(String) : 파라미터로 넘어온
값이 Empty 일 경우 Null 반환
isNullOrEmpty(String) : 파라미터로 넘어온
값이 Null이나 Empty인지 검사
nullToEmpty(String) : 파라미터로 넘어온 값
이 Null 일 경우 Empty 반환
49.
50. Basic 유틸리티 (3/4)
Precondition 유틸리티
파라미터로 전달되는 값의 유효성 검사
com.google.common.base.Preconditions
checkArgument(boolean) : 인자 값을 미리
테스트하여 정상인지 검사
checkNotNull(T) : 인자 값을 미리 테스트하
여 Null인지 검사
checkState(boolean) : 인자값을 미리 테스트
하여 상태값을 검사
51.
52. Basic 유틸리티 (4/4)
Ordering 유틸리티
객체 정렬을 위한 다양한 기능 제공
com.google.common.collect.Ordering
reverse() : 값을 반대로 정렬
nullsFirst() : null이 존재할 경우 처음으로 정렬
nullsLast() : null이 존재할 경우 마지막으로 정렬
53.
54. Strings 유틸리티 (1/2)
Joiner 유틸리티
다양한 형태의 iterator를 하나로 합친다.
com.google.common.base.Joiner
join(Object[] parts) : 파라미터로 넘어온 배
열을 하나의 문자열로 합친다.
on(String separator) : 합칠 문자열 사이의
Separator를 지정
skipNulls() : 합칠 문자열 중 Null 값 제거
55.
56. Strings 유틸리티 (2/2)
Splitter 유틸리티
문자열을 다양한 방식으로 분리한다.
com.google.common.base.Splitter
split(CharSequence sequnce) : 파라미터로
넘어온 문자열을 분리한다.
on(String separator) : 분리할 기분
Separator를 지정
omitEmptyStrings() : 분리 된 결과물에서
Empty 제거
62. 새롭게 추가된 Collection
Multiset
com.google.common.collect.Multiset
두 개 이상의 키를 핸들링 할 수 있는 Set 형태의 Collection
HashMultiset, TreeMultiset, LinkedHashMultiset,
ImmutableMultiset
Multimap
com.google.common.collect.Multimap
두 개 이상의 키를 핸들링 할 수 있는 Map 형태의 Collection
HashMultimap, TreeMultimap, LinkedHashMultimap,
ImmutableListMultimap
BiMap
com.google.common.collect.BiMap
일반적인 Map과 달리 key와 value 양방향으로 검색이 가능한
Collection
HashBiMap, ImmutableBiMap, EnumBiMap, EnumHashBiMap
63.
64.
65.
66. Guava 라이브러리를 써야하는 이유
Apache Commons Collection의 경우 개발
된지 10여년이 되었다.
Apache Commons Collection의 경우
JavaSE 5의 혜택이 없다. (generics, varags,
enums, autoboxing)
Google Guava의 경우 좀더 현대적이다.
(Generic 지원, JDK7 지원)
아파치 라이센스 2.0
Java Collection Framework와 완벽한 호환