2012 년자바카페 OPEN 세미나 주제 : Introduction to Google Guava 2012. 6. 16 김흥래 hrkim3468@gmail.com Java Developer s Forum JavaCafe community
구아바???? Java Developer s Forum JavaCafe Community
소개 Google Core Library (JavaSE 5.0 +) 구글자바프로젝트에서기본적으로사용 Google Guava로명칭을통일 Andorid 개발지원 GWT 개발지원 Apache license 2.0
지겹다. 또라이브러리야??? 식상해.
Apache Commons Lang 컴포넌트 Apache Commons Collections 컴포넌트 Google Guava 유용한유틸리티
수많은프로젝트에 비슷한기능은없을까?
비슷한기능을 재사용할수는없을까?
Apache Commons Library 프로그램의공통적인기능을재사용하기위한목적으로시작 Google Library 와더불어전세계적으로가장많이사용되고있는 Library 현재 Commons Library 는 40 여개의컴포넌트들로구성 각각의컴포넌트를필요에따라서선택적으로사용하는것이가능
대표적인코드저장소인 Google Code(http://code.google.com/) 와소스포지 (http://sourceforge.net/) 에공개된약 160,000 개의오픈소스프로젝트중 Commons 라이브러리가사용된프로젝트를분석하여시각적으로표현한것
JavaSE Standard lang 을위한유틸리티
java.lang.*
java.lang.* Packages Basic Class Object, Process, Runtime, System, Thread, Class, ClassLoader Wrapping Class Boolean, Byte, Character, Double, Float, Integer, Long String Class String, StringBuffer, StringBuilder
특징 Base Function ObjectUtils, ClassUtils, ArrayUtils, BooleanUtils 문자열조작 StringUtils, StringEscapeUtils, RandomStringUtils, Tokenizer, WordUtils Character 핸들링 CharSetUtils, CharSet, CharRange, CharUtils JVM Interaction SystemUtils, CharEncoding Serialization SerializationUtils, SerializationException
JavaSE Standard Collection 을위한유틸리티
java.util.*
java.util.* Packages Collections Class ArrayList, Array, HashMap, HashSet, LinkedList, Vector, Stack Utility Class Timer, Random, Properties, Locale, Date, Calendar
특징 Collection 유틸리티 Ordered Maps Bidirectional Maps Queues Buffers Bags
Apache Commons 짱좋아요! 그냥이거쓰면안되나요?
Lang 컴포넌트 Collection 컴포넌트 JavaSE 5 (-) 지원 JavaSE 5 (-) 지원 JavaSE 5 (+) 지원 JavaSE 5 (+) 미지원 각각다른패키지로제공됨 현재개발중단됨
Java 5 특징 Generics 개념도입 Enum 타입추가 언어차원의 Annotation 지원 파라미터가변인자 (Varargs : Variable Argument List)
2004?????? 출처 http://en.wikipedia.org/wiki/java_version_history
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 기준으로선택적으로사용 필요에의하여혼용하여사용가능 ( 권장하지않음 )
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 이상일경우사용을권장하지않음
소개 Google Core Library (JavaSE 5.0 +) 구글자바프로젝트에서기본적으로사용 Google Guava로명칭을통일 Andorid 개발지원 GWT 개발지원 Apache license 2.0
Apache Commons Lang 컴포넌트 Apache Commons Collections 컴포넌트 Google Guava 유용한유틸리티
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
제공되는기능 Collections Concurrency Primitives Reflection Comparison I/O Hashing networking Strings Math In-memory caching Publish/Subscribe Various basic data
제공되는기능 Collections Concurrency Primitives Reflection Comparison I/O Hashing networking JDK-plus!!! Strings Math In-memory caching Publish/Subscribe Various basic data
Basic 유틸리티 (1/4) Object 클래스유틸리티 java.lang.object 클래스 Wrapping 유틸리티 com.google.common.base.objects equals() : equals 메소드 Override 지원 hashcode() : hashcode 메소드 Override 지원 tostring() : tostring 메소드 Override 지원
Basic 유틸리티 (2/4) Null 체크유틸리티 문자열의 null 문제를다양하게체크 com.google.common.base.strings emptytonull(string) : 파라미터로넘어온값이 Empty 일경우 Null 반환 isnullorempty(string) : 파라미터로넘어온값이 Null 이나 Empty 인지검사 nulltoempty(string) : 파라미터로넘어온값이 Null 일경우 Empty 반환
Basic 유틸리티 (3/4) Precondition 유틸리티 파라미터로전달되는값의유효성검사 com.google.common.base.preconditions checkargument(boolean) : 인자값을미리테스트하여정상인지검사 checknotnull(t) : 인자값을미리테스트하여 Null 인지검사 checkstate(boolean) : 인자값을미리테스트하여상태값을검사
Basic 유틸리티 (4/4) Ordering 유틸리티 객체정렬을위한다양한기능제공 com.google.common.collect.ordering reverse() : 값을반대로정렬 nullsfirst() : null이존재할경우처음으로정렬 nullslast() : null이존재할경우마지막으로정렬
Strings 유틸리티 (1/2) Joiner 유틸리티 다양한형태의 iterator 를하나로합친다. com.google.common.base.joiner join(object[] parts) : 파라미터로넘어온배열을하나의문자열로합친다. on(string separator) : 합칠문자열사이의 Separator 를지정 skipnulls() : 합칠문자열중 Null 값제거
Strings 유틸리티 (2/2) Splitter 유틸리티 문자열을다양한방식으로분리한다. com.google.common.base.splitter split(charsequence sequnce) : 파라미터로넘어온문자열을분리한다. on(string separator) : 분리할기분 Separator 를지정 omitemptystrings() : 분리된결과물에서 Empty 제거
Collection 유틸리티
Immutable Collections
새롭게추가된 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
Guava 라이브러리를써야하는이유 Apache Commons Collection 의경우개발된지 10 여년이되었다. Apache Commons Collection 의경우 JavaSE 5 의혜택이없다. (generics, varags, enums, autoboxing) Google Guava 의경우좀더현대적이다. (Generic 지원, JDK7 지원 ) 아파치라이센스 2.0 Java Collection Framework 와완벽한호환