Java читает локаль, часовой пояс и информацию о кодировании (и, возможно, больше) из системы, на которой она установлена.
Это часто приносит плохие сюрпризы (принесло мне только вчера). Предположите, что ваши серверы разработки и производства настроены на TimeZone GMT + 2. Затем вы развертываете на рабочем сервере, установленном на GMT. 2-часовой сдвиг может быть нелегко наблюдать немедленно. И хотя вы можете передать TimeZone
в свои календари, API-интерфейсы могут создавать календарные календари (или даты), используя часовой пояс по умолчанию.
Теперь я знаю, что нужно быть осторожным с этими настройками, но легко пропустить, следовательно, сделать программы более подверженными ошибкам.
Итак, почему у Java нет собственных значений по умолчанию - UTF-8, GMT, en_US (да, я нахожусь в не-en_US locale, но по умолчанию это нормально). При необходимости приложения могут считывать системные настройки с помощью какого-либо API.
Таким образом, программы будут более предсказуемыми.
Итак, в чем причина этого решения?