Ответ 1
В примечаниях 1.7.0u10 есть объяснения.
JRE полагается на периодические проверки с помощью Oracle Server для определения если он (JRE) по-прежнему считается актуальным со всеми доступными исправления безопасности (выше базового уровня безопасности). В прошлом, если JRE не смог связаться с сервером Oracle, он продолжал вести себя как хотя это все еще самая последняя версия в отношении безопасности, на неопределенный срок.
Чтобы избежать этой проблемы, вторичный механизм, который не полагается на внешняя связь, была добавлена в JDK 7u10. Из этого релиз и далее, все JRE будут содержать дату окончания жесткого кодирования. Дата истечения рассчитана для завершения после запланированного выпуска следующего обновления критического обновления.
Онлайн-проверка получает свои данные из https://javadl-esd-secure.oracle.com/update/baseline.version, я полагаю.
Дата истечения срока действия и версии, жестко закодированные в JRE, хранятся в BuiltInProperties.class
, расположенном в файле deploy.jar
Для 1.7.0u45 имеем
public static final boolean JRE_BASELINE_CHECKS_ENABLED = true;
public static final String JRE_EXPIRATION_DATE = "02/14/2014";
public static final String BASELINE_VERSION_131 = "1.3.1_21";
public static final String BASELINE_VERSION_142 = "1.4.2_43";
public static final String BASELINE_VERSION_150 = "1.5.0_55";
public static final String BASELINE_VERSION_160 = "1.6.0_65";
public static final String BASELINE_VERSION_170 = "1.7.0_45";
public static final String BASELINE_VERSION_180 = "1.8.0";
public static final String CURRENT_VERSION = "1.7.0_45";
public static final String CURRENT_NODOT_VERSION = "170";
public static final String DEPLOY_VERSION = "10.45.2.18";
public static final String DEPLOY_NOBUILD_VERSION = "10.45.2";
public static final String DEPLOY_NODOT_VERSION = "10452";
public static final String JAVAWS_NAME = "javaws-10.45.2.18";
public static final String JAVAWS_VERSION = "10.45.2.18";