아파치 커먼즈
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
아파치 커먼즈는 자바 관련 공통 컴포넌트 개발을 위한 아파치 재단의 최상위 프로젝트이다. 2002년 시작되어, 자바 언어 관련 재사용 가능한 컴포넌트를 개발하는 프로젝트로 발전했다. 아파치 커먼즈는 Proper, Sandbox, Dormant의 세 가지 분류로 나뉘며, Proper는 재사용 가능한 자바 컴포넌트 개발에 주력하고, Sandbox는 실험적인 프로젝트를 위한 공간이며, Dormant는 활동이 중단된 컴포넌트를 모아놓은 곳이다. 주요 컴포넌트로는 BCEL, BeanUtils, CLI, Codec 등이 있으며, Commons Lang, Commons Collections 등과 같은 하위 프로젝트를 포함한다.
더 읽어볼만한 페이지
- 아파치 소프트웨어 재단 - 아파치 MXNet
아파치 MXNet은 확장 가능한 딥 러닝 프레임워크로서, CNN 및 LSTM과 같은 다양한 모델을 지원하며 명령형 및 기호적 프로그래밍, 여러 언어, 저사양 장치 배포, 클라우드 환경 지원을 통해 유연성과 폭넓은 활용성을 제공한다. - 아파치 소프트웨어 재단 - 그렘린 (질의어)
그렘린은 그래프 데이터베이스 및 프로세서에서 사용되는 그래프 순회 언어이자 팅커팝 프로젝트의 그래프 탐색 머신으로, 다양한 벤더에서 지원하며 OLTP 및 OLAP 환경 모두에서 그래프 작업을 수행한다. - 아파치 라이선스 소프트웨어 - 안드로이드 (운영체제)
구글이 개발한 리눅스 커널 기반의 모바일 운영체제인 안드로이드는 오픈소스 플랫폼으로 다양한 기기에서 활용되며 세계적으로 널리 사용되지만, 개인정보 보호 문제와 독점적 지위 남용 논란 등의 비판도 존재한다. - 아파치 라이선스 소프트웨어 - 쿠버네티스
쿠버네티스는 컨테이너화된 애플리케이션을 자동으로 배포, 스케일링, 관리하는 오픈 소스 시스템으로, 구글의 Borg 시스템에서 영감을 받아 설계되었으며 파드, 서비스 등의 기능을 제공하여 클라우드 네이티브 환경에서 중요한 역할을 한다. - 공식 웹사이트에 알 수 없는 변수를 사용한 문서 - 브루클린 미술관
브루클린 미술관은 1823년 브루클린 견습생 도서관으로 시작하여 현재 약 50만 점의 소장품을 보유한 뉴욕 브루클린 소재의 미술관으로, 다양한 분야의 예술 작품을 전시하며 특히 아프리카 미술과 여성주의 미술에 대한 기여가 크다. - 공식 웹사이트에 알 수 없는 변수를 사용한 문서 - 광주지방기상청
광주지방기상청은 광주광역시와 전라남도 지역의 기상 예보, 특보, 관측, 기후 정보 제공 등의 업무를 수행하는 기상청 소속 기관으로, 1949년 광주측후소로 설치되어 1992년 광주지방기상청으로 개편되었으며, 기획운영과, 예보과, 관측과, 기후서비스과와 전주기상지청, 목포기상대를 두고 있다.
아파치 커먼즈 - [IT 관련 정보]에 관한 문서 | |
---|---|
기본 정보 | |
![]() | |
개발 주체 | 아파치 소프트웨어 재단 |
프로그래밍 언어 | 자바 |
플랫폼 | 자바 플랫폼 |
종류 | 라이브러리 |
라이선스 | 아파치 라이선스 2.0 |
공식 웹사이트 | 아파치 커먼즈 공식 웹사이트 |
2. 역사
아파치 커먼즈는 2002년 9월에 처음 만들어졌으며, 자바 관련 공통 컴포넌트 개발을 위한 프로젝트 모임인 자카르타 프로젝트의 일부인 '''Jakarta Commons'''와 언어와 상관없이 공통 모듈들을 개발하기 위한 최상위 프로젝트인 자카르타 커먼즈(Jakarta Commons)가 함께 존재했다.[1]
아파치 커먼즈는 Proper, Sandbox, Dormant의 세 가지 부류로 분류된다.[1]
그러나 프로젝트들이 모이지 않아 활성화되지 않으면서(유일한 라이브러리였던 "serf"도 외부로 옮김) 2004년 8월에 자카르타 커먼즈는 문을 닫았다.[1] 2007년에 활발한 활동을 하며 프로젝트가 늘어나고 있던 자카르타 커먼즈와 XML 커먼즈, 웹 서비스 커먼즈(Web Services Commons) 등 자바 관련 프로젝트들이 최상위 프로젝트로 옮겨오면서 현재는 자바 언어 관련 재사용 가능한 컴포넌트를 개발하는 프로젝트로 이어지고 있다.[1]
3. 프로젝트 분류
3. 1. Commons Proper
아파치 커뮤니티 내에서 재사용 가능하도록 개발 및 활용이 가능한 프로젝트들의 모임이다. 이 프로젝트들은 외부 라이브러리의 사용이 거의 없어 아파치 소프트웨어 외부의 변경에 영향을 받지 않고 내부적으로 안정적으로 개발할 수 있도록 되어있다.[2]
Commons Proper는 재사용 가능한 자바 컴포넌트를 만들고 유지하는 데 전념한다. Commons Proper는 아파치 커뮤니티 전체의 개발자들이 아파치 프로젝트 및 아파치 사용자들이 공유할 프로젝트에 함께 참여할 수 있는 협업과 공유의 장이다.
Commons 개발자들은 구성 요소가 다른 소프트웨어 라이브러리에 최소한의 종속성을 갖도록 노력하여 이러한 구성 요소를 쉽게 배포할 수 있도록 한다. 또한 Commons 구성 요소는 인터페이스를 가능한 한 안정적으로 유지하여 아파치 사용자뿐만 아니라 다른 아파치 프로젝트에서도 미래의 변경 사항에 대해 걱정하지 않고 이러한 구성 요소를 구현할 수 있도록 한다.[1]
프로젝트명 | 설명 | 최신 버전 | 출시일 |
---|---|---|---|
BCEL | 자바 클래스 파일 분석, 생성 및 조작 | 6.10.0 | 2024-07-13 |
BeanUtils | 자바 리플렉션 및 인트로스펙션 API를 둘러싼 사용하기 쉬운 래퍼 | 1.9.4 | 2019-06-12 |
BSF | JSR-223을 포함한 스크립팅 언어에 대한 인터페이스 | 3.1 | 2011-08-17 |
Chain | 책임 연쇄 패턴 구현 | 1.2 | 2008-06-01 |
CLI | 명령줄 인수 파서 | 1.9.0 | 2024-08-10 |
Codec | 일반적인 인코딩/디코딩 알고리즘(예: 음성, base64, URL) | 1.17.1 | 2024-07-12 |
Collections | 자바 컬렉션 프레임워크 확장 또는 보강 | 4.5.0-M2 | 2024-06-15 |
Compress | TAR, ZIP 및 BZIP2 파일 작업에 대한 API 정의 | 1.27.1 | 2024-08-16 |
Configuration | 다양한 형식의 구성/기본 설정 파일 읽기 | 2.11.0 | 2024-06-07 |
Crypto | OpenSSL 또는 JCE 알고리즘 구현을 래핑하여 최적화된 암호화 라이브러리 | 1.2.0 | 2023-01-14 |
CSV | 쉼표로 구분된 값 파일 읽기 및 쓰기 위한 구성 요소 | 1.12.0 | 2024-09-21 |
Daemon | 자바 코드용 일반적인 데몬(유닉스) 또는 서비스(Windows) 래퍼 | 1.4.0 | 2024-05-24 |
DBCP | 데이터베이스 연결 풀링 서비스 | 2.13.0 | 2024-11-26 |
DbUtils | JDBC 도우미 라이브러리 | 1.8.1 | 2023-09-09 |
Digester | XML-자바-객체 매핑 유틸리티 | 3.2 | 2011-12-13 |
이메일 전송용 라이브러리 | 1.5 | 2017-08-01 | |
Exec | 외부 프로세스 실행 및 환경 관리를 처리하기 위한 API | 1.4.0 | 2024-01-01 |
FileUpload | 서블릿 및 웹 애플리케이션을 위한 파일 업로드 기능 | 1.5 | 2023-02-13 |
Functor | 함수를 나타내는 객체인 펑터를 사용하여 함수형 프로그래밍 지원 | 1.0 RC1 | 2011-10-20 |
Geometry | 일반적인 용도의 기하학적 처리 라이브러리 | 1.0 | 2021-08-21 |
Imaging | 순수 자바 이미지 라이브러리 | 1.0-alpha5 | 2024-04-15 |
IO | I/O 유틸리티 모음 | 2.18.0 | 2024-11-16 |
JCI | 자바 컴파일러 인터페이스 | 1.1 | 2013-10-14 |
JCS | 자바 캐싱 시스템 | 3.2.1 | 2024-05-27 |
Jelly | XML 기반 스크립팅 및 처리 엔진 | 1.0.1 | 2017-09-25 |
JEXL | JSTL의 표현 언어를 확장하는 표현 언어 | 3.4.0 | 2024-06-02 |
JXPath | XPath 구문을 사용하여 자바 빈 조작을 위한 유틸리티 | 1.3 | 2008-08-11 |
Lang | java.lang의 클래스에 대한 추가 기능 제공 | 3.17.0 | 2024-08-24 |
Logging | 다양한 로깅 API 구현을 둘러싼 래퍼 | 1.3.4 | 2024-08-16 |
Math | 가볍고 자체 포함된 수학 및 통계 구성 요소 | 4.0-beta1 | 2022-12-20 |
Net | 네트워크 유틸리티 및 프로토콜 구현 모음 | 3.11.1 | 2024-06-07 |
Numbers | 숫자 형식(복소수, 쿼터니언, 분수) 및 유틸리티(배열, 조합론) | 1.2 | 2024-08-12 |
Pool | 일반적인 객체 풀링 구성 요소 | 2.12.0 | 2023-09-30 |
Proxy | 동적 프록시 생성을 위한 라이브러리 | 2.0-RC1 | 2014-04-07 |
RDF | JVM의 시스템에서 구현할 수 있는 RDF 1.1의 공통 구현 | 0.5.0 | 2017-12-08 |
RNG | 의사 난수 생성기 구현 | 1.6 | 2024-07-15 |
SCXML | 자바 SCXML 엔진을 생성하고 유지 관리하기 위한 상태 차트 XML 사양 구현 | 2.0-M1 | 2014-04-03 |
Statistics | 통계 애플리케이션용 유틸리티 | 1.1 | 2024-08-20 |
Text | 문자열 작업 알고리즘에 중점을 둔 라이브러리 | 1.13.0 | 2024-12-10 |
Validator | XML 파일에서 유효성 검사기 및 유효성 검사 규칙을 정의하는 프레임워크 | 1.8.0 | 2023-12-02 |
VFS | 파일을 처리하기 위한 가상 파일 시스템 구성 요소, FTP, SMB, ZIP 등을 단일 논리적 파일 시스템으로 처리 | 2.9.0 | 2021-06-16 |
Weaver | 컴파일된 바이트코드를 쉽게 향상(weav)하는 방법을 제공합니다. | 2.0 | 2018-09-07 |
3. 2. Commons Sandbox
Sandbox는 아파치 커먼즈 개발자들이 소스를 공유하고 협업할 수 있는 Subversion 공간이다. Proper 단계로 올라가지 못한 프로젝트들을 모아놓은 곳이다. 소스가 제공되지 않거나 제공되더라도 스냅샷(snapshot) 형태로 제공되며, API 변경도 미리 공지 없이 바뀔 수 있다.[3]2012년 6월 기준으로 다음과 같은 프로젝트들이 존재한다.
프로젝트명 | 설명 |
---|---|
http://commons.apache.org/sandbox/cli2/ CLI2 | CLI 프로젝트 재설계 |
http://commons.apache.org/sandbox/convert/ Convert | 하나의 객체를 다른 형태의 객체로 변환하는 기능을 제공하는 컴포넌트 |
http://commons.apache.org/sandbox/finder/ Finder | 유닉스의 find 명령을 자바로 구현한 컴포넌트 |
http://commons.apache.org/sandbox/flatfile/ Flatfile | 플랫 데이터 구조(flat data structure) 파일로 작업하는 데 필요한 기능을 제공하는 컴포넌트 |
http://commons.apache.org/sandbox/graph/ Graph | 범용 목적의 그래프 API와 알고리즘을 제공하는 컴포넌트 |
http://commons.apache.org/sandbox/i18n/ I18n | 메시지 등의 문자열을 국제화(Internationalization)하는 기능을 제공하는 컴포넌트 |
http://commons.apache.org/sandbox/id/ Id | ID(Identifier) 생성을 제공하는 컴포넌트 |
http://commons.apache.org/sandbox/javaflow/ Javaflow | 애플리케이션의 상태를 저장했다가 그 시점부터 재시작할 수 있는 기능을 제공하는 컴포넌트 |
http://commons.apache.org/sandbox/jnet/ JNet | java.net 패키지의 API를 통해 URL 스트림을 동적으로 등록하는 기능을 제공하는 컴포넌트 |
http://commons.apache.org/sandbox/monitoring/ Monitoring | 자바 애플리케이션의 성능이나 쓰레드 동시성 등을 모니터링하는 간단하고 경량 툴킷을 제공하는 컴포넌트 |
http://commons.apache.org/sandbox/nabla/ Nabla | 자바 언어로 구현된 모든 함수의 미분값을 생성할 수 있는 자동 미분 클래스를 제공 |
http://commons.apache.org/sandbox/openpgp/ OpenPGP | OpenPGP로 서명된 데이터를 검증하는 인터페이스를 제공하는 컴포넌트 |
http://commons.apache.org/sandbox/performance/ Performance | DBCP나 Pool의 구현체를 포함하여 작은 벤치마크 기능을 제공하는 프레임워크 |
http://commons.apache.org/sandbox/pipeline/ Pipeline | 자료 객체를 연속적으로 처리하는 작업 큐를 제공하는 유틸리티 컴포넌트 |
3. 3. Commons Dormant
Commons Dormant는 최근에 거의 활동이 없이 정지된 프로젝트들의 모음이다. 이 컴포넌트들이 필요하다면 직접 빌드해야 할 수도 있으며, 더 이상 새 버전이 나오지 않을 가능성도 있다.[4]2012년 6월 현재 다음과 같은 프로젝트들이 존재한다.[4]
프로젝트명 | 설명 |
---|---|
https://web.archive.org/web/20140219070226/http://commons.apache.org/proper/commons-attributes/ Attributes | C#이나 닷넷과 같은 형식의 attributes를 자바에서 사용하게 지원하는 컴포넌트 |
[http://commons.apache.org/dormant/commons-betwixt/ Betwixt] | 자바빈즈와 XML 문서간의 상호 매핑을 지원하는 컴포넌트 |
[http://commons.apache.org/dormant/cache/ Cache] | 객체를 캐시에 저장하는 서비스를 제공하는 컴포넌트 |
[http://commons.apache.org/dormant/clazz/ Clazz] | 클래스를 조작하는 기능을 제공하는 컴포넌트 |
[http://commons.apache.org/dormant/contract/ Contract] | contract based programming을 수행하는 데 있어 필요한 여러 가지 기능들을 제공하는 컴포넌트 |
[http://commons.apache.org/dormant/convert/ Convert] | 객체의 타입을 변경하는 기능을 제공하는 컴포넌트 |
[http://commons.apache.org/dormant/events/ Events] | 이벤트를 발생하고 처리하는 기능을 제공하는 컴포넌트 |
[http://commons.apache.org/dormant/feedparser/ Feedparser] | 자바기반의 RSS/Atom 파서를 제공하는 컴포넌트 |
[http://commons.apache.org/dormant/jjar/ JJar] | Jakarta JAR Archive Repository |
[http://commons.apache.org/dormant/latka/ Latka] | HTTP 기능의 자동화된 테스트를 제공하는 컴포넌트 |
[http://commons.apache.org/dormant/mapper/ Mapper] | DAO(Data Access Object)와 같은 추상화된 레이어를 제공하는 컴포넌트 |
[http://commons.apache.org/dormant/messenger/ Messenger] | JMS와 함께 사용되기 위한 경량 프레임워크 |
[http://commons.apache.org/dormant/resources/ Resources] | java.util.Locale과 키를 기반으로 한 경량의 국제화 기반 리소스 매핑 프레임워크 |
[http://commons.apache.org/dormant/scaffold/ Scaffold] | 웹 애플리케이션을 만들기 위한 툴킷 |
[http://commons.apache.org/dormant/threadpool/ ThreadPool] | 멀티 쓰레딩 프로그램을 개발할 때 쓰레드 풀 기능을 제공하는 컴포넌트 |
[http://commons.apache.org/proper/commons-transaction Transaction] | 다중 레벨의 lock과 트랜잭션 기반의 collection 및 파일접근 기능을 제공하는 컴포넌트 |
[http://commons.apache.org/dormant/workflow/ Workflow] | 워크플로우 관리 시스템을 개발할 때 사용되는 프레임워크 |
[http://commons.apache.org/dormant/xmlio/ XMLIO] | 간단하고 빠른 XML 환경설정 파일을 읽어오는 컴포넌트 |
4. Commons Lang (예시)
Commons Lang은 `java.lang` 패키지를 확장한 기능을 제공한다.[1]
4. 1. ObjectUtils.equals()
`Object.equals()`를 확장한 것으로, null이 들어 있어도 비교가 가능하여 NullPointerException 발생을 방지한다.4. 2. ToStringBuilder.reflectionToString()
자바의 기본 `Object.toString()`은 멤버 변수의 내용까지 표시해주지 않지만, 리플렉션을 사용하면 멤버 변수의 내용을 표시하는 형태로 `Object.toString()`을 구현할 수 있다.```java
public String toString() {
return ToStringBuilder.reflectionToString(this);
}
5. Commons Collections (예시)
아파치 커먼즈 컬렉션은 java.util의 Collection 관련 기능을 확장한 내용을 담고 있다.
5. 1. CollectionUtils.select()와 Predicate
Java 6에는 클로저가 없지만, `Predicate`를 구현하여 조건을 만족하는 것을 찾을 수 있다. 다음은 리스트에서 "a"로 시작하는 항목을 찾아내는 예시이다.```java
ArrayList
list.add("apple");
list.add("banana");
list.add("ant");
Collection> aList = CollectionUtils.select(list, new Predicate() {
public boolean evaluate(Object obj) {
return ((String)obj).startsWith("a");
}
});
```
아파치 커먼즈의 `CollectionUtils.select()`는 `Predicate` 인터페이스를 사용하여 컬렉션에서 특정 조건을 만족하는 요소를 선택하는 기능을 제공한다. 이를 통해 코드 가독성을 높이고, 복잡한 조건 처리를 간결하게 표현할 수 있다.
참조
[1]
링크
The Apache Commons root page
http://commons.apach[...]
[2]
웹인용
The Apache Commons Proper
http://commons.apach[...]
[3]
웹인용
The Apache Commons Sandbox
http://commons.apach[...]
[4]
웹인용
The Apache Commons Dormant
http://commons.apach[...]
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com