구글 콜렉션과 과바를 이용한 자바 코드의 단순화 프로그래밍


구글 콜렉션, 과바 그리고 정적 임포트를 이용한 자바 코드의 단순화.

(http://www.artima.com/forums/flat.jsp?forum=270&thread=270901 를 번역)

자바(Java) 개발자들은, 종종 자바로 작성하는, 많은 일반적 프로그래밍 작업이 상당량의 코드를 요구하는 것을 불평한다.  어떤 이들은 대체 영역으로 더욱 간결한 JVM 언어[역주: 아마도 JRuby나 Jython 같은..]에서 간결성을 찾는 반면,  다른 이들은 자바의 기존 언어 특징을 확장해 API-레벨의 해결책을 지원할 것을 노린다.

API 기반의 시도 가운데 최근의 두가지 사례는 구글 콜렉션 (Google's Collections)과 과바 라이브러리 (Guava libraries) 다. 최근의 블로그 게시물, '구글 콜렉션, 과바정적 임포트를 이용한 아름다운 코드 (Beautiful Code with Google Collections, Guava and Static Imports)'에서 알렉산더 스텐스비는, 어떻게 이들 라이브러리가 자바 프로그래밍을 더욱 보람있는 경험으로 만들 수 있는지 묘사했다:

과바는 아직 좀 미숙한 라이브러리라 앞으로 몇달 사이에 변경될 수 있다. 구글 콜렉션은 1.0 릴리즈에 다다르면 과바의 일부가 될 것이다. 과바(그리고 구글 콜렉션)는 몇몇 구글 개발자가 지금까지 개척해 그들의 무수한 자바 프로젝트에서 널리 써왔다.

콜렉션과 함께 과바를 사용해 프로젝트에서 반복어구의 양을 줄이는 혜택을 누릴 수 있다. (또한 그들이 제공하는 새롭고 더욱 빠른 자료 구조에 접근할 수 있다)

예를 들자면, 스텐스비는 어떻게 구글 콜렌션을 이용해 콜렉션 인스탄스를 만드는지 보여준다.

Map<String, Map<Long, List<String>>> map = new HashMap<String, Map<Long,List<String>>>();
Map<String, Map<Long, List<String>>> map = Maps.newHashMap();
Map<String, Map<Long, List<String>>> map = newHashMap();

제너릭과, 그들 콜렉션을 만든 친구들이 제공하는, 편리한 팩토리 메서드들 덕분에 우리는 더 이상 자바가 정말 알아먹도록 적어줘야 할 필요가 없다. 맞는가? 이것이 JDK 7에 포함될 것으로 아는데 대단한 일이다. 그러나 구글 콜렉션은 지금 당장 써먹을 수 있다.

com.google.common.collect.Maps가 제공하는 정적 유틸리티 메서드들과 비슷하게 Lists와 Sets가 제공된다.

Lists.newArrayList();
Sets.newHashSet();

스텐스비는 또한 어떻게 값을 줘 콜렉션을 초기화하는지 보여준다.

ImmutableList<String> of = ImmutableList.of("a", "b", "c", "d");
ImmutableMap<String,String< map = ImmutableMap.of("key1", "value1", "key2", "value2");

콜렉션을 만들고 채우는 편리하고 간명한 방법들과 별도로, 필터링, 교집합, 공용체(union), 정렬, 몇몇 굉장한 기능들 같은 많은 추가적 유틸리티가 제공된다.

In the second part of his blog post, Stensby turns to the Guava library:

그의 블로그 게시물 두번째 파트에서 스텐스비과바 라이브러리를 다시 언급했다:

과바핵심 자바 라이브러리에 포괄적 확장을제공한다. 다른 것들 가운데, 기본형을 다루는 유틸리티들을,  com.google.common.primitives 패키지의Ints, Doubles, Floats, Shorts, Bytes 및 Bools 클래스들을 통해 접근할 수 있다.com.google.common.io 패키지는 스트림, 버퍼, 파일들을 다루는 유틸리티들을 제공하고, 병행(concurrent)패키지는 Futures, Callables 및 Executors 같은 클래스들을 제공해 병행 코드 작성의 괴로움을 덜어준다.이것들에 더해, 과바는 또한 콜렉션에 대한 추가기능을 제공하고 정말 굉장한 CharMatter 클래스, Joiner 및 Splitter 클래스를 제공한다.

여러분은 반복적 자바 코드를 줄일 도구로서 구글 콜렉션 과바 라이브러리를 어떻게 생각하는가?

덧글

댓글 입력 영역