구글 구아바
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
구글 구아바는 구글에서 개발한 자바 프로그래밍 언어용 라이브러리이다. 기본 유틸리티, 자바 컬렉션 프레임워크(JCF)의 확장 기능, 함수형 프로그래밍, 그래프, 캐싱, 해싱 등 다양한 유틸리티를 제공한다. JCF의 한계를 보완하고 개발 편의성을 높이기 위해 개발되었으며, 조슈아 블로흐와 더그 리 등 자바 전문가들의 자문을 받아 설계되었다. 구아바는 2012년과 2013년 자바 라이브러리 순위에서 상위권에 랭크되며 널리 사용되었으며, 한국 개발 생태계에도 기여하고 있다.
더 읽어볼만한 페이지
- 자바 라이브러리 - 아파치 루씬
아파치 루씬은 더그 커팅이 개발한 오픈 소스 전문 검색 라이브러리이며, 텍스트 색인 및 검색 기능을 제공하여 웹 검색 엔진, 퍼지 검색, 추천 시스템 구현 등에 사용된다. - 자바 라이브러리 - 아파치 POI
아파치 POI는 자바 라이브러리로, 마이크로소프트 오피스 파일 형식을 읽고 쓰는 기능을 제공하며 엑셀, 워드, 파워포인트 등 다양한 오피스 파일 포맷을 지원하고 데이터 분석 및 보고서 작성에 활용된다. - 아파치 라이선스 소프트웨어 - 안드로이드 (운영체제)
구글이 개발한 리눅스 커널 기반의 모바일 운영체제인 안드로이드는 오픈소스 플랫폼으로 다양한 기기에서 활용되며 세계적으로 널리 사용되지만, 개인정보 보호 문제와 독점적 지위 남용 논란 등의 비판도 존재한다. - 아파치 라이선스 소프트웨어 - 쿠버네티스
쿠버네티스는 컨테이너화된 애플리케이션을 자동으로 배포, 스케일링, 관리하는 오픈 소스 시스템으로, 구글의 Borg 시스템에서 영감을 받아 설계되었으며 파드, 서비스 등의 기능을 제공하여 클라우드 네이티브 환경에서 중요한 역할을 한다. - 구글의 소프트웨어 - 구글 어시스턴트
구글 어시스턴트는 2016년 구글에서 개발한 인공지능 음성 비서 서비스로, 양방향 대화 지원, 다양한 기기 및 플랫폼 확장성, 인터넷 검색, 일정 관리, 홈 오토메이션 제어 등의 기능을 제공하지만 개인정보 보호 문제에 대한 비판도 존재한다. - 구글의 소프트웨어 - 제미니 (챗봇)
구글이 개발한 대화형 인공지능 챗봇 제미니는 챗GPT에 대응하기 위해 개발되었으며, LaMDA에서 PaLM 2를 거쳐 자체 개발한 제미니 모델로 업그레이드되었고, 현재 구글 서비스와 통합되어 정보를 제공하지만 편향성 논란도 있다.
구글 구아바 - [IT 관련 정보]에 관한 문서 | |
---|---|
기본 정보 | |
개발자 | 구글 |
최초 출시일 | 2009년 9월 15일 |
안정화 버전 | 33.3.1 |
안정화 버전 출시일 | 2024년 9월 24일 |
운영 체제 | 크로스 플랫폼 |
프로그래밍 언어 | 자바 |
종류 | 유틸리티 및 컬렉션 라이브러리 |
라이선스 | 아파치 라이선스 2.0 |
웹사이트 | 구아바 공식 웹사이트 |
2. 역사
구글 구아바 프로젝트는 JDK 1.5에 도입된 제네릭의 영향으로 시작되었다.[9] 제네릭은 프로그래머의 생산성을 높였지만, 표준 자바 컬렉션스 프레임워크(JCF)는 기능이 충분하지 않았고, 아파치 커먼즈 컬렉션은 하위 호환성 유지를 위해 제네릭을 채택하지 않았다.[9]
이러한 상황에서 구글 엔지니어 케빈 부릴리온과 제러드 레비는 JCF 확장 기능을 개발했다. 이들은 중복집합, 멀티맵, 비트맵, 이뮤터블 컬렉션 등 추가적인 제네릭 클래스를 제공했다.[9] 조슈아 블로치와 더그 리가 라이브러리 설계와 코드를 검토했다.[9]
2012년 4월, 구아바는 인기 있는 자바 라이브러리 12위에 올랐다.[12] 2013년 GitHub 프로젝트 연구에서는 구글 제작 라이브러리 중 8번째로 인기 있는 자바 라이브러리로 나타났다.[6]
2. 1. 개발 배경
구글 구아바는 크게 세 가지 구성 요소로 나눌 수 있다. 첫째는 공통 메서드와 동작을 구현하기 위해 수동 작업을 줄이는 기본 유틸리티이고, 둘째는 자바 컬렉션스 프레임워크(JCF)의 확장 기능이며, 셋째는 함수형 프로그래밍, 그래프, 캐시 처리, 레인지 오브젝트, 해싱 등 편리하고 생산적인 기능을 제공하는 기타 유틸리티이다.[11]컬렉션 구성 요소의 생성과 구조는 JDK 1.5에 도입된 제네릭에서 동기를 얻었다.[9] 제네릭은 프로그래머의 생산성을 개선하지만 표준 JCF는 충분한 기능을 제공하지 않았으며, 그 보완재인 아파치 커먼즈 컬렉션은 하위 호환성 유지를 위해 제네릭을 채택하지 않았다.[9] 이러한 상황 때문에 엔지니어 케빈 부릴리온(Kevin Bourrillion)과 제러드 레비(Jared Levy)는 중복집합, 멀티맵, 비트맵, 이뮤터블 컬렉션 등 추가적인 제네릭 클래스를 제공하는 JCF 확장 기능을 개발하게 되었다.[9]
라이브러리의 디자인과 코드 검토는 자바 컬렉션 프레임워크의 수석 디자이너 조슈아 블로치와 JDK의 컨커런시 유틸리티 수석 디자이너 중 한 명인 Doug Lea가 맡았다.[9]
3. 주요 구성 요소
구글 구아바는 크게 세 가지 주요 구성 요소로 나눌 수 있다.[11]
- 기본 유틸리티: 공통 메서드와 동작을 구현하기 위한 기본적인 유틸리티를 제공하여 수동 작업을 줄여준다.
- 자바 컬렉션 프레임워크(JCF) 확장: 이전에는 구글 컬렉션스 라이브러리(Google Collections Library)로 불렸으며, JCF를 확장하여 중복집합, 멀티맵, 비트맵, 불변 컬렉션 등 추가적인 제네릭 클래스를 제공한다.
- 기타 유틸리티: 함수형 프로그래밍, 그래프, 캐싱, 범위 객체, 해싱 등 편리하고 생산적인 기능을 제공한다.
컬렉션 컴포넌트의 생성과 구조는 부분적으로 JDK 1.5에 도입된 제네릭에서 동기를 얻었다.[9] 라이브러리의 디자인과 코드는 자바 컬렉션 프레임워크의 수석 디자이너 조슈아 블로치와 JDK의 컨커런시 유틸리티 수석 디자이너 중 한 명인 Doug Lea가 맡았다.[9]
2012년 4월 기준으로, 구아바는 인기있는 자바 라이브러리 12위로 순위를 올렸다.[12]
3. 1. 기본 유틸리티
구글 구아바의 기본 유틸리티는 일반적인 메서드 및 동작을 구현하는 수작업을 줄여준다.[4] 예를 들어 `hashCode` 등의 구현이나 전제 조건 검사 등의 코드량을 줄일 수 있다.JDK 1.5에서 자바에 총칭형이 도입되었지만, 표준 컬렉션 프레임워크는 충분한 기능을 갖추지 못했고, 대표적인 유틸리티 라이브러리인 Apache Commons Collections은 하위 호환성을 유지하기 위해 총칭형을 지원하지 않았다. 이러한 상황에 대처하기 위해, 구글의 엔지니어인 케빈 부릴리온(Kevin Bourrillion)과 제러드 레비(Jared Levy)가 사내의 "20% 규칙"을 활용하여, 총칭형을 지원하면서 고기능의 컬렉션 클래스를 제공하는 Google Collections Library를 개발한 것이 구아바의 시초이다.
3. 2. 컬렉션 프레임워크 확장
구글 구아바의 컬렉션 컴포넌트 생성과 구조는 JDK 1.5에 도입된 제네릭에서 동기를 얻었다.[9] 제네릭이 프로그래머의 생산성을 개선했지만 표준 JCF는 충분한 기능을 제공하지 않았으며 그 보완재인 아파치 커먼즈 컬렉션은 하위 호환성 유지를 위해 제네릭을 채택하지 않았다.[9] 이러한 사실로 인해 공학자 케빈 부릴리온(Kevin Bourrillion)과 제러드 레비(Jared Levy)는 중복집합, 멀티맵, 비트맵, 이뮤터블 컬렉션 등 추가적인 제네릭 클래스를 제공하는 JCF의 확장 기능을 개발하게 되었다.[9]이 라이브러리의 디자인과 코드 고문 및 검토는 자바 컬렉션 프레임워크의 수석 디자이너 조슈아 블로치, JDK의 컨커런시 유틸리티 수석 디자이너 중 한 명인 Doug Lea가 맡았다.[9]
3. 3. 기타 유틸리티
함수형 프로그래밍, 그래프, 캐시 처리, 레인지 오브젝트, 해싱 등 편리하고 생산적인 기능을 제공하는 기타 유틸리티가 구글 구아바에 포함되어 있다.[11] 이러한 기능들은 개발자가 보다 효율적으로 코드를 작성하고 관리할 수 있도록 돕는다.4. 영향 및 평가
구글 구아바는 크게 세 가지 구성 요소로 나눌 수 있다.[11]
- 일반적인 메서드 및 동작을 구현하는 수작업을 줄여주는 기본적인 유틸리티
- 이전에는 '''구글 컬렉션 라이브러리'''라고 불렸던 자바 컬렉션 프레임워크(JCF)의 확장
- 함수형 프로그래밍, 그래프, 캐싱, 범위 객체, 해싱과 같은 편리하고 생산적인 기능을 제공하는 기타 유틸리티
컬렉션 구성 요소의 생성과 아키텍처는 제네릭스가 JDK 1.5에 도입되면서 부분적으로 동기를 부여받았다.[1] 제네릭스는 프로그래머의 생산성을 향상시키지만, 표준 JCF는 충분한 기능을 제공하지 못했고, 그 보완재인 아파치 커먼즈 컬렉션은 하위 호환성을 유지하기 위해 제네릭스를 채택하지 않았다.[1] 이러한 사실은 두 엔지니어 케빈 부릴리온(Kevin Bourrillion)과 제러드 레비(Jared Levy)가 멀티셋, 멀티맵, 비트맵, 불변 컬렉션과 같은 추가적인 제네릭 클래스를 제공하는 JCF 확장을 개발하도록 이끌었다.[1]
이 라이브러리의 설계와 코드는 자바 컬렉션 프레임워크의 원래 수석 설계자인 조슈아 블로흐와 JDK의 동시성 유틸리티의 수석 설계자 중 한 명인 더그 리의 조언과 검토를 받았다.[1]
2012년 4월 기준으로 구아바는 아파치 커먼즈 프로젝트 및 몇몇 다른 프로젝트에 이어 12번째로 인기 있는 자바 라이브러리로 평가받았다.[5] 2013년에 10,000개의 GitHub 프로젝트에 대해 수행된 연구에 따르면, 구글 웹 툴킷 및 구아바와 같은 구글 제작 라이브러리가 자바에서 가장 인기 있는 라이브러리 상위 100개 중 7개를 차지했으며, 구아바는 8번째로 인기 있는 자바 라이브러리였다.[6]
참조
[1]
웹사이트
What is the Google Collections Library?
http://www.javalobby[...]
Javalobby
2007-10-23
[2]
웹사이트
Releases . Google Guava
https://github.com/g[...]
[3]
웹사이트
Release History . Google Guava
https://github.com/g[...]
[4]
웹사이트
Home · google/Guava Wiki
https://github.com/g[...]
[5]
웹사이트
Google Guava Shows Strong Growth in April
http://www.sonatype.[...]
Sonatype
2012-05-14
[6]
웹사이트
We Analyzed 30,000 GitHub Projects – Here Are The Top 100 Libraries in Java, JS and Ruby
http://www.takipiblo[...]
2013-11-20
[7]
웹사이트
What is the Google Collections Library?
http://www.javalobby[...]
Javalobby
2007-10-23
[8]
웹사이트
Google Guava Shows Strong Growth in April
http://www.sonatype.[...]
Sonatype
2012-05-14
[9]
웹인용
What is the Google Collections Library?
http://www.javalobby[...]
Javalobby
2007-10-23
[10]
웹인용
Releases . Google Guava
https://github.com/g[...]
[11]
문서
https://github.com/g[...]
[12]
웹인용
Google Guava Shows Strong Growth in April
http://www.sonatype.[...]
Sonatype
2012-05-14
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com