openjdk.ruOpenJDK на русском

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

Пометка порта Windows 32-bit x86 как Deprecated for Removal (устаревший, будет удалён)

АвторGeorge Adams & Bruno Borges
ОтветственныйGeorge Adams
ТипFeature
ОбластьImplementation
СтатусClosed / Delivered
Выпуск21
Компонентhotspot / other
Обсуждениеjdk dash dev at openjdk dot org
ТрудоёмкостьS
ДлительностьS
Связан сJEP 479: Remove the Windows 32-bit x86 Port
JEP 501: Deprecate the 32-bit x86 Port for Removal
РецензентыJesper Wilhelmsson
ОдобренDalibor Topic, Vladimir Kozlov
Создан2023/02/24 15:30
Обновлён2024/10/24 11:25
Задача8303167

Аннотация

Объявить порт Windows 32-bit x86 устаревшим с намерением удалить его в одном из будущих выпусков.

Цели

  • Изменить систему сборки так, чтобы при попытке сконфигурировать сборку для Windows 32-bit x86 (x86-32) выдавалось сообщение об ошибке. Это сообщение можно будет подавить с помощью нового параметра конфигурации.

  • Отметить в соответствующей документации порт и связанные с ним возможности, специфичные для этого порта, как Deprecated for Removal.

Что не является целью

  • Изменять статус затронутого порта в каких-либо предыдущих выпусках не планируется. Самый ранний выпуск, в который может быть включён этот JEP, — JDK 21.

  • Объявлять устаревшими другие 32-битные порты не планируется.

Мотивация

  • Дать участникам сообщества OpenJDK возможность быстрее разрабатывать новые возможности и улучшения, которые будут развивать платформу.

  • Реализация JEP 436 (Virtual Threads (виртуальные потоки)) для Windows x86-32 переходит на использование потоков ядра и поэтому не даёт ожидаемых преимуществ проекта Loom.

  • Поддержка Windows 10, последней операционной системы Windows с поддержкой 32-битного режима работы, прекратится (End of Life) в октябре 2025 года.

Описание

Попытка сконфигурировать сборку для Windows x86-32 выведет следующее:

$ 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
$

Новый параметр конфигурации сборки --enable-deprecated-ports=yes подавит ошибку, и конфигурирование продолжится:

$ 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.
$

Альтернативы

Альтернативой было бы продолжить поддержку Windows x86-32. Для этого нужны активные сопровождающие, способные обеспечить устойчивую и производительную реализацию Virtual Threads, а также будущих JEP, чтобы JDK на Windows x86-32 и дальше отвечал ожиданиям Java-разработчиков.

Риски и допущения

32-битные JVM всё ещё используются в Windows из-за интеграции с 32-битными нативными библиотеками (DLL). Их пользователи не могут напрямую перейти на 64-битные JVM, потому что 64-битный процесс в Windows не может загружать 32-битные DLL. Хотя Windows x64 может запускать 32-битные приложения, эмулируя 32-битное окружение с помощью WOW64, производительность приложений будет резко снижаться, несмотря на предполагаемый выигрыш в потреблении памяти.

Поэтому мы предполагаем, что

  • пользователи могут и дальше запускать существующие сборки 32-битной JVM для Windows для интеграции с нативными 32-битными библиотеками и при необходимости предоставлять 32-битную функциональность через удалённые API, которыми будут пользоваться приложения, работающие на 64-битной JVM в том же окружении; и

  • устаревшие системы вряд ли будут переходить на версии JDK, вышедшие после выпуска Java 21.