Apache Commons

Last updated

The Apache Commons is a project of the Apache Software Foundation, formerly under the Jakarta Project. The purpose of the Commons is to provide reusable, open source Java software. The Commons is composed of three parts: proper, sandbox, and dormant.

Contents

Commons Proper

The Commons Proper is dedicated to creating and maintaining reusable Java components. The Commons Proper is a place for collaboration and sharing, where developers from throughout the Apache community can work together on projects to be shared by Apache projects and Apache users. Commons developers will make an effort to ensure that their components have minimal dependencies on other software libraries, so that these components can be deployed easily. In addition, Commons components will keep their interfaces as stable as possible, so that Apache users, as well as other Apache projects, can implement these components without having to worry about changes in the future. [1]

ComponentsDescriptionLatest versionReleased
BCEL Byte Code Engineering Library - analyze, create, and manipulate Java class files6.8.22024-02-21
BeanUtils Easy-to-use wrappers around the Java reflection and introspection APIs.1.9.42019-06-12
BSFBean Scripting Framework - interface to scripting languages, including JSR-2233.12011-08-17
ChainChain of Responsibility pattern implementation.1.22008-06-01
CLICommand Line arguments parser.1.6.02023-10-23
CodecGeneral encoding/decoding algorithms (for example phonetic, base64, URL).1.16.12024-02-04
CollectionsExtends or augments the Java Collections Framework.4.5.0-M12024-03-31
CompressDefines an API for working with tar, zip and bzip2 files.1.26.12024-03-05
ConfigurationReading of configuration/preferences files in various formats.2.10.12024-03-17
CryptoA cryptographic library optimized with AES-NI wrapping Openssl or JCE algorithm implementations1.2.02023-01-14
CSVComponent for reading and writing comma separated value files.1.10.02023-01-28
DaemonA generic Daemon(unix) or Service (Windows) wrapper for Java code.1.3.42023-05-10
DBCPDatabase connection pooling services.2.12.02024-02-29
DbUtilsJDBC helper library.1.8.12023-09-09
DigesterXML-to-Java-object mapping utility.3.22011-12-13
EmailLibrary for sending e-mail from Java.1.52017-08-01
ExecAPI for dealing with external process execution and environment management in Java.1.4.02024-01-01
FileUploadFile upload capability for your servlets and web applications.1.52023-02-13
FunctorA functor is a function that can be manipulated as an object, or an object representing a single, generic function.1.0 RC12011-10-20
GeometryGeneral-purpose library for geometric processing.1.02021-08-21
ImagingA pure-Java image library.1.0-alpha42024-03-30
IOCollection of I/O utilities.2.15.12023-11-24
JCIJava Compiler Interface1.12013-10-14
JCSJava Caching System3.22023-08-22
Jelly XML based scripting and processing engine.1.0.12017-09-25
JEXLExpression language which extends the Expression Language of the JSTL.4.0-snapshot.42019-05-24
JXPathUtilities for manipulating Java Beans using the XPath syntax.1.32008-08-11
LangProvides extra functionality for classes in java.lang.3.14.02023-11-18
Logging Wrapper around a variety of logging API implementations.1.3.02023-11-26
MathLightweight, self-contained mathematics and statistics components.4.0-beta12022-12-20
NetCollection of network utilities and protocol implementations.3.10.02023-10-01
NumbersNumber types (complex, quaternion, fraction) and utilities (arrays, combinatorics).1.12022-11-01
OGNLAn Object-Graph Navigation Language4.0-incubatingTBD
PoolGeneric object pooling component.2.12.02023-09-30
ProxyLibrary for creating dynamic proxies.2.0-RC12014-04-07
RDFCommon implementation of RDF 1.1 that could be implemented by systems on the JVM.0.5.02017-12-08
RNGCommons RNG provides implementations of pseudo-random numbers generators.1.52022-09-10
SCXMLAn implementation of the State Chart XML specification aimed at creating and maintaining a Java SCXML engine.2.0-M12014-04-03
StatisticsUtilities for statistical applications.1.02022-12-05
TextA library focused on algorithms working on strings.1.11.02023-10-24
ValidatorFramework to define validators and validation rules in an xml file.1.8.02023-12-02
VFSVirtual File System component for treating files, FTP, SMB, ZIP and such like as a single logical file system.2.9.02021-06-16
WeaverProvides an easy way to enhance (weave) compiled bytecode.2.02018-09-07

Commons Sandbox

The Commons Sandbox provides a workspace where Commons contributors collaborate and experiment on projects not included in the Commons Proper. Commons members champion projects in the Sandbox for promotion to the Commons Proper, and groups of developers work to enhance Sandbox projects until they meet the standards for promotion.

ComponentsDescription
BeanUtils2Redesign of Commons BeanUtils.
ClassScanFind Class interfaces, methods, fields, and annotations without loading.
CLI2Redesign of Commons CLI.
ConvertCommons-Convert aims to provide a single library dedicated to the task of converting an object of one type to another.
FinderJava library inspired by the UNIX find command.
FlatfileJava library for working with flat data structures.
GraphA general purpose Graph APIs and algorithms.
I18nAdds the feature of localized message bundles that consist of one or many localized texts that belong together.
IdId is a component used to generate identifiers.
InjectImplementation of JSR 330, a standards compliant dependency injection framework
JavaflowContinuation implementation to capture the state of the application.
JNetJNet allows using dynamically registered url stream handlers through the java.net API.
MonitoringMonitoring aims to provide a simple but extensible monitoring solution for Java applications.
NablaNabla provides automatic differentiation classes that can generate derivative of any function implemented in the Java language.
OpenPGPInterface to signing and verifying data using OpenPGP.
PerformanceA small framework for microbenchmark clients, with implementations for Commons DBCP and Pool.
PipelineProvides a set of pipeline utilities designed around work queues that run in parallel to sequentially process data objects.

Commons Dormant

The Commons Dormant is a collection of components that have been declared inactive due to little recent development activity. These components may be used, but must be built yourself. It is best to assume that these components will not be released in the near future.

ComponentsDescription
AttributesRuntime API to metadata attributes such as doclet tags.
BetwixtServices for mapping JavaBeans to XML documents, and vice versa.
CacheCache provides object caching services.
ClazzClazz focuses on introspection and class manipulation.
ContractThis component makes all the nice features available to the Java programming language that come along with contract based programming.
ConvertCommons-Convert aims to provide a single library dedicated to the task of converting an object of one type to another.
DiscoveryTools for locating resources by mapping service/reference names to resource names.
ELInterpreter for the Expression Language defined by the JSP 2.0 specification.
EventsCommons-Events provides additional classes for firing and handling events. It focusses on the Java Collections Framework, providing decorators to other collections that fire events.
FeedparserA Java RSS/Atom parser designed to elegantly support all major versions of RSS and Atom, as well as easy ad hoc extension and RSS 1.0 modules capability.
JJarJakarta JAR Archive Repository
LatkaCommons-Latka is an HTTP functional testing suite for automated QA, acceptance and regression testing.
LauncherCross platform Java application launcher.
MapperMapper is a thin abstraction layer around a project's chosen data mapping technology (a.k.a. DAO pattern).
MessengerMessenger is an easy to use and lightweight framework for working with JMS in the web tier.
ModelerMechanisms to create Model MBeans compatible with JMX specification.
PrimitivesSmaller, faster and easier to work with types supporting Java primitive types.
ResourcesResources provides a lightweight framework for defining and looking up internationalized message strings keyed by a java.util.Locale and a message key.
ScaffoldScaffold is a toolkit for building web applications.
ThreadPoolThreadPool is a simple component for asynchronously dispatching work to another thread in a pool for simple multi threaded programming.
TransactionImplementations for multi level locks, transactional collections and transactional file access.
WorkflowWorkflow provides a framework for building workflow management systems.
XMLIOSimple and fast importer for XML configuration or import files.

See also

Related Research Articles

<span class="mw-page-title-main">Jakarta EE</span> Set of specifications extending Java SE

Jakarta EE, formerly Java Platform, Enterprise Edition and Java 2 Platform, Enterprise Edition (J2EE), is a set of specifications, extending Java SE with specifications for enterprise features such as distributed computing and web services. Jakarta EE applications are run on reference runtimes, which can be microservices or application servers, which handle transactions, security, scalability, concurrency and management of the components they are deploying.

SourceForge is a web service that offers software consumers a centralized online location to control and manage open-source software projects and research business software. It provides source code repository hosting, bug tracking, mirroring of downloads for load balancing, a wiki for documentation, developer and user mailing lists, user-support forums, user-written reviews and ratings, a news bulletin, micro-blog for publishing project updates, and other features.

An application server is a server that hosts applications or software that delivers a business application through a communication protocol. For a typical web application, the application server sits behind the web servers.

<span class="mw-page-title-main">Apache Tomcat</span> Java-based HTTP web server environment

Apache Tomcat is a free and open-source implementation of the Jakarta Servlet, Jakarta Expression Language, and WebSocket technologies. It provides a "pure Java" HTTP web server environment in which Java code can also run. Thus it is a Java web application server, although not a full JEE application server.

<span class="mw-page-title-main">NetBeans</span> Integrated development environment software for software development

NetBeans is an integrated development environment (IDE) for Java. NetBeans allows applications to be developed from a set of modular software components called modules. NetBeans runs on Windows, macOS, Linux and Solaris. In addition to Java development, it has extensions for other languages like PHP, C, C++, HTML5, and JavaScript. Applications based on NetBeans, including the NetBeans IDE, can be extended by third party developers.

<span class="mw-page-title-main">WebObjects</span> Java web application server and framework originally developed by NeXT Software

WebObjects is a discontinued Java web application server and a server-based web application framework originally developed by NeXT Software, Inc.

Jakarta Faces, formerly Jakarta Server Faces and JavaServer Faces (JSF) is a Java specification for building component-based user interfaces for web applications. It was formalized as a standard through the Java Community Process as part of the Java Platform, Enterprise Edition. It is an MVC web framework that simplifies the construction of user interfaces (UI) for server-based applications by using reusable UI components in a page.

Web development is the work involved in developing a website for the Internet or an intranet. Web development can range from developing a simple single static page of plain text to complex web applications, electronic businesses, and social network services. A more comprehensive list of tasks to which Web development commonly refers, may include Web engineering, Web design, Web content development, client liaison, client-side/server-side scripting, Web server and network security configuration, and e-commerce development.

Maven is a build automation tool used primarily for Java projects. Maven can also be used to build and manage projects written in C#, Ruby, Scala, and other languages. The Maven project is hosted by The Apache Software Foundation, where it was formerly part of the Jakarta Project.

Mobile app development is the act or process by which a mobile app is developed for one or more mobile devices, which can include personal digital assistants (PDA), enterprise digital assistants (EDA), or mobile phones. Such software applications are specifically designed to run on mobile devices, taking numerous hardware constraints into consideration. Common constraints include CPU architecture and speeds, available memory (RAM), limited data storage capacities, and considerable variation in displays and input methods. These applications can be pre-installed on phones during manufacturing or delivered as web applications, using server-side or client-side processing to provide an "application-like" experience within a web browser.

<span class="mw-page-title-main">Java (software platform)</span> Set of computer software and specifications

Java is a set of computer software and specifications that provides a software platform for developing application software and deploying it in a cross-platform computing environment. Java is used in a wide variety of computing platforms from embedded devices and mobile phones to enterprise servers and supercomputers. Java applets, which are less common than standalone Java applications, were commonly run in secure, sandboxed environments to provide many features of native applications through being embedded in HTML pages.

<span class="mw-page-title-main">Adobe AIR</span> Cross-platform runtime system for building rich web applications

Adobe AIR is a cross-platform runtime system currently developed by Harman International, in collaboration with Adobe Inc., for building desktop applications and mobile applications, programmed using Adobe Animate, ActionScript, and optionally Apache Flex. It was originally released in 2008. The runtime supports installable applications on Windows, macOS, and mobile operating systems, including Android, iOS, and BlackBerry Tablet OS.

A software widget is a relatively simple and easy-to-use software application or component made for one or more different software platforms.

Java view technologies and frameworks are web-based software libraries that provide the user interface, or "view-layer", of Java web applications. Such application frameworks are used for defining web pages and handling the HTTP requests (clicks) generated by those web pages. As a sub-category of web frameworks, view-layer frameworks often overlap to varying degrees with web frameworks that provide other functionality for Java web applications.

<span class="mw-page-title-main">Google Wave</span> Software framework for real-time collaborative editing online

Google Wave, later known as Apache Wave, is a discontinued software framework for real-time collaborative online editing. Originally developed by Google and announced on May 28, 2009, it was renamed to Apache Wave when the project was adopted by the Apache Software Foundation as an incubator project in 2010.

<span class="mw-page-title-main">Spring Roo</span> Open-source software tool

Spring Roo is an open-source software tool that uses convention-over-configuration principles to provide rapid application development of Java-based enterprise software. The resulting applications use common Java technologies such as Spring Framework, Java Persistence API, Thymeleaf, Apache Maven and AspectJ. Spring Roo is a member of the Spring portfolio of projects.

<span class="mw-page-title-main">React (software)</span> JavaScript library for building user interfaces

React is a free and open-source front-end JavaScript library for building user interfaces based on components. It is maintained by Meta and a community of individual developers and companies.

<span class="mw-page-title-main">Eclipse Che</span> Developer workspace server software

Eclipse Che is an open-source, Java-based developer workspace server and Online IDE. It includes a multi-user remote development platform. The workspace server comes with a flexible RESTful webservice. It also contains a SDK for creating plug-ins for languages, frameworks or tools. Eclipse Che is an Eclipse Cloud Development (ECD) top-level project, allowing contributions from the user community.

<span class="mw-page-title-main">Bazel (software)</span> Software tool that automates software builds and tests

Bazel is a free and open-source software tool used for the automation of building and testing software. Google uses the build tool Blaze internally and released an open-sourced port of the Blaze tool as Bazel, named as an anagram of Blaze. Bazel was first released in March 2015 and was in beta status by September 2015. Version 1.0 was released in October 2019.

References

Goyal, Vikram (2003), Using the Jakarta Commons, Part I , retrieved August 13, 2006