Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How Java checks that is out of date

I have a linux box which is not connected to Internet. I have installed on it Firefox 24.0 and jre1.7.0_40 (and also 1.7.0_17) When I start FF with a web application locally installed on the box I'm getting a warning popup that

Java Update Needed; YourJava version is out of date

I don't undesrtand how Java knows that is 'out of date' ??? What compares to what ? I would assume that checks the available versions at oracle.com and if the current one installed on the system is too old then drops this warning.

Or the application itself which is started carries some information about Java version what was available or what was used at its compile time ??

like image 520
wildfrontier Avatar asked Dec 11 '13 16:12

wildfrontier


People also ask

How do I know if Java is out of date?

When you encounter a page that includes a Java application and your version of Java is considered out of date, the Java Update Needed message will be shown. We recommend that you click Update to open the java.com download page to get the latest version of Java.

Does Java expire?

Java expires whenever a new release with security vulnerability fixes becomes available. For systems unable to reach the Oracle Servers, a secondary mechanism expires this JRE (version 8u66) on February 19, 2016.

How do I check my Java version history?

The Java version can be found in the Java Control Panel. Under the General tab in the Java Control Panel, the version is available through the About section. A dialog appears (after clicking About) showing the Java version.

How do I test if Java is working?

In the Search bar, type Control Panel. Click Programs. If the Java icon present, then Java is installed. If not, click Programs and Features, and look for installed versions of Java in the J's.


1 Answers

There is an explanation in the 1.7.0u10 release notes.

The JRE relies on periodic checks with an Oracle Server to determine if it (the JRE)is still considered up-to-date with all the available security fixes (above the security baseline). In the past, if the JRE was unable to contact the Oracle Server, it continued to behave as though it is still the most recent version with regard to security, for an indefinite period.

To avoid this problem, a secondary mechanism, that does not rely on external communication, has been added to the JDK 7u10. From this release onwards, all JREs will contain a hard-coded expiration date. The expiration date is calculated to end after the scheduled release of the next Critical Patch Update.

The online check gets its data from https://javadl-esd-secure.oracle.com/update/baseline.version , I believe.

The expiration date and versions hardcoded in the JRE are stored in the BuiltInProperties.class located in the deploy.jar

For 1.7.0u45, we have

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";
like image 69
RealHowTo Avatar answered Oct 06 '22 01:10

RealHowTo