架构师动态
[最新]Java 21中的功能弃用:Windows 32 位 x86 端口&动态加载代理
本 文 目 录
一、引言
随着技术的不断进步和用户需求的变化,每个软件版本都会带来一些新的功能和改进。然而,有时候也需要弃用一些旧的功能,以适应未来的发展。Java 21就是这样一个版本,它在为开发者带来诸多新特性的同时,也宣布了一些功能的弃用。本文将详细介绍Java 21中弃用的功能,并探讨这些弃用对开发者和应用程序的影响。
二、Windows 32位x86支持弃用
在Java 21中,一个重要的变更是弃用了对Windows 32位x86的支持
。这一决策背后主要原因是技术的进步和官方的支持策略变化。随着64位系统的普及,32位系统的使用率逐渐下降,而且官方对32位Windows的支持也将在不久的将来结束。因此,Java 21决定在未来的版本中删除对Windows 32位x86的支持
。
该功能只是被弃用,而不是被删除,因此 OpenJDK
团队添加了新的配置选项(如错误所示),--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.
这一弃用决策对未来的影响和旧系统的使用情况是开发者需要重视的。虽然旧系统在升级之前仍然可以使用之前的Java版本,但开发者需要意识到未来版本的变更,并及早做好迁移和兼容性测试工作,以确保应用程序在目标环境中的稳定运行。
三、动态加载代理弃用
除了对Windows 32位x86的支持外,Java 21还弃用了动态加载代理的功能。动态加载代理允许开发者使用Instrumentation API
动态修改已加载的字节码,从而改变应用程序的行为。然而,这种动态性也带来了安全上的风险和稳定性问题。
com.sun.tools.attach.AgentLoadException: Failed to load agent library: \
Dynamic agent loading is not enabled. Use -XX:+EnableDynamicAgentLoading \
to launch target VM.
为了推动更安全、更稳定的开发实践,Java 21决定弃用动态加载代理功能。这一变更将促使开发者采用更可靠的替代方案,并加强对应用程序的安全性和稳定性的关注。对于之前依赖动态加载代理功能的开发者来说,他们需要尽快评估和调整自己的代码,以适应这一变化,并确保应用程序不受影响。
在 Java 21 中,您仍然可以加载动态代理,但 JVM 会生成多个警告,通知您潜在的问题以及如何隐藏这些警告:
WARNING: A {Java,JVM TI} agent has been loaded dynamically (file:/path/to/agent.jar)
WARNING: If a serviceability tool is in use, please run with -XX:+EnableDynamicAgentLoading to hide this warning
WARNING: If a serviceability tool is not in use, please run with -Djdk.instrument.traceUsage for more information
WARNING: Dynamic loading of agents will be disallowed by default in a future release
总结 Java 21中的功能弃用是为了适应技术进步和安全稳定性的需求。开发者需要认真对待这些变更,并及时调整自己的应用程序和开发实践,以确保在Java 21及未来版本中的顺利运行。同时,我们也鼓励开发者持续关注Java的后续版本和发展动态,保持对新技术和新特性的敏感度和探索精神,以更好地应对不断变化的软件开发环境。
- 上一篇
Kotlin逆袭Java,能否撼动地位?
2023年9月的TIOBE编程语言排行榜已公布,Python再次位居榜首,占比14.16%,其次是C语言,占比11.27%,C++排名第三,占比10.65%。然而,令人意外的是,Kotlin这种相对较新的编程语言也挤进了前20名,占比0.9%。![]("")## Kotlin是一种用于Android应用程序开发的编程语言。虽然Java在Android开发领域一直占据主导地位,但Kotlin的出现正
- 下一篇
在美国,2023年收入最高的 10 种编程语言 Java 排第 10 位
在过去的一年中(从2022年10月1日到2023年10月1日),DevJobsScanner进行了全球范围内超过1,000万份开发工作机会的分析,以深入了解市场动向、最热门的编程语言以及薪酬最高的趋势。值得注意的是,这项研究的焦点仅集中在美国的职位。在总计1,000万个开发工作岗位中,有130万个是有薪酬的。在这130万个薪酬职位中,有23万个属于编程语言相关的职位。在这23万个编程语言职位中,大