如何实现java18的具体操作步骤
chenpack 2025-06-10 12:30 21 浏览 0 评论
甲骨文(Oracle)发布了 Java 编程语言和虚拟机的第 版。该版本的最终特性主要集中在以下 9 个 JEP 上:
- JEP :默认字符集为UTF-8
- JEP :简易Web服务器
- JEP :支持在Java API文档中加入代码片段
- JEP :用方法句柄重新实现核心反射
- JEP :Vector API(第三个孵化阶段)
- JEP :网络地址解析SPI
- JEP :外部函数&内存API(第二个孵化阶段)
- JEP :Switch的模式匹配(第二版预览)
- JEP :弃用Finalization以备后继删除
Java 的特性节奏略低于之前的版本:Java17 中包含 个特性;Java 中包含 个特性;Java 中包含 个特性;Java 中包含 个特性。
这个版本的 JEP 特性为Amber项目、Loom项目和Panama项目提供了持续的贡献,并提供了一些有用的新工具。本文介绍其中的一些新特性。
Panama 项目
JEP 和 JEP 由 Panama 项目赞助,该项目旨在改进和丰富 JVM 与定义良好的“外部”(即非 Java)API 之间的互操作性,这些 API 很可能会包括 C 语言库中常用的接口。
除了性能的改进之外,JEP ,Vector API(第三个孵化阶段)还针对前两个孵化阶段的反馈进行了增强:JEP ,Vector API(第二个孵化阶段)和 JEP ,Vector API(孵化阶段)。JEP 作为孵化阶段模块集成在 JDK 中,JEP 被定义为JDK 的最终 JEP 之一。
JEP ,外部函数和内存API(第二个孵化阶段)根据 Java 社区的反馈(JEP ,外部函数和内存API(孵化阶段),该 JEP 在 JDK 中交付)进行了改进。第二个孵化阶段的变化包括:在内存访问 var 句柄中支持更多载体,如 boolean 和 MemoryAddress 接口;用于 MemoryAddress 和 MemorySegment 接口的更通用的解引用(dereference)API;更方便获取下行调用(downcall)方法句柄的 API,这样就不再需要传递 MemoryType 枚举了;以及新的用于内存段之间复制 Java 数组的 API。
Loom 项目
JEP 由 Loom 项目赞助,该项目旨在探索、孵化并交付 Java 虚拟机(JVM)特性和 API,以支持易于使用、高吞吐量的新型轻量级并发编程模型。这将通过虚拟线程、定界延续(delimited continuations)和尾调用来实现。
JEP ,网络地址解析SPI,为主机名和地址解析定义了一个服务提供者接口,以便 java.net.InetAddress 可以利用默认的内置 OpenJDK 解析器以外的解析器。
Amber 项目
JEP 由 Amber 项目赞助,该项目旨在探索和孵化更小的 Java 语言特性,以提高生产率。
JEP ,Switch的模式匹配(第二版预览),允许针对多个模式测试目标 switch 表达式,每个模式都有一个特定的操作,从而可以简洁而安全地表达复杂的面向数据的查询。这是继在 JDK 中交付的 JEP ,Switch的模式匹配(预览版)之后的第二个预览版本。增强功能包括:对支配性检查(dominance checking)的改进,强制在同一类型的受保护模式之前出现一个常量的 case 标签;与密封的层次结构相比,现在对switch块的检查更加精确了。
Java 工具
JEP ,支持在Java API文档中加入代码片段,为 Oracle 的标准Doclet引入了 @snippet 标记,这是一个众所周知的 Java API 文档实用程序,可生成默认的 HTML 格式的输出。其目的是简化 API 文档中包含的示例源代码。代码片段可以是内联的,也可以是外部的,下面的这两个示例将会说明这一点:
在如下内联的示例中,源代码被添加到@snippet标记前面的注释中,并用大括号括起来了:
/**
* 下面的代码展示了如何使用 {@code Optional.isPresent}:
* {@snippet :
* if (v.isPresent()) {
* System.out.println("v: " + v.get());
* }
* }
*/
复制代码
在如下外部的示例中,现有的源文件 ShowOptional.java 包含了 @start 和 @end 标记。已定义的区域,即 region="example" ,在注释和源文件中被引用:
/**
* 下面的代码展示了如何使用 {@code Optional.isPresent}:
* {@snippet file="ShowOptional.java" region="example"}
*/
public class ShowOptional {
void show(Optional v) {
// @start region="example"
if (v.isPresent()) {
System.out.println("v: " + v.get());
}
// @end
}
}
复制代码
JEP ,简单Web服务器,提供了一个简易的 HTTP 命令行 Web 服务器,它只提供静态文件。 该实用程序旨在用于原型设计、临时编码和测试,特别是在教育场景中。 服务器启动方式如下:
java -m jdk.httpserver [-b bind address] [-p port] [-d directory] [-h to show help message] [-o none|default|verbose]
复制代码
Java
目前,Java 中只有一个 Targeted 或 Integrated 状态的 JEP:
- JEP :Linux/RISC-V移植
Java 的正式发布日期尚未公布,但按照 6 个月的发布周期推算,预计将于 年 9 月中旬发布。开发人员预计会在 年 6 月中旬进行特性冻结。
Java 现在可以从Oracle下载了,其他供应商的二进制文件预计在几天后提供。
原文链接:
https://www.infoq.com/news///java18-released/
相关推荐
- printf使用详解_printfi
-
C语言的调试利器-printf大法,无坚不摧,攻无不破程序输入与输出当我们操作一个linux终端的时候,执行linux命令程序,可以看到命令的输出信息,或者要求输入数据。那么,这些操作就是lin...
- 在java项目中怎么查看maven版本
-
你还不知道java程序maven打包后如何查看jar的编译版本,过来看看有时候我们需要知道一个jar是编译是依赖JAVA哪个版本的需求。如:我们知道该程sjjcb-dev-lyq-example-...
- mysql多行合并成一行_mysql多行拼接
-
多行合并成一行sql函数group_concat和stuff一、MySQL中group_concat函数完整的语法如下:group_concat([DISTINCT]要连接的字段[OrderB...
- pythonfor循环求1!+2!+3!+....+n!的和 python用循环求1到100的和
-
python经典案例:求1到之和问题:求1到之和方法1:利用循环求和#!/usr/bin/python#coding:utf-8#author:菜就多练呀total=0foriinran...
- python批量查询备案号_python 批量查询
-
批量查询ip对应域名、备案信息、百度权重ip2domain-批量查询ip对应域名、备案信息、百度权重本工具二开自https://github.com/sma11new/ip2domain在批量挖S...
- motionbuilder镜像动画 motionbuilder插件
-
如果把《哪吒2》制作全部交给AI《哪吒2》作为现象级动画电影,其成功确实依赖于产业链的高效协作。随着AI技术逐渐渗透动画制作全流程,未来动画产业将呈现"AI全链参与+人类创意主导"的深度融合模式。以下...
- 逻辑运算符、算术运算符、赋值运算符等等归纳
-
运算符(算术、比较、逻辑等)1、算数运算符如:a=,b=+加如:a+b=-减如:a-b=-乘如:a*b=/除如:a/b=%取余如:a/b=**幂x**y返回x的y次方,如...
- 如何生成HTML5页面代码_如何用html5制作一个网页
-
vscode快速生成html代码技巧快速生成Html5骨架在Html文件中输入html:5按下回车键,可快速生成HTML5页面模板:Docu...
- 国家海洋局第二海洋研究所(海洋二所)考研答疑
-
上海海洋大学发布年硕士研究生招生章程,来看详情→近日,上海海洋大学发布年硕士研究生招生章程一起来看看吧!一、学校简介上海海洋大学建校于年,是一所多科性应用研究型大学,是上海市人民政府与国家海洋局、农业...
- vue-awesome-swiper轮播图实现
-
swiper在vue中正确的使用方法swiper是网页中非常强大的一款轮播插件,说是轮播插件都不恰当,因为它能做的事情太多了,swiper在vue下也是能用的,需要依赖专门的vue-swiper插件,...
- yarn下载安装教程_yarn安装axios
-
yarn的安装和使用一、安装在windows下(1)下载node.js,使用npm安装npminstall-gyarn(2)查看版本yarn--versionYarn淘宝源安装&nbs...
- freemodbus 主机源码 freemodbus stm32
-
STM32单片机移植FreeModbus详细过程modbus是一个非常好的串口协议(当然也能用在网口上),它简洁、规范、强大。可以满足大部分的工业、嵌入式需求。这里详细说下如何将freemodbus...
- python if 多条件并列判断_python多个if并列怎么运行
-
pythonif多条件并列判断的三种方法pythonif多条件并列判断的三种方法如果使用python的if进行多个条件表达式的判断呢?下面介绍三种方法:使用and或or来连接多个条件表达式,比如条...
- driver memory和executor memory怎么设置 memory odd ratio怎么设置
-
RocketMQ原理—2.源码设计简单分析一大纲1.NameServer的启动脚本2.NameServer启动时会解析哪些配置3.NameServer如何初始化Netty网络服务器4.NameServ...
- FPGA编程架构_fpga的编程语言是什么
-
深入浅出带你了解FPGA架构数字集成电路有两种类型:ASIC和FPGA(现场可编程门阵列)。专用集成电路(ASIC)有一个预先定义的特定硬件功能,在生产后不能重新编程。但FPGA可以在制造后可无限编程...
你 发表评论:
欢迎- 一周热门
-
-
维基百科Wikipedia镜像网站列表
-
超炫html+css+javascript幻化3D相册 (含背景音乐)程序员表白必备
-
不能读取文件“itunes.library.itl”因为它是由更高级别的itunes所创建的
-
6款图片查看器,丝滑干净无广告!(图片查看器软件)
-
用java编写一个QQ群发信息_用java语言写qq聊天程序
-
StreamReader StringReader 区别 reader和inputstream的区别
-
Windows Server 2003 详细安装与配置
-
作为一名独立开发者,我是如何建立我的科技创业公司的
-
计算机集成制造系统有哪些_计算机集成制造系统有哪些类型
-
虚拟化测评 虚拟化测试方案_虚拟化测试工程师招聘
-
- 最近发表
- 标签列表
-
- int.tryparse (62)
- list转list (108)
- repeat函数 (66)
- git force (69)
- springboot /error (71)
- mysql 更新 (74)
- save as pdf (63)
- lock tables (66)
- 同步 异步 阻塞 非阻塞 (62)
- rsyslog (66)
- querystring (63)
- c++ override (70)
- css 动画库 (61)
- vsphere web client (65)
- int32_t (63)
- c# task.run (68)
- find -size (64)
- golang flag包 (70)
- 二维数组作为参数传入函数 (62)
- sudo su root (60)
- crontab 安装 (61)
- c# 数组转成list (60)
- 下拉按钮 (64)
- 滚动条美化 (61)
- stringutils (61)