Хотя между ними могут быть тонкие различия, наиболее важным отличием является то, что System.Logger
(в модуле java.base
) представляет собой фасад , тогда как java.util.logging.Logger
(в java.logging
) представляет собой реализация .
Основная идея заключается в том, чтобы авторы библиотек писали в своем коде независимую запись в журнал и позволяли каждому пользователю этой библиотеки предоставлять свою любимую реализацию. Это также означает, что все ваше приложение будет использовать одну и ту же инфраструктуру журналирования вместо того, чтобы настраивать регистратор каждой библиотеки в вашей кодовой базе.
Начиная с JDK 9 в модуле может отсутствовать java.logging
. graph, которая действительно позволяет вам использовать любую реализацию, которую вы используете sh, даже не имея бесполезных пакетов в образе JDK. Если присутствует java.logging
, он используется как бэкэнд по умолчанию, если не присутствует другой бэкэнд. Если бэкэнда нет, он просто напечатает на System.err
.