Java Naming and Directory Interface (JNDI)は、Javaプログラミング言語で記述されたアプリケーションに、ネーミングおよびディレクトリ機能を提供します。ほかのネームおよびディレクトリ・サービスの実装と独立して動作するように設計されています。新しいサービス、展開されつつあるサービス、すでに展開されているサービスなど、さまざまなサービスに対して共通の方法でアクセスすることができます。
JNDIアーキテクチャは、API (Application Programming Interface)およびSPI (Service Provider Interface)で構成されます。このAPIを使用すると、Javaアプリケーションから様々なネームおよびディレクトリ・サービスにアクセスできます。SPIによって、様々なネームおよびディレクトリ・サービスが透過的にプラグインされます。これらのサービスには、JNDIテクノロジのAPIを使用してJavaアプリケーションからアクセスできます。