Apache LDAP API
# Apache LDAP API

Apache LDAP API is an open source project of the Apache Software Foundation and a subproject of the Apache Directory. It's a replacement for outdated Java/LDAP libraries like (jLdap, Mozilla LDAP SDK and JNDI) and works with any LDAP server.

## History

The Apache Directory project was started using the JNDI library, but many of its LDAP structures had to be developed in-house because the JNDI library was ineffective for interacting with an LDAP server. It wasn't convenient for the project team to use JNDI which indicated to them it wouldn't be easy for typical users either. Eventually, all of the necessary LDAP data structures (_Attribute_, _Entry_, _DN_, ...) were re-implemented by the project team.

At some point it became necessary to communicate with other LDAP servers without using the JNDI library, so a new _LdapConnection_ class was developed. This was the first step toward a full Java API specifically designed for LDAP usage on the Java platform.

After starting this effort (back in 2007), some people from Sun (Microsystems), who was working on the OpenDS project, contacted the Apache Directory project team to gauge interest in helping create a new version of JNDI. ([Resurrecting The Java LDAP Centric API](https://web.archive.org/web/20170102082918/https://blogs.oracle.com/treydrake/entry/resurrecting_the_java_ldap_centric). Unfortunately, the effort stalled, as the need for JNDI2 was no longer a priority for Sun. Nevertheless the Apache Directory team continued with the work but the pace was slow.

Collaboration with Sun renewed after the OpenDS project team's presentation at LdapCon in 2009 ([Towards a common LDAP API for the Java Platform](http://www.symas.com/ldapcon2009/papers/poitou1.shtml%5B%5D)). The story repeated itself once again after Oracle bought Sun in 2010, and its project team disbanded.

Despite these fits and starts, a consensus was reached about the need for a new LDAP API and what it should be capable of doing. An agreement that these key features should be included:

* A complete coverage of the LDAP protocol
* A schema aware API
* An easy to use API
* An API taking advantage of the new Java construction (generics, ellipsis, NIO)
