There are many versions of the Microsoft Virtual Machine (VM) that are available or in use today. Updated versions are made available relatively frequently. This document is designed to explain the year 2000 status for the various version of the Microsoft VM along with recommendations regarding known Year 2000 issues.
How can users determine what version of the Microsoft VM they are using?
Users should first determine what version of the Microsoft VM they are running.
- Go to a MSDOS prompt, type in JVIEW, and it will return a version number.
Or
- Find msjava.dll (\System directory for Windows 98 and \system32 for Windows NT), go to Properties, version number is listed
Released versions of the Microsoft Virtual Machine are listed below. Known year 2000 issues related to each VM are included as well as the recommended upgrade path to fix such issues.
VM Version |
Primary Product(s) Where Microsoft VM Delivered |
Date Delivered |
Compliance Status |
|
For Details on Date Issues and Recommendations on following Microsoft VMs see Section 1 below |
1158 |
Internet Explorer 3.0 |
Aug/1996 |
Not Compliant |
1178 |
Visual J++╥ 1.0 |
|
Not Compliant |
1213 |
Internet Explorer 3.01 |
Oct/1996 |
Not Compliant |
1257 |
VM Update |
|
Not Compliant |
1513 |
Visual J++ 1.1 |
Feb/1997 |
Not Compliant |
1515 |
SDK for Java 1.5 |
Feb/1997 |
Not Compliant |
1516 |
Internet Explorer 3.02 |
Mar/1997 |
Not Compliant |
1517 |
VM Update |
Apr/1997 |
Not Compliant |
1518 |
SDK for Java 1.5.1 |
May/1997 |
Not Compliant |
1520 |
VM Update |
9/15/98 |
Compliant |
|
For Details on Date Issues and Recommendations on following Microsoft VMs see Section 2 below |
2057 |
SDK For Java 2.0 Beta 1 |
4/2/1997 |
Not Compliant |
2174 |
Internet Explorer 4.0 Beta 2 |
7/14/1997 |
Not Compliant |
2175 |
SDK For Java 2.0 Beta 2 |
7/23/1997 |
Not Compliant |
2252 |
Internet Explorer 4.0 & SDK For Java 2.0 |
10/1/1997 |
Not Compliant |
2334 |
VM Update |
10/29/1997 |
Not Compliant |
2339 |
Internet Explorer 4.01 & SDK For Java 2.01 |
11/30/1997 |
Not Compliant |
2405 * |
Windows 98 |
5/20/1998 |
Not Compliant |
2424 |
Internet Explorer 4.01SP1 & Windows╥ 98 |
5/20/1998 |
Not Compliant |
2435 |
Internet Explorer 4.01SP1A & Windows╥ 98 Y2K Update |
12/21/1998 |
Not Compliant |
2436 |
VM Update |
1/1999 |
Compliant |
2613 |
Visual J++ 6.0 Tech Preview 1 & SDK For Java 3.0 Preview |
3/11/1998 |
Not Compliant |
|
For Details on Date Issues and Recommendations on following Microsoft VMs see Section 3 below |
2750 |
SDK for Java 3.0 Preview & Internet Explorer 5.0 Beta 1 |
5/28/1998 |
Not Compliant |
2752 |
Visual Studio╥ 98 |
7/1/1998 |
Not Compliant |
2829 |
SDK For Java 3.0 |
7/17/1998 |
Not Compliant |
2922 |
Visual J++ 6.0 |
9/2/1998 |
Not Compliant |
2924 |
SDK For Java 3.1 |
9/2/1998 |
Not Compliant |
2925 |
SDK For Java 3.1 Update & Visual J++6.0 sp1 |
10/13/1998 |
Not Compliant |
3031 |
Internet Explorer 5.0 Beta 2 |
10/22/1998 |
Not Compliant |
3154 |
VM Update |
12/7/1998 |
Not Compliant |
3155 |
VM Update |
12/8/1998 |
Not Compliant |
3158 |
VM Update |
12/22/1998 |
Not Compliant |
3161 |
Visual J++ 6.0 SP2 |
|
Not Compliant |
3165 |
VM Update |
1/1999 |
Compliant |
3167 |
Internet Explorer 5.0 |
2/18/1999 |
Compliant |
* This is the same JavaVM as 2424. "2405" is displayed when Jview is typed at the command prompt.
Section 1
Microsoft VM Versions: 1158û1518 are ""Not Compliant"
Description of how the product handles dates:
With this series of the VM, version 1158û1518, date values are held internally by the VM as the number of elapsed milliseconds since the "epoch" (January 1, 1970 00:00:00 UTC). The valid range of dates for these VMs, based on Java 1.02, is 1970 to 2037. Any date outside of that range is returned as being out of range.
The java.util.date class is the built-in date manipulation and storage class for Java 1.02. This class provides a number of methods for manipulating, storing and converting dates.
Two-digit shortcut handling:
VMs 1158û1518 handles the 2-digit year shortcut by adding the given year to 1900 to produce the 4-digit year.
Date Handling Issues:
The hundred-year sliding date window is not implemented in VMs 1158-1518. This limits the range of years with the two-digit shortcut to 1970-1999. The sliding date window is implemented in VM 1520.
Example: Attempting to parse the date 4/12/02 would result in a java.lang.illegalArgumentException.
Recommendations:
Upgrade to VM version 1520 available from http://www.microsoft.com/java/download.htm.
Microsoft VM Version: 1520 is "Compliant."
Issues addressed by 1520:
VM 1520 handles dates the same as 1158-1518, with the exception of the 2-digit year shortcut format. With 1520 an "80/20" hundred-year sliding date window is used to "place" the date in the expected century. This means 2-digit years are assumed to fall, from the current year, within the range of 20 years forward and 80 years backward.
Example 1: if the year is 1998 and the date 1/6/17 is entered, it would be converted to a 4-digit year as 1/6/2017.
Example 2: if the year is 1998 and the date 2/16/73 is entered, it would be converted to a 4-digit year as 2/3/1973.
Section 2
Microsoft VM Version: 2057û2339 are "Not Compliant."
Description of how the product handles dates:
With this series of the VM, version 2057-2339, date values are held internally by the VM as the number of elapsed milliseconds since the "epoch" (January 1, 1970 00:00:00 UTC). There is no practical limit on the date range with 4-digit years.
This series of VMs includes the Java 1.02 java.util.date class as well as the Java 1.1 java.util.calendar and related classes for date manipulation and storage.
Two-digit shortcut handling:
VMs 2057-2339 handle the 2-digit year shortcut by adding the year given to 1900 to produce the 4-digit year.
Date Handling Issues:
Issue 1: The sliding window is not implemented with these VMs. Using 2-digit years and the java.text.SimpleDateFormat parser, the date range is 1900-1999.
Example 1: Attempting to parse the date 4/12/02 with the 1.02 java.util.date would result in a java.lang.illegalArgumentException.
Example 2: Attempting to parse the date 4/12/02 into a 4-digit year with the 1.1 java.text.SimpleDateFormat class would result in 4/12/1902.
Issue 2: The java.text.SimpleDateFormat parser included in these VMs parses 4-digit years with the Java 1.1 date classes by using the first 2 digits.
Example 1: Entering the date 2/3/1678 would parse to 2/3/1916. The parser sees the 16 and adds it to 1900 to create the 4-digit date.
Example 2: Entering the date 5/12/2020 would parse to 5/12/1920. The parser sees the 20 and adds it to 1900 to create the 4-digit date.
Issue 3: The java.text.SimpleDateFormat parser included in these VMs does not recognize the date 2/29/00. This date will return a java.lang.IllegalArgumentException.
Recommendations:
Upgrade to VM version 2436 available from http://www.microsoft.com/java/download.htm or version 3167, available from
For x86 platforms: http://www.microsoft.com/msdownload/iebuild/javavmx86/en/javavmx86.htm
For Digital Alpha platforms: http://www.microsoft.com/msdownload/iebuild/javavmalpha/en/javavmalpha.htm
Microsoft VM Version: 2424 is "Not Compliant."
Description of how the product handles dates:
With this VM, date values are held internally by the VM as the number of elapsed milliseconds since the "epoch" (January 1, 1970 00:00:00 UTC). There is no practical limit on the date range.
This VM includes the Java 1.02 java.util.date class as well as the Java 1.1 java.util.calendar and related classes for date manipulation and storage.
Two-digit shortcut handling:
This VM handles the 2-digit year shortcut by applying an 80/20 sliding window to place the 2-digit year in the expected century. This means 2-digit years are assumed to fall, from the current year, within the range of 20 years forward and 80 years backward.
Example 1: if the year is 1998 and the date 1/6/17 is entered, it would be converted to a 4-digit year as 1/6/2017.
Example 2: if the year is 1998 and the date 2/16/73 is entered, it would be converted to a 4-digit year as 2/3/1973.
Date Handling Issues:
Issue 1: The java.text.SimpleDateFormat parser included in these VMs parses 4-digit years with the Java 1.1 date classes by using the first 2 digits.
Example 1: Entering the date 2/3/1678 would parse to 2/3/2016. The parser sees the 16 and it falls into the upper portion of the sliding window, so it maps to the twenty-first century.
Example 2: Entering the date 5/12/2020 would parse to 5/12/1920. The parser sees the 20 and it falls into the lower portion of the sliding window, so it maps to the twentieth century.
Issue 2: The java.text.SimpleDateFormat parser included in these VMs does not recognize the date 2/29/00. This date will return a java.lang.IllegalArgumentException.
Issues Addressed in VM 2424:
The 80/20 sliding window is now implemented for both the Java 1.02 java.util.date class and the java 1.1 java.text.SimpleDateFormat parser. The java.util.date class does not have any known issues with respect to parsing 4-digit dates.
Recommendations:
Upgrade to VM version 2436 available from http://www.microsoft.com/java/download.htm or version 3167, available from
For x86 platforms: http://www.microsoft.com/msdownload/iebuild/javavmx86/en/javavmx86.htm
For Digital Alpha platforms: http://www.microsoft.com/msdownload/iebuild/javavmalpha/en/javavmalpha.htm
Microsoft VM Version: 2435 is "Not Compliant".
Description of how the product handles dates:
With this VM, date values are held internally by the VM as the number of elapsed milliseconds since the "epoch" (January 1, 1970 00:00:00 UTC). There is no practical limit on the date range.
This VM includes the Java 1.02 java.util.date class as well as the Java 1.1 java.util.calendar and related classes for date manipulation and storage.
Two-digit shortcut handling:
This VM handles the 2-digit year shortcut by applying an 80/20 sliding date window to place the two-digit year in the "correct" century. This means 2-digit years are assumed to fall, from the current year, within the range of 20 years forward and 80 years backward.
Example 1: if the year is 1998 and the date 1/6/17 is entered, it would be converted to a 4-digit year as 1/6/2017.
Example 2: if the year is 1998 and the date 2/16/73 is entered, it would be converted to a 4-digit year as 2/3/1973.
Date Handling Issues:
Issue 1: The java.text.SimpleDateFormat parser included in these VMs does not recognize the date 2/29/00. This date will return a java.lang.IllegalArgumentException.
Issues Addressed in VM 2435:
This includes the fixes in 2424 and has no known issues reading 4-digit years with the java.text.SimpleDateFormat parser.
Recommendations:
Upgrade to VM version 2436 available from http://www.microsoft.com/java/download.htm or version 3167, available from
For x86 platforms: http://www.microsoft.com/msdownload/iebuild/javavmx86/en/javavmx86.htm
For Digital Alpha platforms: http://www.microsoft.com/msdownload/iebuild/javavmalpha/en/javavmalpha.htm
Microsoft VM Version: 2436 is "Compliant".
Issues addressed by 2436:
This VM includes the fixes in 2424 and 2435 and resolves the 2/29/00 parser issue.
Microsoft VM Version: 2613 is "Not Compliant".
Issues:
This VM has the same date handling issues as VMs 2057û2339. See that section above for details.
Recommendations:
Upgrade to VM version 3167, available from
For x86 platform: http://www.microsoft.com/msdownload/iebuild/javavmx86/en/javavmx86.htm
For Digital Alpha platform: http://www.microsoft.com/msdownload/iebuild/javavmalpha/en/javavmalpha.htm
Section 3
Microsoft VM Version: 2750û3161 are "Not Compliant."
Description of how the product handles dates:
With this series of the VM, version 2750û3161, date values are held internally by the VM as the number of elapsed milliseconds since the "epoch" (January 1, 1970 00:00:00 UTC). There is no practical limit on the date range.
This series of VMs includes the Java 1.02 java.util.date class as well as the Java 1.1 java.util.calendar and related classes for date manipulation and storage.
Two-digit shortcut handling:
These VMs handle the 2-digit year shortcut by applying an 80/20 sliding date window to place the 2-digit year in the expected century. This means 2-digit years are assumed to fall, from the current year, within the range of 20 years forward and 80 years backward.
Example 1: if the year is 1998 and the date 1/6/17 is entered, it would be converted to a 4-digit year as 1/6/2017.
Example 2: if the year is 1998 and the date 2/16/73 is entered, it would be converted to a 4-digit year as 2/3/1973.
Date Handling Issues:
Issue 1: The java.text.SimpleDateFormat parser included in these VMs does not recognize the date 2/29/00. This date will return a java.lang.IllegalArgumentException.
Recommendations:
Upgrade to VM version 3167, available from
For x86 platform: http://www.microsoft.com/msdownload/iebuild/javavmx86/en/javavmx86.htm
For Digital Alpha platform: http://www.microsoft.com/msdownload/iebuild/javavmalpha/en/javavmalpha.htm
Microsoft VM Version: 3165 and later are "Compliant."
Description of how the product handles dates:
With VM version 3165, date values are held internally by the VM as the number of elapsed milliseconds since the "epoch" (January 1, 1970 00:00:00 UTC). There is no practical limit on the date range.
This VM includes the Java 1.02 java.util.date class as well as the Java 1.1 java.util.calendar and related classes for date manipulation and storage.
Two-digit shortcut handling:
This VM handles the 2-digit year shortcut by applying an 80/20 sliding date window to place the 2-digit year in the expected century. This means 2-digit years are assumed to fall, from the current year, within the range of 20 years forward and 80 years backward.
Example 1: if the year is 1998 and the date 1/6/17 is entered, it would be converted to a 4-digit year as 1/6/2017.
Example 2: if the year is 1998 and the date 2/16/73 is entered, it would be converted to a 4-digit year as 2/3/1973.
Issues addressed by 3165:
This VM has resolved the 2/29/00 parser issue.