Данный релиз соответствует OpenJDK 20.0.2+10, номер версии Axiom JDK - 20
Axiom является сертифицированным Java SE 20-совместимым дистрибутивом OpenJDK 20, который работает на серверах (Linux x86_64, Linux ARM64, Windows 64), настольных компьютерах (Windows 64, Windows 32, Mac, Linux x86_64) и встроенных устройствах (Linux ARM64, Linux ARMv7, включая Raspberry Pi 2 & 3 (ARMv6 hardfloat). Axiom JDK имеет следующие дополнения:
Пожалуйста, прочитайте примечания к релизу Oracle JDK 20.0.2 для получения дополнительной информации о функционале JDK 20. В этом документе описываются особенности дистрибутива Axiom по сравнению с дистрибутивом Oracle JDK 20.
Axiom поддерживается в следующих ОС:
Также известно, Axiom JDK работает с некоторыми другими дистрибутивами Linux и версиями Windows.
Примечание: Минимальная поддерживаемая версия ядра Linux - 2.6.18, версия GLIBC - 2.6. AxiomFX работает на всех поддерживаемых версиях Ubuntu, семействе Red Hat Linux начиная с версии 7.x и SUSE с бэкэндом GTK2.
Axiom протестирован и сертифицирован на Raspberry Pi 2, 3 и 4 под управлением следующих ОС:
Также есть успешный опыт запуска и работы на Debian (armhf) и Ubuntu (armhf).
Axiom JDK 20 распространяется в виде .msi, .dmg, .deb, .rpm, .zip и .tar.gz. Пожалуйста, выберите формат, который наиболее подходит для ваших целей.
Axiom JDK 20 содержит весь функционал, поддерживаемый OpenJDK 20.
С появлением Jigsaw в JDK 9 и минимальной виртуальной машины (Minimal VM) теперь можно создать среду исполнения, достаточную для запуска приложения и в то же время оптимизированную по размеру. Чтобы создать среду выполнения только с минимальной виртуальной машиной, добавьте опцию - vm=minimal jlink.
Axiom JDK продолжает поддерживать AOT и Graal JIT. Поскольку в сборках OpenJDK 20 эти экспериментальные функции признаны устаревшими, для безошибочной компиляции нативных образов рекомендуется использовать Axiom Native Image Kit.
По умолчанию Axiom использует серверную виртуальную машину (Server VM). Серверная виртуальная машина и клиентская виртуальная машина могут быть включены с помощью параметров командной строки -server и -client соответственно. В случае, если требуется минимальный размер среды исполенения, можно использовать Minimal VM, которая оптимизирована по размеру. Minimal VM имеет только компилятор C1 JIT, Serial GC и не имеет функционала Serviceability. Minimal VM можно включить параметром командной строки -minimal.
Axiom JDK 20 поставляется в комплекте со сборкой платформы AxiomFX, основанной на OpenJFX. В следующих таблицах перечислены состояния модулей Java FX дистрибутива Axiom.
Для armhf работают следующие графические конвейеры: EGL, SW (direct framebuffer) и GTK. По умолчанию Axiom пытается использовать конвейер EGL, который требует наличия библиотек EGL. Если они не найдены, реализация возвращается к программному обеспечению.
Используйте следующие параметры командной строки, чтобы указать конвейер рендеринга:
* Не поддерживается на Raspberry Pi 4.
Дополнительная информация доступна на следующей wiki странице.
Axiom JDK 20 для armhf поставляется со встроенным модулем реализации API ввода-вывода (DIO) устройства OpenJDK. DIO предоставляет Java API для доступа к выводам Raspberry PI GPIO и для связи с периферийными устройствами:
Дополнительная информация доступна на следующей wiki странице.
С 2017 года в Raspbian OS изменилось расположение бибилитек libEGL.so и libGLESv2.so для чипа Broadcom. Если вы хотите использовать аппаратное ускорение EGL, доступное в видеодрайверах Broadcom в AxiomFX, при работе в Raspbian OS, выполните следующую команду:
cd /opt/vc/lib
sudo ln -s libbrcmEGL.so libEGL.so
sudo ln -s libbrcmGLESv2.so libGLESv2.so
Axiom JDK содержит исправления уязвимостей Oracle Java SE. Пожалуйста, обратитесь к документации Oracle для получения деталей о проблемах, исправленных в данной версии.
Issue | Description |
---|---|
8282359 | Intermittent WebKit build failure on Windows: C1090: PDB API call failed, error code 23 |
8286089 | Intermittent WebKit build failure on macOS in JavaScriptCore |
8301009 | Update libxml2 to 2.10.3 |
8304751 | Improve pipeline layout |
8305108 | Change JavaFX release version to 20.0.2 in jfx20u |
8306115 | Update libxml2 to 2.10.4 |
8306450 | Create release notes for JavaFX 20.0.1 |
8308682 | Enhance AES performance |
8305312 | Enhanced path handling |
8304468 | Better array usages |
8304460 | Improve array usages |
8303376 | Better launching of JDI |
8302483 | Enhance ZIP performance |
8302475 | Enhance HTTP client file downloading |
8300596 | Enhance Jar Signature validation |
8300285 | Enhance TLS data handling |
8298676 | Enhanced Look and Feel |
8296565 | Enhanced archival support |
8294323 | Improve Shared Class Data |
8304878 | ConcurrentModificationException in javadoc tool |
8305668 | PPC: Non-Top Interpreted frames should be independent of ABI_ELFv2 |
8307346 | Add missing gc+phases logging for ObjectCount(AfterGC) JFR event collection code |
8307104 | [AIX] VM crashes with UseRTMLocking on Power10 |
8307425 | Socket input stream read burns CPU cycles with back-to-back poll(0) calls |
8304350 | Font.getStringBounds calculates wrong width for TextAttribute.TRACKING other than 0.0 |
8307378 | Allow collectors to provide specific values for GC notifications’ actions |
8307466 | java.time.Instant calculation bug in until and between methods |
8307134 | Add GTS root CAs |
8289735 | UTIL_LOOKUP_PROGS fails on pathes with space |
8306976 | UTIL_REQUIRE_SPECIAL warning on grep |
8306825 | Monitor deflation might be accidentally disabled by zero intervals |
8304295 | harfbuzz build fails with GCC 7 after JDK-8301998 |
8304760 | Add 2 Microsoft TLS roots |
8305975 | Add TWCA Global Root CA |
8306774 | Make runtime/Monitor/GuaranteedAsyncDeflationIntervalTest.java more reliable |
8305994 | Guarantee eventual async monitor deflation |
8301190 | [vectorapi] The typeChar of LaneType is incorrect when default locale is tr |
8306883 | Thread stacksize is reported with wrong units in os::create_thread logging |
8306734 | Shenandoah: Missing barriers on deoptimization path |
8306658 | GHA: MSVC installation could be optional since it might already be pre-installed |
8305403 | Shenandoah evacuation workers may deadlock |
8305352 | updateIconImages may lead to deadlock after JDK-8276849 |
8304291 | [AIX] Broken build after JDK-8301998 |
8306543 | GHA: MSVC installation is failing |
8297587 | Upgrade JLine to 3.22.0 |
8304498 | JShell does not switch to raw mode when there is no /bin/test |
8298887 | On the latest macOS+XCode the Robot API may report wrong colors |
8302491 | NoClassDefFoundError omits the original cause of an error |
8302191 | Performance degradation for float/double modulo on Linux |
8296412 | Special case infinite loops with unmerged backedges in IdealLoopTree::check_safepts |
8305113 | (tz) Update Timezone Data to 2023c |
8305766 | ProblemList runtime/CompressedOops/CompressedClassPointers.java |
8296318 | use-def assert: special case undetected loops nested in infinite loops |
8298568 | Fastdebug build fails after JDK-8296389 |
8303069 | Memory leak in CompilerOracle::parse_from_line |
8201516 | DebugNonSafepoints generates incorrect information |
8303564 | C2: “Bad graph detected in build_loop_late” after a CMove is wrongly split thru phi |
8301338 | Identical branch conditions in CompileBroker::print_heapinfo |
8299570 | [JVMCI] Insufficient error handling when CodeBuffer is exhausted |
8303508 | Vector.lane() gets wrong value on x86 |
8304683 | Memory leak in WB_IsMethodCompatible |
8303511 | C2: assert(get_ctrl(n) == cle_out) during unrolling |
8301491 | C2: java.lang.StringUTF16::indexOfChar intrinsic called with negative character argument |
8290822 | C2: assert in PhaseIdealLoop::do_unroll() is subject to undefined behavior |
8300590 | [JVMCI] BytecodeFrame.equals is broken |
8289748 | C2 compiled code crashes with SIGFPE with -XX:+StressLCM and -XX:+StressGCM |
8299959 | C2: CmpU::Value must filter overflow computation against local sub computation |
8300079 | SIGSEGV in LibraryCallKit::inline_string_copy due to constant NULL src argument |
8302595 | use-after-free related to GraphKit::clone_map |
8302594 | use-after-free in Node::destruct |
8297730 | C2: Arraycopy intrinsic throws incorrect exception |
8302172 | [JVMCI] HotSpotResolvedJavaMethodImpl.canBeInlined must respect ForceInline |
8300823 | UB: Compile::_phase_optimize_finished is initialized too late |
8296389 | C2: PhaseCFG::convert_NeverBranch_to_Goto must handle both orders of successors |
8299259 | C2: Div/Mod nodes without zero check could be split through iv phi of loop resulting in SIGFPE |
8299179 | ArrayFill with store on backedge needs to reduce length by 1 |
8304871 | Use default visibility for static library builds |
8304671 | javac regression: Compilation with –release 8 fails on underscore in enum identifiers |
8303102 | jcmd: ManagementAgent.status truncates the text longer than O_BUFLEN |
8227257 | javax/swing/JFileChooser/4847375/bug4847375.java fails with AssertionError |
8302976 | C2 intrinsification of Float.floatToFloat16 and Float.float16ToFloat yields different result than the interpreter |
8301998 | Update HarfBuzz to 7.0.1 |
8300692 | GCC 12 reports some compiler warnings in bundled freetype |
8303937 | Corrupted heap dumps due to missing retries for os::write() |
8303440 | The “ZonedDateTime.parse” may not accept the “UTC+XX” zone id |
8282201 | Consider removal of expiry check in VerifyCACerts.java test |
8303186 | Missing Classpath exception from Continuation.c |
8303906 | Update jdk20u fix version to 20.0.2 |