2

JEP 449: Deprecate the Windows 32-bit x86 Port for Removal

 1 year ago
source link: https://openjdk.org/jeps/449
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

Deprecate the Windows 32-bit x86 Port for Removal

JEP 449: Deprecate the Windows 32-bit x86 Port for Removal

AuthorGeorge Adams & Bruno Borges
OwnerGeorge Adams
TypeFeature
ScopeImplementation
StatusProposed to Target
Release21
Componenthotspot / other
Discussionjdk dash dev at openjdk dot org
EffortS
DurationS
Reviewed byJesper Wilhelmsson
Endorsed byDalibor Topic, Vladimir Kozlov
Created2023/02/24 15:30
Updated2023/05/11 11:56
Issue8303167

Summary

Deprecate the Windows 32-bit x86 port, with the intent to remove it in a future release.

Goals

  • Update the build system to issue an error message when an attempt is made to configure a build for Windows 32-bit x86 (x86-32). The error message will be suppressible via a new configuration option.

  • Mark the port, and related port-specific features, as deprecated for removal in the relevant documentation.

Non-Goals

  • It is not a goal to change the status of the affected port in any prior release. The earliest release to which this JEP could be targeted is JDK 21.

  • It is not a goal to deprecate any other 32-bit port.

Motivation

  • Allow contributors in the OpenJDK Community to accelerate the development of new features and enhancements that will move the platform forward.

  • The implementation of JEP 436 (Virtual Threads) for Windows x86-32 falls back to the use of kernel threads and therefore does not bring the expected benefits of Project Loom.

  • Windows 10, the last Windows operating system to support 32-bit operation, will reach End of Life in October 2025.

Description

An attempt to configure a Windows x86-32 build will produce the following output:

$ bash ./configure
...
checking compilation type... native
configure: error: The Windows 32-bit x86 port is deprecated and may be removed in a future release. \
Use --enable-deprecated-ports=yes to suppress this error.
configure exiting with result code 1
$

The new build configuration option --enable-deprecated-ports=yes will suppress the error and continue:

$ bash ./configure --enable-deprecated-ports=yes
...
checking compilation type... native
configure: WARNING: The Windows 32-bit x86 port is deprecated and may be removed in a future release.
...
Build performance summary:
* Cores to use:   32
* Memory limit:   96601 MB

The following warnings were produced. Repeated here for convenience:
WARNING: The Windows 32-bit x86 port is deprecated and may be removed in a future release.
$

Alternatives

The alternative would be to continue to support Windows x86-32. This would require active maintainers who can provide a sustainable and performant implementation of Virtual Threads, as well as future JEPs, to ensure that the JDK on Windows x86-32 continues to meet the expectations of Java developers.

Risks and Assumptions

32-bit JVMs are still used on Windows due to integration with 32-bit native libraries (DLLs). Their users cannot migrate directly to 64-bit JVMs because a 64-bit process on Windows cannot load 32-bit DLLs. While Windows x64 is capable of running 32-bit applications by emulating an 32-bit environment through WOW64, applications will suffer dramatic performance degradation despite the assumed memory footprint benefits.

We therefore assume that

  • Users can continue to run existing builds of the Windows 32-bit JVM to integrate with native 32-bit libraries and, if necessary, expose 32-bit functionality via remote APIs to be consumed by applications running on a 64-bit JVM within the same environment; and

  • Legacy systems are unlikely to migrate to versions of the JDK following the release of Java 21.


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK