Java 18开发者新特性解析
Java的新简单Web服务器
Java 18将在jdk.httpserver
模块中提供一个最小功能的Web服务器。它包含访问API以及位于bin
目录下的二进制文件,方便从命令行启动服务器。
启动Web服务器的命令可简化为:
|
|
注意: 更多命令行选项及jdk.httpserver
模块详情,请参阅JEP 408文档。
该Web服务器不适用于生产环境,仅支持HTTP/1.1协议且不支持PUT请求,因此无法处理动态内容。推荐用于原型设计、测试和调试。以下为带注释的代码示例:
|
|
Java API文档中的代码片段
Java 18之前,开发者主要使用@code
注解在Javadoc注释中插入代码示例。这种方式功能有限且需要变通方案,例如难以验证代码片段内容、实现语法高亮或插入链接和转义字符。
JEP 413提出使用@snippet
标签作为新方案。该标签既可声明内联片段(代码直接包含在标签内),也可声明外部片段(代码从独立源文件读取)。以下为内联片段示例:
|
|
代码位于花括号内,开括号后紧跟@snippet
标签。Javadoc工具现支持指定链接、代码高亮等功能。详见JEP 413。
默认UTF-8字符集
此前版本中,默认字符集在Java运行时启动时确定,取决于用户区域设置和默认编码。例如Windows系统为windows-1252,macOS系统除POSIX C区域外均为UTF-8。Java 18起,所有操作系统均默认使用UTF-8。
可通过设置file.encoding=COMPAT
恢复Java 17的算法,例如运行java -Dfile.encoding=COMPAT
。
准备移除finalize()
Java开发者通常熟悉finalize()
方法。自Java 9起,官方建议使用try-with-resources语句或新的Cleaner API替代该方法。JEP 421帮助开发者为最终移除finalization做准备,可通过–finalization=disabled
选项运行应用,观察无finalize()
方法时的行为。
注意: 最新Inside Java播客讨论了finalization问题及Java 18预期变化。详见JEP 421文档。
Java 18中的预览功能
部分Java 18开发阶段的功能仍处于预览状态,包括:
- Vector API(JEP 417)
- 外部函数与内存API(JEP 419)
- switch模式匹配(JEP 420)
下载Java 18
可通过Eclipse Adoptium下载早期访问版Eclipse Temurin构建版本尝试Java 18。Temurin是Adoptium的OpenJDK发行版名称。
若需对比当前Java版本与Java 18特性,推荐使用Java Almanac,其中包含Java 18所有新特性与变更列表页面。
结语
本文快速浏览了Java 18的部分亮点。请持续关注Red Hat Developer OpenJDK页面获取更多Java 18更新,也可开始使用Red Hat构建的OpenJDK。
← 上一篇博文 | 下一篇博文 →
目录
- Java的新简单Web服务器
- Java API文档中的代码片段
- 默认UTF-8字符集
- 准备移除finalize()
- Java 18中的预览功能
- 下载Java 18
- 结语
特色标签
administrator, ant, automation, build, cache, ci, command, computers, continous, design, design-patterns, docker, engineering, fedora, gof, how-to, howto, ibm, infinispan, integration, jacl, java, jdbc, jdk-21, jython, kubernetes, llm, migration, mq, openjdk, openshift, patterns, programming, quarkus, redhat, release, rhel, scm, scripting, singleton, singleton-pattern, software, software-development, svn, sysadmin, tips, tools, utils, websphere, wsadmin
版权所有 © Shaaf’s blog 2025