Какова цель пространств имен?
и, что более важно, должны ли они использоваться как объекты в Java (вещи, которые имеют данные и функции и которые пытаются достичь инкапсуляции)? эта идея надуманна? :)
или они должны использоваться как пакеты в java?
, или они должны использоваться более широко как модульная система или что-то еще?
С независимой от языка точки зрения, пространства имен — это способ изолировать вещи (т. е. инкапсулировать в смысле). Это более общая концепция (см., например, пространства имен xml). Вы можете «создавать» пространства имен несколькими способами, в зависимости от используемого языка: пакеты, статические классы, модули и так далее. Все они предоставляют пространства имен для объектов/данных/функций, которые они содержат. Это позволяет лучше организовать код, изолировать функции, способствует лучшему повторному использованию кода и адаптивности (как инкапсуляция). Как сказано в «Дзен Python», «Пространства имен — это отличная идея — давайте сделаем больше таких!».