UnboundID LDAP SDK for Java

Ping Identity
Product Information
Advantages of the LDAP SDK

A Comparison of LDAP SDK Functionality

This page provides a basic comparison of the capabilities included in JNDI, the Netscape Directory SDK for Java, and the UnboundID LDAP SDK for Java.

General Functionality

Description JNDI Netscape SDK UnboundID SDK
Full support for the core LDAPv3 protocol Yes Yes Yes
Uses LDAPv3 by default Yes No Yes
Ease of use Poor Moderate Excellent
Support for Java SE 5+ features
  • Generics
None
  • Generics
  • Varargs
  • Enumerations
  • Concurrency
  • Annotations
Supported standards-based controls 3 7 32
Supported standards-based extended operations 1 0 7
Supported SASL mechanisms 5 1 9
Direct support for asynchronous operations No Yes (via queue polling) Yes (via notification interface or Java futures API)
Support for connection pooling Basic Basic Enhanced
Multiple connection pools in the same JVM No Yes Yes
Support for failover between servers None Basic Enhanced
Support for load balancing across servers No No Yes
Reusable request objects No No Yes
Disconnect notification No No Yes
Access to response data for successful operations
  • Response controls (not threadsafe)
  • Response controls (not threadsafe)
  • Result code
  • Diagnostic message
  • Matched DN
  • Referral URLs
  • Response controls (threadsafe)
Access to response data for failed operations
  • Diagnostic message
  • Matched DN
  • Referral URLs
  • Response controls (not threadsafe)
  • Result code
  • Diagnostic message
  • Matched DN
  • Referral URLs
  • Response controls (not threadsafe)
  • Result code
  • Diagnostic message
  • Matched DN
  • Referral URLs
  • Response controls (threadsafe)
Client-side entry sorting None Basic Enhanced
Client-side filter evaluation No No Yes
Provided example tools 0 3 30

Security-Related Functionality

See the Improved Security Functionality page for additional information.

Description JNDI Netscape SDK UnboundID SDK
Secure communication with SSL Basic Basic Enhanced
Secure communication with StartTLS Basic None Enhanced
Secure communication with SASL QoS Yes No Yes
Prevent simple binds with a DN but no password No No Yes
Methods for retrieving the client identity None None
  • Authorization identity controls
  • "Who Am I?" extended operation
  • Get authorization entry control
Support for the proxied authorization control None V1 Only V1 and V2
Supported password policy controls None
  • Password expired
  • Password expiring
  • Password expired
  • Password expiring
  • Password policy
  • Account usability
  • Generate password
  • Get password policy state issues
  • Password update behavior
  • Password validation details
  • Purge password
  • Retire password
Supported password policy extended operations None None
  • Password modify
  • Password policy state
  • Deliver password reset token
  • Generate password
  • Get password quality requirements
Support for atomic operations None None
  • Increment modify extension
  • Read entry controls
  • Assertion control
  • LDAP transactions
  • Batched transactions
  • Interactive transactions
  • Multi-update operations
Search filter construction Basic None Enhanced

Included Related APIs

See the Inclusion of Related APIs page for additional information.

Description JNDI Netscape SDK UnboundID SDK
LDIF processing None Basic Enhanced
Base64 processing None Basic Enhanced
ASN.1 BER processing None Basic Enhanced
Root DSE parsing No No Yes
Schema parsing Basic Basic Enhanced
Changelog entry parsing No No Yes
LDAP Object Persistence None None Enhanced
LDAP Communication Decoding None Limited Enhanced
Command line argument parsing None Basic Enhanced
Simple LDAP-enabled command-line tool development No No Yes

Suitability for Commercial Development

Description JNDI Netscape SDK UnboundID SDK
Actively developed and enhanced No No Yes
Full localization support No No Yes
Testing support classes None None In-Memory Directory Server, LDAPTestUtils class
Availability of debug information Basic (using JDK logging) Basic (debug written to standard out, trace written to a custom handler) Enhanced (using JDK logging)