Понятно для чего его использовать, чтобы вносить в контекст объекты и привязывать к ним определенный name, а потом когда они понадобятся - доставать их из контекста по заданному имени. Но вот непонятны разные реализации JNDI, в чем их смысл? Там уже есть объекты с определенными именами? и вообще есть подобное в JNDI(какие-то зарезервированные объекты с определенными именами)
Смысл JNDI в том, что это внешняя конфигурация. К примеру, у тебя есть приложение, которое использует соединение с БД. Если требуется, чтобы приложение стояло на разных площадках (тестовая, девелоперская, продуктовая и т.д.), то, решая проблему в лоб, тебе потребуется создать для каждой площадки по отдельному приложению с зашитой внутрь конфигурацией.
Естественно, что портируемость у такого способа будет нулевая. Тут на помощь приходит JNDI. Твоя среда, к примеру сервер tomcat, поставляет этот объект-соединение с БД javax.sql.DataSource как внешнюю конфигурацию. И параметры этого соединения с БД (хост, пользователь и т.д.) настраиваются уже со стороны среды.
Т.е. у тебя получается одно портируемое приложение, которое можно устанавливать на разные площадки.
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости