프로젝트 소개

구아바(Guava)는 Google의 핵심 Java 라이브러리 모음이다. 멀티맵, 멀티셋 같은 새로운 컬렉션 타입, 불변 컬렉션, 그래프 라이브러리, 그리고 동시성·I/O·해싱·원시 타입·문자열 등을 포함한 다양한 유틸리티를 제공한다. README에 따르면 구아바는 Google 내 대부분의 Java 프로젝트와 수많은 타사에서 널리 사용되고 있다. 구아바는 두 가지 버전으로 출시된다. JRE 버전은 JDK 1.8 이상을 요구하며, Android 지원을 위한 버전도 존재한다. Android 버전의 소스는 저장소 내 android 디렉터리에 있다. 빌드에 구아바 추가: Maven 그룹 ID는 com.google.guava, 아티팩트 ID는 guava다. 두 버전은 Maven 버전 필드에서 33.7.1-jre 또는 33.7.1-android로 지정한다. README에는 Maven 및 Gradle 의존성 스니펫과 Gradle에서 api versus implementation 사용 시기에 대한 안내가 포함되어 있다. master 브랜치에서 빌드된 스냅샷은 Maven을 통해 version 999.0.0-HEAD-jre-SNAPSHOT, 또는 Android 버전의 경우 999.0.0-HEAD-android-SNAPSHOT로 활용할 수 있다. 스냅샷 API Javadoc과 API 변경 사항(diff)도 제공된다. Javadoc은 guava.dev/api에서 접근할 수 있으며, 특정 클래스는 guava.dev 뒤에 클래스 이름을 추가하는 방식으로 열 수 있다. 학습 자료로는 사용자 가이드, Guava Explained, 그리고 기타 유용한 링크 모음이 있다. 프로젝트는 GitHub 저장소, 이슈 추적기, StackOverflow 태그, guava-announce 및 guava-discuss Google 그룹을 링크하고 있다. README에는 중요한 경고 사항이 명시되어 있다. 클래스 또는 메서드 수준에서 @Beta 주석이 붙은 API는 변경될 수 있으며 언제든지 수정·삭제될 수 있다. 라이브러리 작성자는 베타 API를 재포장하지 않는 한 사용하지 않는 것이 좋으며, Guava Beta Checker 사용이 권장된다. @Beta가 없는 API는 영구적으로 이진 호환성을 유지하며, @Deprecated API조차 @Beta가 아닌 한 유지된다. 구아바에는 런타임 링커에 필요한 com.google.guava:failureaccess:1.0.3 의존성 하나와 몇 가지 주석 전용 의존성이 있다. 모든 객체의 직렬화 형태는 특별히 명시하지 않는 한 변경될 수 있으므로, 향후 버전에서 읽을 수 있을 것이라는 전제로 영구 저장해서는 안 된다. 이 클래스들은 악의적인 호출자에 대한 보호를 목적으로 설계되지 않았으므로 신뢰할 수 없는 코드와의 통신에는 사용하면 안 된다. 메인라인 버전의 라이브러리는 Linux 및 Windows 환경에서 여러 OpenJDK 버전으로 테스트되며, com.google.common.io 등 일부 기능은 Linux 이외 환경에서 정상 작동하지 않을 수 있다. Android 버전의 단위 테스트는 API 레벨 24(Nougat)에서도 실행된다.