{{위키데이터 속성 추적}}
[[파일:Apache Commons logo.svg|thumb]]
'''아파치 커먼즈'''({{llang|en|Apache Commons}})는 재사용 가능한 [[자바 (프로그래밍 언어)|자바]] 기반의 [[컴포넌트]]를 모아놓은 통합 프로젝트이다.

== 역사 ==
아파치 커먼즈는 2002년 9월에 처음 만들어졌으며 자바관련 공통 컴포넌트 개발을 위한 프로젝트의 모임인 [[자카르타 프로젝트]]의 일부분인 '''Jakarta Commons'''와는 별개로 언어와 상관없이 공통모듈들을 개발하기 위한 최상위 프로젝트로서 자카르타 커먼즈(Jakarta Commons)와 같이 존재했다.

그러나 프로젝트들이 모이지 않아 활성화가 되지 않음으로서(유일한 라이브러리였던 "serf"도 외부로 옮김) 2004년 8월에 문을 닫기에 이르렀다. 2007년에 활발한 활동을 하며 프로젝트가 늘어나고 있던 자카르타 커먼즈와 XML 커먼즈, 웹 서비스 커먼즈(Web Services Commons) 등의 자바 관련 프로젝트들이 최상위 프로젝트로 옮겨오면서 현재는 자바 언어관련 재사용 가능한 컴포넌트를 개발하는 프로젝트로 이어지고 있다.

== 프로젝트 목록 ==
상당히 많은 프로젝트들이 존재하며 다음과 같이 세 부류로 분류된다.
=== Commons Proper ===
아파치 커뮤니티 안에서 서로 재사용 가능하도록 개발 및 활용이 가능한 프로젝트들의 모임이다. 이 프로젝트들은 외부 라이브러리의 사용이 거의 없어 아파치 소프트웨어 외부의 변경에 영향을 받지 않고 내부적으로 안정적으로 개발할 수 있도록 되어있다.

2012년 6월 현재 다음과 같은 프로젝트들이 존재한다.
<ref>{{웹 인용
|제목 = The Apache Commons Proper
|언어 = en
|url = http://commons.apache.org/components.html
}}</ref>

{| class="wikitable"
|+ Commons Proper 프로젝트 목록
! 프로젝트명
! 설명
|-
|[http://commons.apache.org/proper/commons-bcel/ BCEL]
|Byte Code Engingeering Library 로서 자바 클래스파일을 분석하고 생성하고 조작하는 기능을 제공하는 컴포넌트
|-
|[https://web.archive.org/web/20130302002017/http://commons.apache.org/proper/commons-beanutils/ BeanUtils]
|자바의 [[리플렉션]] API 등을 사용하기 쉽게 감싸주는 컴포넌트
|-
|[http://commons.apache.org/proper/commons-bsf/ BSF]
|Bean Scripting Framework 으로서 JSR-223을 포함하는 스크립트 언어에 대한 인터페이스를 제공하는 컴포넌트
|-
|[http://commons.apache.org/proper/commons-chain Chain] {{웨이백|url=http://commons.apache.org/proper/commons-chain |date=20141004145604 }}
|''Chain of Responsibility'' 패턴을 구현한 컴포넌트
|-
|[http://commons.apache.org/proper/commons-cli CLI]
|Command Line 인수의 [[파서]] 컴포넌트
|-
|[http://commons.apache.org/proper/commons-codec Codec]
|[[Base64]]나 [[URL]] 등의 인코딩/디코딩 알고리즘을 구현한 컴포넌트
|-
|[http://commons.apache.org/proper/commons-collections Collections]
|자바의 JCF(Java Collection Framework)의 확장 컴포넌트
|-
|[http://commons.apache.org/proper/commons-compress Compress]
|[[tar]], [[zip]], [[bzip2]] 등의 압축파일 처리 API를 제공하는 컴포넌트
|-
|[http://commons.apache.org/proper/commons-configuration Configuration]
|여러 가지 형식의 환경설정 파일을 읽어오는 컴포넌트
|-
|[http://commons.apache.org/proper/commons-csv CSV]
|[[CSV]](Comma Seperated Value) 파일을 읽고 쓰는 기능을 제공하는 컴포넌트
|-
|[http://commons.apache.org/proper/commons-daemon Daemon]
|[[유닉스]]의 daemon 과 비슷한 호출 매커니즘을 제공하는 자바기반 컴포넌트
|-
|[http://commons.apache.org/proper/commons-dbcp DBCP]
|DataBase Connection Pool의 줄임말로서 DB Pooling을 제공하는 컴포넌트
|-
|[http://commons.apache.org/proper/commons-dbutils DbUtils]
|[[JDBC]] 사용에 도움을 주는 컴포넌트
|-
|[http://commons.apache.org/proper/commons-digester Digester]
|[[XML]]과 자바 객체와의 상호 매핑을 제공하는 컴포넌트
|-
|[http://commons.apache.org/proper/commons-discovery Discovery]
|서비스/참조명을 자원명과 연결하여 자원을 얻어올 수 있는 기능을 제공하는 컴포넌트
|-
|[https://web.archive.org/web/20140921054626/http://commons.apache.org/proper/commons-el/ EL]
|[[JSP]] 2.0 규약에서 정의된 Expression Language의 [[인터프리터]] 기능을 제공하는 컴포넌트
|-
|[http://commons.apache.org/proper/commons-email Email]
|자바에서 E-Mail 을 전송하는 기능을 제공하는 컴포넌트
|-
|[http://commons.apache.org/proper/commons-exec Exec]
|자바에서 외부 프로세스의 실행 및 환경관리를 제공하는 컴포넌트
|-
|[http://commons.apache.org/proper/commons-fileupload FileUpload]
|웹 애플리케이션과 [[서블릿]]을 위한 파일 업로드 기능을 제공하는 컴포넌트
|-
|[http://commons.apache.org/proper/commons-functor Functor] {{웨이백|url=http://commons.apache.org/proper/commons-functor |date=20141011232019 }}
|객체로 활용될 수 있는 함수나 하나의 일반적인 함수를 표현하는 객체를 제공하는 컴포넌트
|-
|[http://commons.apache.org/proper/commons-imaging Imaging]
|순수 자바기반의 이미지 컴포넌트
|-
|[http://commons.apache.org/proper/commons-io IO]
|Input/Output을 제공하는 유틸리티 컴포넌트
|-
|[http://commons.apache.org/proper/commons-jci JCI]
|Java Component Interface - 자바의 [[컴파일러]] 인터페이스를 제공하는 컴포넌트
|-
|[http://commons.apache.org/proper/commons-jcs JCS]
|Java Caching System - 캐시를 제공하는 컴포넌트
|-
|[http://commons.apache.org/proper/commons-jelly Jelly]
|XML 기반의 스크립트 프로세싱 엔진을 제공하는 컴포넌트
|-
|[http://commons.apache.org/proper/commons-jexl Jexl]
|JSTL의 Expression Language를 확장하는 컴포넌트
|-
|[http://commons.apache.org/proper/commons-jxpath JXPath]
|[[자바빈즈]]의 XPath 문법을 사용하는 인터페이스를 제공하는 컴포넌트
|-
|[http://commons.apache.org/proper/commons-lang Lang]
|java.lang 패키지의 기능을 확장하여 제공하는 컴포넌트
|-
|[http://commons.apache.org/proper/commons-launcher Launcher]
|각 플랫폼별 자바 애플리케이션을 시작하는 런처를 제공하는 컴포넌트
|-
|[http://commons.apache.org/proper/commons-logging Logging]
|여러 가지 로깅 구현체를 통합적으로 사용할 수 있는 인터페이스를 제공하는 컴포넌트.  [[log4j]]나 자바의 logging 컴포넌트 등을 사용할 수 있다.
|-
|[http://commons.apache.org/proper/commons-math Math]
|외부 라이브러리 없이 자체적으로 구현 가능한 수학 및 통계 기능을 제공하는 경량 컴포넌트
|-
|[https://web.archive.org/web/20140826051851/http://commons.apache.org/proper/commons-modeler/ Modeler]
|Model MBeans를 [[JMX]] 규약과 호환되도록 만드는 기능을 제공하는 컴포넌트
|-
|[http://commons.apache.org/proper/commons-net Net]
|네트웍 관련 여러 [[프로토콜]]을 제공하는 컴포넌트
|-
|[http://commons.apache.org/proper/commons-ognl OGNL] {{웨이백|url=http://commons.apache.org/proper/commons-ognl |date=20140925154938 }}
|Object-Graph Navigation Language를 구현한 컴포넌트
|-
|[http://commons.apache.org/proper/commons-pool Pool]
|일반적인 객체 풀링 기능을 제공하는 컴포넌트
|-
|[https://web.archive.org/web/20140909080616/http://commons.apache.org/proper/commons-primitives/ Primitives]
|자바의 Primitive Type을 제공하는 더 작고 빠른 컴포넌트
|-
|[http://commons.apache.org/proper/commons-proxy Proxy] {{웨이백|url=http://commons.apache.org/proper/commons-proxy |date=20140922115552 }}
|동적인 Proxy를 제공하는 컴포넌트
|-
|[http://commons.apache.org/proper/commons-scxml SCXML]
|State Chart XML 규약을 구현한 Java 기반의 SCXML 엔진을 제공하는 컴포넌트
|-
|[http://commons.apache.org/proper/commons-validator Validator]
|[[XML]] 파일의 Validator와 validation rule을 정의하는 기능을 제공하는 컴포넌트
|-
|[http://commons.apache.org/proper/commons-vfs VFS]
|Virtual File System - [[FTP]]나 [[SMB]], [[ZIP]] 등을 하나의 논리적 파일 시스템으로 접근할 수 있도록 제공하는 컴포넌트
|}

=== Commons Sandbox ===
Sandbox는 Commons 개발자들에게 소스의 공유 및 협업을 할 수 있는 [[Subversion]] 공간을 제공한다. 아직 Proper 단계로 올라가지 못한 단계의 프로젝트들을 모아놓은 공간이다.
소스가 제공되지 않거나 되더라도 snapshot 형태로 제공되며 API의 변경도 미리 공지 없이 바뀔 수 있다.

2012년 6월 현재 다음과 같은 프로젝트들이 존재한다.
<ref>{{웹 인용
|제목 = The Apache Commons Sandbox
|언어 = en
|url = http://commons.apache.org/sandbox/
}}</ref>

{| class="wikitable"
|+ Commons Sandbox 프로젝트 목록
! 프로젝트명
! 설명
|-
|[http://commons.apache.org/sandbox/cli2/ CLI2]
|[[Commons CLI|CLI]] 프로젝트의 redesign
|-
|[http://commons.apache.org/sandbox/convert/ Convert]
|하나의 객체를 다른 형태의 객체로 변환하는 기능을 제공하는 컴포넌트
|-
|[http://commons.apache.org/sandbox/finder/ Finder]
|[[유닉스]]의 find 명령을 자바로 구현한 컴포넌트
|-
|[http://commons.apache.org/sandbox/flatfile/ Flatfile]
|flat data sructure 구조의 파일로 작업하는 데 필요한 기능을 제공하는 컴포넌트
|-
|[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 stream 을 동적으로 등록하는 기능을 제공하는 컴포넌트
|-
|[http://commons.apache.org/sandbox/monitoring/ Monitoring]
|자바 애플리케이션의 성능이나 [[쓰레드]] 동시성 등을 모니터링하는 간단하고 경량 툴킷을 제공하는 컴포넌트
|-
|[http://commons.apache.org/sandbox/nabla/ Nabla]
|Nabla provides automatic differentiation classes that can generate derivative of any function implemented in the Java language.
|-
|[http://commons.apache.org/sandbox/openpgp/ OpenPGP]
|OpenPGP로 사인된 데이터를 검증하는 인터페이스를 제공하는 컴포넌트
|-
|[http://commons.apache.org/sandbox/performance/ Performance]
|작은 벤치마크 기능을 제공하는 프레임워크로서 [[Commons DBCP|DBCP]]나 [[Commons Pool|Pool]]의 구현체를 포함한다.
|-
|[http://commons.apache.org/sandbox/pipeline/ Pipeline]
|자료 객체를 연속적으로 처리하는 작업 큐를 제공하는 유틸리티 컴포넌트
|}

=== Commons Dormant ===
Commons Dormant는 최근에 거의 활동이 없이 정지된 프로젝트들의 목록이다. 이 컴포넌트들이 필요하다면 직접 빌드해야 할 수도 있으며 더 이상 새 버전이 나오지 않을 가능성도 있다.

2012년 6월 현재 다음과 같은 프로젝트들이 존재한다.
<ref>{{웹 인용
|제목 = The Apache Commons Dormant
|언어 = en
|url = http://commons.apache.org/dormant/
}}</ref>

{| class="wikitable"
|+ Commons Dormant 프로젝트 목록
! 프로젝트명
! 설명
|-
|[https://web.archive.org/web/20140219070226/http://commons.apache.org/proper/commons-attributes/ Attributes]
|[[C Sharp|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 환경설정 파일을 읽어오는 컴포넌트
|}

== 같이 보기 ==
* [[아파치 소프트웨어 재단]]

== 각주 ==
<references />

== 외부 링크 ==
* {{언어링크|en}} {{공식 웹사이트}}

{{아파치 소프트웨어}}

[[분류:아파치 소프트웨어 재단]]
[[분류:아파치 라이선스 소프트웨어]]