The OpenDJ SDK for Java provides a high performance easy to use library of classes and interfaces for accessing and implementing LDAP Directory Services as defined in RFC 4510.
For an introduction to LDAP, read the OpenDJ SDK Developer's Guide chapter on Understanding LDAP. Also see the chapter on Best Practices For LDAP Application Developers.

Getting Started

The following example shows how the OpenDJ SDK may be used to connect to a directory server, authenticate, and then perform a search. The search results are output as LDIF to the standard output:
    // Create an LDIF writer which will write the search results to stdout.
    final LDIFEntryWriter writer = new LDIFEntryWriter(System.out);
    Connection connection = null;
    try
    {
      // Connect and bind to the server.
      final LDAPConnectionFactory factory = new LDAPConnectionFactory("localhost", 1389);

      connection = factory.getConnection();
      connection.bind(userName, password);

      // Read the entries and output them as LDIF.
      final ConnectionEntryReader reader = connection.search(baseDN, scope, filter, attributes);
      while (reader.hasNext())
      {
        if (reader.isEntry())
        {
          // Got an entry.
          final SearchResultEntry entry = reader.readEntry();
          writer.writeComment("Search result entry: " + entry.getName().toString());
          writer.writeEntry(entry);
        }
        else
        {
          // Got a continuation reference.
          final SearchResultReference ref = reader.readReference();
          writer.writeComment("Search result reference: " + ref.getURIs().toString());
        }
      }
      writer.flush();
    }
    catch (final Exception e)
    {
      // Handle exceptions...
      System.err.println(e.getMessage());
    }
    finally
    {
      if (connection != null)
      {
        connection.close();
      }
    }

Additional examples can be found online at the OpenDJ LDAP SDK Examples site.

Creating Connections

The following classes can be used to create and manage connections to LDAP directory servers:

Creating Requests

The following classes can be used to create LDAP requests:

Using Controls

Common LDAP control implementations can be found in {@link org.forgerock.opendj.ldap.controls}.

Core Types

The following classes and interfaces represent core types:
@see RFC 4511 - Lightweight Directory Access Protocol (LDAP): The Protocol @see org.forgerock.opendj.ldap