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.