当前位置: 首页 > news >正文

java 语法类新特性总结

1. jdk 的泛型擦除时机,jdk17的新特性,interface 的默认修饰符?

编译期处理:Java泛型主要在编译阶段进行处理。编译器会检查类型安全,并插入必要的类型转换代码。但是,在生成的字节码中,所有的泛型类型信息都会被移除或替换为其上限类型

2.interface 的默认修饰符为protected

3. jdk 的新特性

JDK 10 (2018年3月)

  • 局部变量类型推断:使用var关键字进行局部变量类型的自动推断。
  • 改进的垃圾回收器:包括G1垃圾回收器的改进以及实验性的ZGC。

JDK 11 (2018年9月, LTS)

  • 长期支持(LTS):作为自JDK 8以来的又一个长期支持版本。
  • 移除Nashorn引擎和CORBA模块:为了减少JDK的体积和复杂性。
  • Epsilon垃圾回收器:一种无操作(NoOp)的垃圾回收器。

JDK 12 (2019年3月)

  • Switch表达式:作为一个预览特性被引入。
  • Shenandoah GC:低暂停时间的垃圾收集器。
  • JVM常量API:提供了一个新的API来读取和操作JVM常量池中的常量。

JDK 13 (2019年9月)

  • 文本块(Text Blocks):多行字符串字面量的支持,作为预览特性首次亮相。

JDK 14 (2020年3月)

  • 记录(Records):作为预览特性被引入,简化了数据载体类的定义。
  • 模式匹配(Pattern Matching):对于instanceof进行了增强,作为预览特性。

JDK 15 (2020年9月)

  • 密封类(Sealed Classes):成为预览特性的一部分,限制了哪些类可以扩展或实现它们。

JDK 16 (2021年3月)

  • Pattern Matching for instanceof:成为了标准特性而非预览状态。
  • 其他语言和库的增强:如对Vector API的迭代发展等

JDK 17 (2021年9月, LTS)

一、语言特性增强

  1. 密封类(Sealed Classes)

    • 通过 sealed 和 permits 关键字限制类的继承层级,增强类型安全性和代码可维护性。
    • 示例:
      public sealed class Shape permits Circle, Rectangle {}  
      final class Circle extends Shape {}  
  2. 文本块(Text Blocks)

    • 支持多行字符串,使用三重引号(""")包裹,简化 HTML、SQL 等代码编写,减少转义字符。
    • 示例:
      String html = """<html><body>Hello, World!</body></html>""";
  3. Switch 表达式增强

    • 支持模式匹配和 yield 返回值,简化复杂条件判断。
    • 示例:
      int result = switch (obj) {  case String s -> s.length();  case Integer i -> i * 2;  default -> 0;  
      };
  4. 模式匹配的 instanceof

    • 类型检查与赋值合并,减少冗余代码。
    • 示例:
      if (obj instanceof String s) {  System.out.println(s.toUpperCase());  
      }
  5. 记录类(Records)

    • 声明不可变数据载体类,自动实现构造器、toString()equals() 和 hashCode()
    • public record Point(int x, int y) {}  
      var p = new Point(1, 2);  

二、性能与 GC 优化

  1. ZGC 改进

    • 低延迟垃圾回收器,停顿时间不超过 10ms,支持动态堆内存扩展(-XX:+ZDynamicMemory),适用大规模应用。
    • 在 Linux/x64 平台成为默认 GC(替代 G1)。
  2. JIT 编译器优化

    • 提升热点代码编译效率,降低运行时开销。
  3. 内存管理增强

    • 引入外部函数和内存 API(孵化),安全高效调用本地代码。

三、安全与工具改进

  1. 强封装内部 API

    • 默认禁止反射访问 sun.* 等非公开类,需通过 --add-opens 显式授权,增强安全性。
  2. TLS 1.3 支持

    • 加密协议升级,提供更安全的网络通信。
  3. 弃用 RMI 激活机制

    • 移除过时功能,简化平台维护。

JDK 18 (2022年3月)

  • Vector API:进入早期访问阶段。
  • UTF-8 by Default:默认字符集改为UTF-8。

JDK 19 (2022年9月)

  • Virtual Threads:轻量级线程,作为预览特性。
  • Foreign Function & Memory API:允许Java程序调用外部函数并安全地访问外部内存。

JDK 20 (2023年3月)

  • Foreign Function & Memory API:继续走向成熟。
  • Virtual Threads:第二预览版。

JDK 21 (2023年9月, LTS)

  • 更多关于泛型和模式匹配方面的探索
  • Foreign Function & Memory API:可能成为正式特性

JDK 22 (2024年3月发布)

  • G1垃圾收集器的区域固定(Region Pinning):减少垃圾回收过程中的停顿时间,提高系统性能。
  • 构造函数中super()之前的语句(预览版):允许在调用父类构造函数之前执行不引用当前实例的语句。
  • 外来函数与内存API(Foreign Function & Memory API, FFM API):简化了Java与本地代码的互操作性,并提升了性能和安全性。
  • 未命名变量与模式:允许开发者在不需要显式引用变量的情况下进行模式匹配。

JDK 23 (未详细提及具体的新特性,但可以推测有持续的改进和一些预览特性的更新)

JDK 24 (2025年3月发布)

  • 提升启动性能:JEP 483提前加载和链接类:缩短Java应用程序的启动时间,通过让类在JVM启动时立即处于加载和链接状态。
  • 流API的增强:JEP 485流收集器:扩展了流API的功能,提供更多的灵活性和效率。
  • 作用域值(第四次预览):支持在线程内部和线程之间共享不可变数据,优于线程局部变量。
  • 向量API(第九次孵化):继续优化高性能计算能力。
  • 分代Shenandoah(实验性):提供了一种新的实验性分代模式,不影响非分代的Shenandoah垃圾回收器。
  • 紧凑对象头(实验性):提议减少64位架构下HotSpot JVM中对象头的大小。
  • 密钥派生函数API(预览):用于从初始密钥和其他数据派生额外密钥的加密算法。
  • 永久禁用安全管理器:逐步移除安全管理器功能。
  • 简单源文件和实例主方法(第四次预览):旨在帮助初学者更容易编写第一个程序。
  • 结构化并发(第四次预览):将不同线程中运行的相关任务组视为单个工作单元,简化错误处理和取消操作

2. Java stream 的并发线程 的paralism?

java -Djava.util.concurrent.ForkJoinPool.common.parallelism=8 YourMainClass
ForkJoinPool forkJoinPool =  new ForkJoinPool();
List<Integer> result = forkJoinPool.submit(()->IntStream.range(0, 100).parallel().map(i -> i * 2).boxed().collect(Collectors.toList())
).join();

http://www.dtcms.com/a/271473.html

相关文章:

  • 【王树森推荐系统】排序05:排序模型的特征
  • 计蒜客T3473丑数、Leetcode2401最长优雅子数组、Leetcode167两数之和、Leetcode581最短无序连续子数组
  • 深度帖:浏览器的事件循环与JS异步
  • 【教程】基于GNN的药物相互作用网络中的链接预测
  • 数据一致性解决方案总结
  • Linux驱动04 --- 网络编程TCP客户端
  • 暑假读书笔记第五天
  • 深入剖析Elasticsearch倒排索引,Query DSL查询使用场景分析
  • lwip+8720+裸机+先上电在插网线 ping不同
  • HashMap的get、put流程源码分析
  • jenkins+固定agent节点+maven+sonarqube+docker
  • uniapp小程序无感刷新token
  • 数据结构之位图和布隆过滤器
  • ReactNative【实战系列教程】我的小红书 5 -- 文章详情(含轮播图 ImageSlider,点亮红心动画 Heart,嵌套评论等)
  • 【三维重建】一、设备分类
  • 优化 ECharts 多条折线:折线数据不完整导致的X轴日期错乱问题
  • 【面试精讲】I2C 子系统核心结构与常见问题深度解析
  • 【PTA数据结构 | C语言版】一元多项式求导
  • Redis-哨兵选取主节点流程
  • 操作系统核心技术剖析:从Android驱动模型到鸿蒙微内核的国产化实践
  • HashMap的Get(),Put()源码解析
  • CTFHub————Web{信息泄露[备份文件下载(网站源码、bak文件)]}
  • 微服务架构中数据一致性保证机制深度解析
  • [Backlog] 核心协调器 | 终端用户界面(TUI)实现 | 多分支任务冲突解决 | 测试验证体系
  • vue2中使用xgplayer播放流视频
  • 方差、协方差和协方差矩阵
  • 软件编码规范、运行时错误、安全漏洞与缺陷:解析及库博的检测能力
  • Dify 文本语意识别与自动补全工作流
  • VD6052系列 30V 200mA的低功耗稳压器芯片 适用12V/24V供电MCU
  • 腾讯0708面试手撕题:严格递增数字分割