Java检查过时的方式

时间:2013-12-11 16:38:41

标签: java security plugins

我有一个没有连接到Internet的Linux盒子。 我已在其上安装了Firefox 24.0jre1.7.0_40(以及1.7.0_17) 当我使用本地安装在盒子上的Web应用程序启动FF时,我收到一个警告弹出窗口

  

需要Java更新; YourJava版本已过期

我不会不喜欢Java如何知道'过时'??? 什么比较什么? 我会假设检查oracle.com上的可用版本,如果系统上安装的当前版本太旧,则会丢弃此警告。

或者启动的应用程序本身带有一些关于Java版本的可用信息或编译时使用的信息?

1 个答案:

答案 0 :(得分:4)

1.7.0u10 release notes中有一个解释。

  

JRE依赖于与Oracle服务器的定期检查来确定   如果它(JRE)仍然被认为是最新的可用的   安全修复程序(在安全基准之上)。在过去,如果是JRE   无法联系Oracle服务器,它继续表现为   虽然它仍然是最新版本的安全性,   无限期。

     

为了避免这个问题,一个不依赖的辅助机制   外部通信,已添加到JDK 7u10。由此   从版本开始,所有JRE都将包含一个硬编码的到期日期。   计算到期日期将在计划发布后结束   下一个重要补丁更新。

我认为,在线检查会从https://javadl-esd-secure.oracle.com/update/baseline.version获取数据。

JRE中的过期日期和硬编码版本存储在deploy.jar中的BuiltInProperties.class

对于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";