SlideShare une entreprise Scribd logo
1  sur  67
Télécharger pour lire hors ligne
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    Google
Collections 컴포넌트
                   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    Google
Collections 컴포넌트
                   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   •   Strings
•   Concurrency   •   Math
•   Primitives    •   In-memory caching
•   Reflection    •   Publish/Subscribe
•   Comparison    •   Various basic data
•   I/O
•   Hashing
•   networking
제공되는 기능
•   Collections          • Strings
•   Concurrency          • Math
•   Primitives           • In-memory caching
•   Reflection           • Publish/Subscribe
                  “JDK-plus”!!!
•   Comparison           • Various basic data
•   I/O
•   Hashing
•   networking
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와 완벽한 호환
[2012 자바카페 OPEN 세미나] Introduction to google guava

Contenu connexe

Tendances

데이터 분석 5 - Java Collection Framework - LinkedList 파헤치기
데이터 분석 5 - Java Collection Framework - LinkedList 파헤치기데이터 분석 5 - Java Collection Framework - LinkedList 파헤치기
데이터 분석 5 - Java Collection Framework - LinkedList 파헤치기Jaewook Byun
 
데이터 분석 3 - Java Collection Framework와 ArrayList
데이터 분석 3 - Java Collection Framework와 ArrayList데이터 분석 3 - Java Collection Framework와 ArrayList
데이터 분석 3 - Java Collection Framework와 ArrayListJaewook Byun
 
SpringCamp 2013 : About Jdk8
SpringCamp 2013 : About Jdk8SpringCamp 2013 : About Jdk8
SpringCamp 2013 : About Jdk8Sangmin Lee
 
자바 테스트 자동화
자바 테스트 자동화자바 테스트 자동화
자바 테스트 자동화Sungchul Park
 
Jdk(java) 7 - 5. invoke-dynamic
Jdk(java) 7 - 5. invoke-dynamicJdk(java) 7 - 5. invoke-dynamic
Jdk(java) 7 - 5. invoke-dynamicknight1128
 
Java 강의자료 ed11
Java 강의자료 ed11Java 강의자료 ed11
Java 강의자료 ed11hungrok
 
데이터 분석 6 - 나만의 배열 기반 LIST, MyLinkedList를 만들어보자
데이터 분석 6 - 나만의 배열 기반 LIST, MyLinkedList를 만들어보자데이터 분석 6 - 나만의 배열 기반 LIST, MyLinkedList를 만들어보자
데이터 분석 6 - 나만의 배열 기반 LIST, MyLinkedList를 만들어보자Jaewook Byun
 
자바8 람다식 소개
자바8 람다식 소개자바8 람다식 소개
자바8 람다식 소개beom kyun choi
 
데이터 분석 4 - 나만의 배열 기반 LIST, MyArrayList를 만들어보자
데이터 분석 4 - 나만의 배열 기반 LIST, MyArrayList를 만들어보자데이터 분석 4 - 나만의 배열 기반 LIST, MyArrayList를 만들어보자
데이터 분석 4 - 나만의 배열 기반 LIST, MyArrayList를 만들어보자Jaewook Byun
 
SLiPP 서비스를 Java에서 Scala로 전환하면서 경험담
SLiPP 서비스를 Java에서 Scala로 전환하면서 경험담SLiPP 서비스를 Java에서 Scala로 전환하면서 경험담
SLiPP 서비스를 Java에서 Scala로 전환하면서 경험담Javajigi Jaesung
 
GKAC 2015 Apr. - Battery, 안드로이드를 위한 쉬운 웹 API 호출
GKAC 2015 Apr. - Battery, 안드로이드를 위한 쉬운 웹 API 호출GKAC 2015 Apr. - Battery, 안드로이드를 위한 쉬운 웹 API 호출
GKAC 2015 Apr. - Battery, 안드로이드를 위한 쉬운 웹 API 호출GDG Korea
 
Jquery javascript_ed10
Jquery javascript_ed10Jquery javascript_ed10
Jquery javascript_ed10hungrok
 
Swift3 generic
Swift3 genericSwift3 generic
Swift3 genericEunjoo Im
 
Java programming pdf
Java programming pdfJava programming pdf
Java programming pdfJi Hoon Lee
 
나에 첫번째 자바8 람다식 지앤선
나에 첫번째 자바8 람다식   지앤선나에 첫번째 자바8 람다식   지앤선
나에 첫번째 자바8 람다식 지앤선daewon jeong
 
MyBatis에서 JPA로
MyBatis에서 JPA로MyBatis에서 JPA로
MyBatis에서 JPA로Dongmin Shin
 
JVM 메모리 해부학
JVM 메모리 해부학JVM 메모리 해부학
JVM 메모리 해부학Greg Lee
 

Tendances (20)

Fp basic-kotlin
Fp basic-kotlinFp basic-kotlin
Fp basic-kotlin
 
데이터 분석 5 - Java Collection Framework - LinkedList 파헤치기
데이터 분석 5 - Java Collection Framework - LinkedList 파헤치기데이터 분석 5 - Java Collection Framework - LinkedList 파헤치기
데이터 분석 5 - Java Collection Framework - LinkedList 파헤치기
 
데이터 분석 3 - Java Collection Framework와 ArrayList
데이터 분석 3 - Java Collection Framework와 ArrayList데이터 분석 3 - Java Collection Framework와 ArrayList
데이터 분석 3 - Java Collection Framework와 ArrayList
 
SpringCamp 2013 : About Jdk8
SpringCamp 2013 : About Jdk8SpringCamp 2013 : About Jdk8
SpringCamp 2013 : About Jdk8
 
자바 테스트 자동화
자바 테스트 자동화자바 테스트 자동화
자바 테스트 자동화
 
Jdk(java) 7 - 5. invoke-dynamic
Jdk(java) 7 - 5. invoke-dynamicJdk(java) 7 - 5. invoke-dynamic
Jdk(java) 7 - 5. invoke-dynamic
 
Java 강의자료 ed11
Java 강의자료 ed11Java 강의자료 ed11
Java 강의자료 ed11
 
데이터 분석 6 - 나만의 배열 기반 LIST, MyLinkedList를 만들어보자
데이터 분석 6 - 나만의 배열 기반 LIST, MyLinkedList를 만들어보자데이터 분석 6 - 나만의 배열 기반 LIST, MyLinkedList를 만들어보자
데이터 분석 6 - 나만의 배열 기반 LIST, MyLinkedList를 만들어보자
 
자바8 람다식 소개
자바8 람다식 소개자바8 람다식 소개
자바8 람다식 소개
 
데이터 분석 4 - 나만의 배열 기반 LIST, MyArrayList를 만들어보자
데이터 분석 4 - 나만의 배열 기반 LIST, MyArrayList를 만들어보자데이터 분석 4 - 나만의 배열 기반 LIST, MyArrayList를 만들어보자
데이터 분석 4 - 나만의 배열 기반 LIST, MyArrayList를 만들어보자
 
SLiPP 서비스를 Java에서 Scala로 전환하면서 경험담
SLiPP 서비스를 Java에서 Scala로 전환하면서 경험담SLiPP 서비스를 Java에서 Scala로 전환하면서 경험담
SLiPP 서비스를 Java에서 Scala로 전환하면서 경험담
 
Java class
Java classJava class
Java class
 
GKAC 2015 Apr. - Battery, 안드로이드를 위한 쉬운 웹 API 호출
GKAC 2015 Apr. - Battery, 안드로이드를 위한 쉬운 웹 API 호출GKAC 2015 Apr. - Battery, 안드로이드를 위한 쉬운 웹 API 호출
GKAC 2015 Apr. - Battery, 안드로이드를 위한 쉬운 웹 API 호출
 
Java lambda
Java lambdaJava lambda
Java lambda
 
Jquery javascript_ed10
Jquery javascript_ed10Jquery javascript_ed10
Jquery javascript_ed10
 
Swift3 generic
Swift3 genericSwift3 generic
Swift3 generic
 
Java programming pdf
Java programming pdfJava programming pdf
Java programming pdf
 
나에 첫번째 자바8 람다식 지앤선
나에 첫번째 자바8 람다식   지앤선나에 첫번째 자바8 람다식   지앤선
나에 첫번째 자바8 람다식 지앤선
 
MyBatis에서 JPA로
MyBatis에서 JPA로MyBatis에서 JPA로
MyBatis에서 JPA로
 
JVM 메모리 해부학
JVM 메모리 해부학JVM 메모리 해부학
JVM 메모리 해부학
 

En vedette

Google Guava & EMF @ GTUG Nantes
Google Guava & EMF @ GTUG NantesGoogle Guava & EMF @ GTUG Nantes
Google Guava & EMF @ GTUG Nantesmikaelbarbero
 
java lang
java langjava lang
java langnurma
 
이것이 자바다 Chap.11 기본 API 클래스(java)(KOR)
이것이 자바다 Chap.11 기본 API 클래스(java)(KOR)이것이 자바다 Chap.11 기본 API 클래스(java)(KOR)
이것이 자바다 Chap.11 기본 API 클래스(java)(KOR)MIN SEOK KOO
 
Spring 3.1에서 ehcache 활용 전략
Spring 3.1에서 ehcache 활용 전략Spring 3.1에서 ehcache 활용 전략
Spring 3.1에서 ehcache 활용 전략흥래 김
 
[DevOn 2013] Dynamic web proxy
[DevOn 2013] Dynamic web proxy[DevOn 2013] Dynamic web proxy
[DevOn 2013] Dynamic web proxy흥래 김
 
자바9 특징 (Java9 Features)
자바9 특징 (Java9 Features)자바9 특징 (Java9 Features)
자바9 특징 (Java9 Features)Chang-Hwan Han
 
Spring-Boot (springcamp2014)
Spring-Boot (springcamp2014)Spring-Boot (springcamp2014)
Spring-Boot (springcamp2014)sung yong jung
 
spring.io를 통해 배우는 spring 개발사례
spring.io를 통해 배우는 spring 개발사례spring.io를 통해 배우는 spring 개발사례
spring.io를 통해 배우는 spring 개발사례Daehwan Lee
 
Spring integration을 통해_살펴본_메시징_세계
Spring integration을 통해_살펴본_메시징_세계Spring integration을 통해_살펴본_메시징_세계
Spring integration을 통해_살펴본_메시징_세계Wangeun Lee
 
[JCO 컨퍼런스] 웹사이트 Front-End 성능 최적화
[JCO 컨퍼런스] 웹사이트 Front-End 성능 최적화[JCO 컨퍼런스] 웹사이트 Front-End 성능 최적화
[JCO 컨퍼런스] 웹사이트 Front-End 성능 최적화흥래 김
 

En vedette (13)

Google Guava & EMF @ GTUG Nantes
Google Guava & EMF @ GTUG NantesGoogle Guava & EMF @ GTUG Nantes
Google Guava & EMF @ GTUG Nantes
 
java lang
java langjava lang
java lang
 
이것이 자바다 Chap.11 기본 API 클래스(java)(KOR)
이것이 자바다 Chap.11 기본 API 클래스(java)(KOR)이것이 자바다 Chap.11 기본 API 클래스(java)(KOR)
이것이 자바다 Chap.11 기본 API 클래스(java)(KOR)
 
3. stream api
3. stream api3. stream api
3. stream api
 
Java API, Exceptions and IO
Java API, Exceptions and IOJava API, Exceptions and IO
Java API, Exceptions and IO
 
Spring 3.1에서 ehcache 활용 전략
Spring 3.1에서 ehcache 활용 전략Spring 3.1에서 ehcache 활용 전략
Spring 3.1에서 ehcache 활용 전략
 
[DevOn 2013] Dynamic web proxy
[DevOn 2013] Dynamic web proxy[DevOn 2013] Dynamic web proxy
[DevOn 2013] Dynamic web proxy
 
자바9 특징 (Java9 Features)
자바9 특징 (Java9 Features)자바9 특징 (Java9 Features)
자바9 특징 (Java9 Features)
 
Spring-Boot (springcamp2014)
Spring-Boot (springcamp2014)Spring-Boot (springcamp2014)
Spring-Boot (springcamp2014)
 
Spring Boot 소개
Spring Boot 소개Spring Boot 소개
Spring Boot 소개
 
spring.io를 통해 배우는 spring 개발사례
spring.io를 통해 배우는 spring 개발사례spring.io를 통해 배우는 spring 개발사례
spring.io를 통해 배우는 spring 개발사례
 
Spring integration을 통해_살펴본_메시징_세계
Spring integration을 통해_살펴본_메시징_세계Spring integration을 통해_살펴본_메시징_세계
Spring integration을 통해_살펴본_메시징_세계
 
[JCO 컨퍼런스] 웹사이트 Front-End 성능 최적화
[JCO 컨퍼런스] 웹사이트 Front-End 성능 최적화[JCO 컨퍼런스] 웹사이트 Front-End 성능 최적화
[JCO 컨퍼런스] 웹사이트 Front-End 성능 최적화
 

Similaire à [2012 자바카페 OPEN 세미나] Introduction to google guava

Java collections framework
Java collections frameworkJava collections framework
Java collections framework경주 전
 
Eclipse RAP - Single Source
Eclipse RAP - Single SourceEclipse RAP - Single Source
Eclipse RAP - Single Sourcecho hyun jong
 
[오픈소스컨설팅]Spring 3.1 Core
[오픈소스컨설팅]Spring 3.1 Core [오픈소스컨설팅]Spring 3.1 Core
[오픈소스컨설팅]Spring 3.1 Core Ji-Woong Choi
 
18 2 파이썬표준라이브러리
18 2 파이썬표준라이브러리18 2 파이썬표준라이브러리
18 2 파이썬표준라이브러리Changwon National University
 
[D2 campus seminar]스칼라를 통한 다양한 언어의 패러다임 맛보기
[D2 campus seminar]스칼라를 통한 다양한 언어의 패러다임 맛보기[D2 campus seminar]스칼라를 통한 다양한 언어의 패러다임 맛보기
[D2 campus seminar]스칼라를 통한 다양한 언어의 패러다임 맛보기NAVER D2
 
Open Source Engineering V2
Open Source Engineering V2Open Source Engineering V2
Open Source Engineering V2YoungSu Son
 
Devon 2011-o-4-textcube 2.0과 codeball 프레임웍
Devon 2011-o-4-textcube 2.0과 codeball 프레임웍Devon 2011-o-4-textcube 2.0과 codeball 프레임웍
Devon 2011-o-4-textcube 2.0과 codeball 프레임웍Daum DNA
 
Sonarqube 20160509
Sonarqube 20160509Sonarqube 20160509
Sonarqube 20160509영석 조
 
Scala, Scalability
Scala, ScalabilityScala, Scalability
Scala, ScalabilityDongwook Lee
 
ibatis_khhan
ibatis_khhanibatis_khhan
ibatis_khhanohgamja3
 
[M] 프레임워크와 라이브러리(Framework and Library)
[M] 프레임워크와 라이브러리(Framework and Library)[M] 프레임워크와 라이브러리(Framework and Library)
[M] 프레임워크와 라이브러리(Framework and Library)태욱 김
 

Similaire à [2012 자바카페 OPEN 세미나] Introduction to google guava (20)

Java(1/4)
Java(1/4)Java(1/4)
Java(1/4)
 
Java collections framework
Java collections frameworkJava collections framework
Java collections framework
 
5.Spring IoC&DI(DI와 관련된 어노테이션)
5.Spring IoC&DI(DI와 관련된 어노테이션)5.Spring IoC&DI(DI와 관련된 어노테이션)
5.Spring IoC&DI(DI와 관련된 어노테이션)
 
Eclipse RAP - Single Source
Eclipse RAP - Single SourceEclipse RAP - Single Source
Eclipse RAP - Single Source
 
[오픈소스컨설팅]Spring 3.1 Core
[오픈소스컨설팅]Spring 3.1 Core [오픈소스컨설팅]Spring 3.1 Core
[오픈소스컨설팅]Spring 3.1 Core
 
18 2 파이썬표준라이브러리
18 2 파이썬표준라이브러리18 2 파이썬표준라이브러리
18 2 파이썬표준라이브러리
 
4-1. javascript
4-1. javascript4-1. javascript
4-1. javascript
 
[D2 campus seminar]스칼라를 통한 다양한 언어의 패러다임 맛보기
[D2 campus seminar]스칼라를 통한 다양한 언어의 패러다임 맛보기[D2 campus seminar]스칼라를 통한 다양한 언어의 패러다임 맛보기
[D2 campus seminar]스칼라를 통한 다양한 언어의 패러다임 맛보기
 
Open Source Engineering V2
Open Source Engineering V2Open Source Engineering V2
Open Source Engineering V2
 
Devon 2011-o-4-textcube 2.0과 codeball 프레임웍
Devon 2011-o-4-textcube 2.0과 codeball 프레임웍Devon 2011-o-4-textcube 2.0과 codeball 프레임웍
Devon 2011-o-4-textcube 2.0과 codeball 프레임웍
 
Sonarqube 20160509
Sonarqube 20160509Sonarqube 20160509
Sonarqube 20160509
 
Scalability
ScalabilityScalability
Scalability
 
Scala, Scalability
Scala, ScalabilityScala, Scalability
Scala, Scalability
 
java_1장.pptx
java_1장.pptxjava_1장.pptx
java_1장.pptx
 
Java the good parts
Java the good partsJava the good parts
Java the good parts
 
Ibatis
IbatisIbatis
Ibatis
 
ibatis_khhan
ibatis_khhanibatis_khhan
ibatis_khhan
 
[M] 프레임워크와 라이브러리(Framework and Library)
[M] 프레임워크와 라이브러리(Framework and Library)[M] 프레임워크와 라이브러리(Framework and Library)
[M] 프레임워크와 라이브러리(Framework and Library)
 
Scala
ScalaScala
Scala
 
java_1장
java_1장java_1장
java_1장
 

Plus de 흥래 김

생초보를 위한 한글 형태소 분석하기
생초보를 위한 한글 형태소 분석하기생초보를 위한 한글 형태소 분석하기
생초보를 위한 한글 형태소 분석하기흥래 김
 
검색엔진과 DB Like 검색의 결과가 다른 이유
검색엔진과 DB Like 검색의 결과가 다른 이유검색엔진과 DB Like 검색의 결과가 다른 이유
검색엔진과 DB Like 검색의 결과가 다른 이유흥래 김
 
Elasticsearch와 Python을 이용하여 맨땅에서 데이터 분석하기
Elasticsearch와 Python을 이용하여 맨땅에서 데이터 분석하기Elasticsearch와 Python을 이용하여 맨땅에서 데이터 분석하기
Elasticsearch와 Python을 이용하여 맨땅에서 데이터 분석하기흥래 김
 
한글 자동완성 구현하기
한글 자동완성 구현하기한글 자동완성 구현하기
한글 자동완성 구현하기흥래 김
 
한글 자모 분석 원리
한글 자모 분석 원리한글 자모 분석 원리
한글 자모 분석 원리흥래 김
 
한글 형태소 분석기 활용하기
한글 형태소 분석기 활용하기한글 형태소 분석기 활용하기
한글 형태소 분석기 활용하기흥래 김
 
엘라스틱서치 클러스터로 수십억 건의 데이터 운영하기
엘라스틱서치 클러스터로 수십억 건의 데이터 운영하기엘라스틱서치 클러스터로 수십억 건의 데이터 운영하기
엘라스틱서치 클러스터로 수십억 건의 데이터 운영하기흥래 김
 
Spring di chapter2
Spring di chapter2Spring di chapter2
Spring di chapter2흥래 김
 
Spring di chapter1
Spring di chapter1Spring di chapter1
Spring di chapter1흥래 김
 
5강 코드효율성
5강 코드효율성5강 코드효율성
5강 코드효율성흥래 김
 
2. lambda expression
2. lambda expression2. lambda expression
2. lambda expression흥래 김
 
1. introduction to java8
1. introduction to java81. introduction to java8
1. introduction to java8흥래 김
 
Spring boot와 docker를 이용한 msa
Spring boot와 docker를 이용한 msaSpring boot와 docker를 이용한 msa
Spring boot와 docker를 이용한 msa흥래 김
 
[제14회 JCO 컨퍼런스] 개발자를 위한 서버이중화 by JAVACAFE
[제14회 JCO 컨퍼런스] 개발자를 위한 서버이중화 by JAVACAFE  [제14회 JCO 컨퍼런스] 개발자를 위한 서버이중화 by JAVACAFE
[제14회 JCO 컨퍼런스] 개발자를 위한 서버이중화 by JAVACAFE 흥래 김
 
Apache http component
Apache http componentApache http component
Apache http component흥래 김
 
플랫폼 통합을 위한 Client Module 개발 & 배포
플랫폼 통합을 위한 Client Module 개발 & 배포플랫폼 통합을 위한 Client Module 개발 & 배포
플랫폼 통합을 위한 Client Module 개발 & 배포흥래 김
 

Plus de 흥래 김 (16)

생초보를 위한 한글 형태소 분석하기
생초보를 위한 한글 형태소 분석하기생초보를 위한 한글 형태소 분석하기
생초보를 위한 한글 형태소 분석하기
 
검색엔진과 DB Like 검색의 결과가 다른 이유
검색엔진과 DB Like 검색의 결과가 다른 이유검색엔진과 DB Like 검색의 결과가 다른 이유
검색엔진과 DB Like 검색의 결과가 다른 이유
 
Elasticsearch와 Python을 이용하여 맨땅에서 데이터 분석하기
Elasticsearch와 Python을 이용하여 맨땅에서 데이터 분석하기Elasticsearch와 Python을 이용하여 맨땅에서 데이터 분석하기
Elasticsearch와 Python을 이용하여 맨땅에서 데이터 분석하기
 
한글 자동완성 구현하기
한글 자동완성 구현하기한글 자동완성 구현하기
한글 자동완성 구현하기
 
한글 자모 분석 원리
한글 자모 분석 원리한글 자모 분석 원리
한글 자모 분석 원리
 
한글 형태소 분석기 활용하기
한글 형태소 분석기 활용하기한글 형태소 분석기 활용하기
한글 형태소 분석기 활용하기
 
엘라스틱서치 클러스터로 수십억 건의 데이터 운영하기
엘라스틱서치 클러스터로 수십억 건의 데이터 운영하기엘라스틱서치 클러스터로 수십억 건의 데이터 운영하기
엘라스틱서치 클러스터로 수십억 건의 데이터 운영하기
 
Spring di chapter2
Spring di chapter2Spring di chapter2
Spring di chapter2
 
Spring di chapter1
Spring di chapter1Spring di chapter1
Spring di chapter1
 
5강 코드효율성
5강 코드효율성5강 코드효율성
5강 코드효율성
 
2. lambda expression
2. lambda expression2. lambda expression
2. lambda expression
 
1. introduction to java8
1. introduction to java81. introduction to java8
1. introduction to java8
 
Spring boot와 docker를 이용한 msa
Spring boot와 docker를 이용한 msaSpring boot와 docker를 이용한 msa
Spring boot와 docker를 이용한 msa
 
[제14회 JCO 컨퍼런스] 개발자를 위한 서버이중화 by JAVACAFE
[제14회 JCO 컨퍼런스] 개발자를 위한 서버이중화 by JAVACAFE  [제14회 JCO 컨퍼런스] 개발자를 위한 서버이중화 by JAVACAFE
[제14회 JCO 컨퍼런스] 개발자를 위한 서버이중화 by JAVACAFE
 
Apache http component
Apache http componentApache http component
Apache http component
 
플랫폼 통합을 위한 Client Module 개발 & 배포
플랫폼 통합을 위한 Client Module 개발 & 배포플랫폼 통합을 위한 Client Module 개발 & 배포
플랫폼 통합을 위한 Client Module 개발 & 배포
 

[2012 자바카페 OPEN 세미나] Introduction to google guava

  • 1. 2012년 자바카페 OPEN세미나 주제 : Introduction to Google Guava 2012. 6. 16 김흥래 hrkim3468@gmail.com Java Developer’s Forum JavaCafe community
  • 2. 구아바 ???? Java Developer’s Forum JavaCafe Community
  • 3.
  • 4. 소개 Google Core Library (JavaSE 5.0 +) 구글 자바 프로젝트에서 기본적으로 사용 Google Guava로 명칭을 통일 Andorid 개발 지원 GWT 개발 지원 Apache license 2.0
  • 5. 지겹다. 또 라이브러리야??? 식상해…………….
  • 6.
  • 7. Apache Commons Lang 컴포넌트 Apache Commons Google Collections 컴포넌트 Guava 유용한 유틸리티
  • 8.
  • 9.
  • 10.
  • 11.
  • 14.
  • 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 라이브러리가 사용된 프로젝트를 분석하여 시각적으로 표현한 것
  • 20.
  • 21. JavaSE Standard lang을 위한 유틸리티
  • 23. 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
  • 24. 특징 Base Function ObjectUtils, ClassUtils, ArrayUtils, BooleanUtils 문자열 조작 StringUtils, StringEscapeUtils, RandomStringUtils, Tokenizer, WordUtils Character 핸들링 CharSetUtils, CharSet, CharRange, CharUtils JVM Interaction SystemUtils, CharEncoding Serialization SerializationUtils, SerializationException
  • 25.
  • 26. JavaSE Standard Collection을 위한 유틸리티
  • 28. java.util.* Packages Collections Class ArrayList, Array, HashMap, HashSet, LinkedList, Vector, Stack Utility Class Timer, Random, Properties, Locale, Date, Calendar
  • 30. Apache Commons 짱 좋아요! 그냥 이거 쓰면 안되나요?
  • 31. Lang 컴포넌트 Collection 컴포넌트 JavaSE 5 (-) 지원 JavaSE 5 (-) 지원 JavaSE 5 (+) 지원 JavaSE 5 (+) 미지원 각각 다른 패키지로 제공됨 현재 개발 중단됨
  • 32.
  • 33. Java 5 특징 Generics 개념 도입 Enum 타입 추가 언어차원의 Annotation 지원 파라미터 가변인자 (Varargs : Variable Argument List)
  • 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 제거
  • 57.
  • 58.
  • 59.
  • 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와 완벽한 호환