Proposed JEP - Deprecate the Windows x86-32 Port
Bruno Borges
Bruno.Borges at microsoft.com
Fri Mar 3 01:01:11 UTC 2023
When we were thinking about this proposal, we certainly considered Windows 32
on Windows 64 (WOW64) use cases. And you are right that Microsoft is far from dropping support
for WOW64 anytime soon (if ever), despite EOL of Windows 32-bit installs moving forward on a
post Windows 10 era (11+).
But if we look closely to those environments running Windows 32 bit, we first must answer:
- are they running Java at all?
- are they running Java 17 already?
- are they expecting to move to any version of Java greater than 17?
And what we realized was that:
- yes, there is plenty of Java on Windows 32 bit.
- no, they are on old versions, mostly 8 and older.
- no, they are not, broadly speaking, considering any sort of major JDK upgrade any time soon, because "it just works."
So, without clear signal that users running 32-bit JVM on Windows 32-bit have the intent
to move to newer JDKs post JDK 17, there is little reason to support the need for 32-bit JVM on
Windows.
One edge case we did notice is Java applications that integrate with 32-bit DLLs. Our thinking here
is that if someone can't or won't recompile a 32-bit DLL to 64-bit, it is very unlikely that they would
have the incentive to move to a newer major version of JDK as well. But alternatively, users can
have two JVMs running on a system, where the 32-bit JVM just acts as a bridge to the DLLs, while
the 64-bit JVM is the modern application, communicating with those DLLs over some sort of
Remote API. Both JVMs on the same Windows environment.
It is important to speak about WOW64: it is an emulation of 32-bit and therefore, it only
serves the purpose of supporting legacy 32-bit applications. Performance is not a goal for
WOW64, and in fact performance limitations are well documented [1].
[1] https://learn.microsoft.com/en-us/troubleshoot/windows-server/performance/compatibility-limitations-32-bit-programs-64-bit-system#program-performance-considerations
This is to say that if a hardware is capable of running Windows 64 bit and an application does not
rely on 32-bit DLLs, it is easier and probably better to move to a 64 bit JVM than to run a 32-bit
JVM on a Windows 64-bit, for a variety of reasons, including performance (other than memory
footprint).
WOW64 is also limited about drivers: it does not load 32-bit drivers (like for peripherals). And
given Windows 32-bit installation is reaching EOL, we doubt there will be users in need for a
modern 32-bit JVM to run on an unsupported Windows machine.
> For a considerable number of client applications, upgrading to 64-bit has
> only negative benefits.
And that is OK. So much that it is also unlikely that these Java applications will ever be upgrade to a newer JDK (post 17).
> I know that maintaining a port requires a lot of manpower, so I can't ask
> you to do anything. But I really hope it will continue to be maintained.
Having the peoplepower is a secondary challenge. The primary challenge is to ensure that there is a future for 32-bit JVMs on Windows, on a post Java 17 world and on a Windows 64-bit only world (again, WOW64 is a feature to support legacy apps. Not to be targeted as a destination for modern or new applications).
To conclude, we don't believe there is enough reason to justify giving continuity to 32-bit JVM on
Windows on a post JDK 17 era, and instead we would rather prefer to see contributors in the
OpenJDK community to accelerate the development of new features and enhancements that will
move the platform forward.
Best,
Bruno Borges
PM, Java at Microsoft
On Wed Mar 1 12:08:12 UTC 2023 Glavo <zjx001202 at gmail.com>
wrote:
> I have seen many Intel Celeron N/J machines with memory <4GiB. Although
> x86-32 is old, its non-heap memory footprint is lower, so it works better
> under resource constraints.
>
> And although Windows 11 does not provide 32-bit images, as far as I know,
> Microsoft does not plan to give up support for running 32-bit programs on
> 64-bit systems.
> 32-bit programs are still an important part of Windows, a large number of
> programs are still 32-bit.
> For a considerable number of client applications, upgrading to 64-bit has
> only negative benefits.
> They only need a little memory and are not sensitive to performance.
> What will 64-bit bring to them? Higher resource consumption and poor
> compatibility (cannot run on x86-32 or Windows 10 on Arm systems)
>
> I know that maintaining a port requires a lot of manpower, so I can't ask
> you to do anything. But I really hope it will continue to be maintained.
More information about the jdk-dev
mailing list