摘要 本文深入探讨JDK 11新特性,涵盖了ZGC性能优化、新的HTTP客户端、Lambda表达式改进等多项更新。适合程序员,Java开发者,软件工程师,以及对Java新版本更新感兴趣的技术爱好者。 正文 一、JDK 11概览 JDK 11,作为Java长期支持的版本之一,带来了许多激动人心的改进和新特性。从增强的安全性能到新的APIs,JDK 11的升级,无疑是Java发展史上的一大步。 二、主要新特性解析 1. ZGC: 高性能垃圾回收器 ZGC(Z Garbage Collector)是JDK 11中最闪耀的星。它是一款可伸缩的低延迟垃圾回收器,旨在减少应用程序的停顿时间。 11不仅带来了诸多新特性,而且还提升了Java平台的性能和稳定性。 它不仅优化了现有特性,还引入了新的概念和工具,为Java开发者打开了新的可能性。随着Java社区的不断发展,我们期待JDK的未来版本能带来更多激动人心的新特性和改进。
JDK14之前的写法: // 1。 新特性: // 1.判断 if(obj instanceof String str){ //不再需要强转操作 // 2.如果类型匹配,直接使用 .. str.contains(..).. } 新特性: public class SwitchTest1 { public static void main(String[] args) { Fruit fruit = Fruit.GRAPE instanceof String s) { formatted = String.format("String %s", s); } return formatted; } 新特性 "Still remains\n" + "Within the sound of silence"; System.out.println(text1); 新特性
在这篇文章中,我们将重点探讨JDK11相较于JDK 8所引入的一些新特性和改进,以便您能够更好地了解Java的最新发展。 1. 此外,JDK 11还引入了Epsilon和ZGC等新的垃圾回收器,分别用于性能测试和满足大型堆内存及低延迟要求的场景。 2. 局部变量类型推断与简化的代码书写 为了简化代码书写,JDK 11引入了局部变量类型推断的特性。 请注意,JDK 11 的某些新特性和改进可能需要特定的配置或启用选项才能使用。此外,随着 Java 平台的不断发展,一些特性可能会在未来的JDK 版本中得到进一步的增强或调整。 为了获取最准确的信息,建议查阅 JDK 11 的官方文档和发布说明。 总结来说,JDK 11相较于JDK 8在性能、语言特性、库支持、安全性和模块化等方面都取得了显著的进步。
简介 在JDK11的新特性:新的HTTP API中,我们介绍了通过新的HTTP API,我们可以发送同步或者异步的请求,并获得的返回的结果。 POST请求的例子 还记得上篇文章我们讲HTTP API新特性的时候,我们使用的例子吗? contentLength:14[HttpClient-1-Worker-0] INFO com.flydean.CustBodyPublisher - CustBodyPublisher subscribe jdk.internal.net.http.Http1Request 总结 本文讲解了新的HTTP API中reactive Streams的使用。 https://github.com/ddean2009/ learn-java-base-9-to-20 本文作者:flydean程序那些事 本文链接:http://www.flydean.com/jdk11
jdk1.7新特性 1 对集合类的语言支持; 2 自动资源管理; 3 改进的通用实例创建类型推断; 4 数字字面量下划线支持; 5 switch中使用string; 6 二进制字面量; 7 这个新的语言特性允许try语句本身申请更多的资源, 这些资源作用于try代码块,并自动关闭。 JDK 7将警告从call转移到了方法声明(methord declaration)的过程中。这样API设计者就可以使用vararg,因为警告的数量大大减少了。
1、switch优化更新 JDK11以及之前的版本: switch (day) { case MONDAY: case FRIDAY: case SUNDAY: JDK13及更高版本将有一个新的公共领域来代表这个时代。 NewEra从2019年5月1日开始的日本时代的占位符名称“ ”已被新的官方名称取代。 这些新增内容包括4个新脚本,总共150个脚本,以及61个新的表情符号字符。U+32FF SQUARE ERA NAME REIWA从 12.0开始,12.1只添加一个字符。 GC 10.1 JEP 351 ZGC取消提交未使用的存储器 10.2 添加了-XXSoftMaxHeapSize标志 10.3 ZGC支持的最大堆大小从4TB增加到16TB 11 11.2 新的keytool -showinfo -tls用于显示TLS配置信息的命令keytool -showinfo -tls添加了一个显示TLS配置信 息的新命令。
接口的方法增强 2.1、概述 JDK1.8之前,接口中允许出现的成员有静态常量、抽象方法 //JDK1.8以前 public interface InterA { //静态常量 //抽象方法 例如:当往一个接口中添加新的抽象方法时,原来实现该接口的类都会报错!这样就显得“牵一发而动全身”! 为了解决这一弊端,JDK在1.8版本中,对接口的功能进行了扩展! Stream类的静态of()方法 直接传入多个字符串 传入一个字符串数组 传入一个整数数组 5.5、Stream的注意事项 1、Stream只能操作一次 2、Stream方法返回的是新的流 7.2、Fork/Join原理-工作窃取法 当执行新的任务时Fork/Join框架会将任务拆分分成更小的任务执行,并将小任务加到线程队列中,当多个线程同时执行时,就总会有线程先执行完毕,有线程后执行完毕 新的日期及时间API位于java.time包中,下面是一些关键类。
1、switch优化更新 JDK11以及之前的版本: switch (day) { case MONDAY: case FRIDAY: case SUNDAY: JDK13及更高版本将有一个新的公共领域来代表这个时代。 NewEra从2019年5月1日开始的日本时代的占位符名称“ ”已被新的官方名称取代。 这些新增内容包括4个新脚本,总共150个脚本,以及61个新的表情符号字符。U+32FF SQUARE ERA NAME REIWA从 12.0开始,12.1只添加一个字符。 10、热点/ GC 10.1 JEP 351 ZGC取消提交未使用的存储器 10.2 添加了-XXSoftMaxHeapSize标志 10.3 ZGC支持的最大堆大小从4TB增加到16TB 11、安全库 11.2 新的keytool -showinfo -tls用于显示TLS配置信息的命令keytool -showinfo -tls添加了一个显示TLS配置信 息的新命令。
JDK10新特性 局部变量类型推断 引入并行 Full 应用程序类数据共享 线程本地握手 在备用存储装置上进行堆内存分配 基于Java的实验性JIT编译器 删除javah工具 JDK10新增API transferTo JDK 5仅允许引导类加载器加载归档的类。JDK10对应用程序类数据共享进行了扩展,允许“应用程序类加载器”,内置 平台类加载器和自定义类加载器加载已归档的类。 该新特性的效果 线程本地握手是在 JVM 内部相当低级别的更改,修改安全点机制,允许在不运行全局虚拟机安全点的情况下实现线 程回调,使得部分回调操作只需要停掉单个线程,而不是停止所有线程。 除了DRAM之外,这种架构还将具有一 种或多种具有不同特性的非DRAM存储器。 该JEP的目标是无需更改现有的应用程序代码可以代替DRAM用于对象堆。 文件名.java ---- JDK10新增API JDK10 给 java.util 包下的List、Set、Map新增加了一个静态方法 copyOf 。
JDk8新特性 1.1. 函数式编程 1.1.1. 集合的foreach 1.1.2. lambda表达式轻松创建接口实例 1.1.3. 接口的默认方法和静态方法 1.1.4. Collectors 1.3.1. toMap 1.3.2. toList 1.3.3. toSet 1.3.4. groupingBy JDk8新特性 函数式编程 集合的foreach List distinct():去除流中重复的元素 sorted():对流的元素排序 forEach():对流中的每个元素执行某个操作 peek():与forEach()方法效果类似,不同的是,该方法会返回一个新的流 forEach()无返回 limit():截取流中前面几个元素 skip():跳过流中前面几个元素 toArray():将流转换为数组 reduce():对流中的元素归约操作,将每个元素合起来形成一个新的值 optional.isPresent()){ System.out.println(optional.get()); } 分组 和关系数据库一样,流也提供了类似于数据库中GROUP BY分组的特性
四大函数式接口 四、方法引用和构造器引用 五、StreamAPI 1.Stream介绍 2.Stream的三个操作步骤 2.1Stream创建 2.2Stream中间操作 六、新的日期
JDK9新特性 模块化系统 目标 步骤 模块化出现的背景与概念 模块化的概念 演示 小结 交互式编程 交互式编程的概念 Jshell工具使用 小结 多版本兼用jar的作用 基本使用方法 使用演示 java 应用场景:比如某个架构师开发了一个工具类MyUtils,该工具类里面使用了jdk9的新特性,这时候该工具在推广的时候会遇到很大的阻力,因为很多用户还没有升级jdk版本,JDK9推出了多版本兼用jar的特性就允许该架构师编写一个同类名的工具 MyUtils,并在该工具类中不使用jdk9的新特性,然后两个同类名的类一起打包成为一个jar,提供给用户去使用,这时候即可根据用户当前使用的jdk版本而选择不同的工具类了。 假设未来这个项目升级JDK 10,决定在A.java中使用Java 10的一些新特性,可以单独针对A.class进行语法升级,并将编译结果a.class放置在META-INF/versions/10/下面 代码演示 因为我这里使用的是jdk11,所以讲一下jdk11中对httpClient的改变 变化: 一: 从java9的jdk.incubator.httpclient模块迁移到java.net.http
JDK 18已经在今年的3月22日正式发布了。它是一个非长期支持版的JDK。 我在这篇文章将简述一下JDK 18中有哪些新特性,以供大家参阅与了解。 由于JDK 18不是LTS版本的SDK,所以你可能不会真正去使用它,但做为Java程序员,我们仍然有义务去了解它有哪些新特性。 JDK 9是第一个非LTS的JDK版本,JDK 11是之后的第一个LTS JDK版本,JDK 17是当前最新的LTS版本。 JDK 18的新特性 所以,现在你应该清楚了,JDK 18是个非LTS版本,通常情况下,我们只会使用JDK LTS版本。但知道非LTS版本有哪些新特性,对我们Java程序员来说,也是非常有必要的。 为什么需要这个特性 JDK 17引进了Pattern Matching模式匹配,我在Java 8 之后的那些新特性(八):模式匹配 Pattern Matching讲述到这个特性。
通过这样的方式,开发团队可以把一些关键特性尽早合并到 JDK 之中,以快速得到开发者反馈,在一定程度上避免出现像 Java 9 这样两次被迫延迟发布的窘况。 按照官方的说法,新的发布周期会严格遵循时间点,将于每年的3月份和9月份发布。所以 Java 11 的版本号是 18.9(LTS)。 许可证 按照官方的说法,从 Java 11 开始,在 GPLv2 许可证下提供 JDK 版本,采用 Classpath Exception (GPLv2+CPE) 的方式,满足了在商业许可下使用 JDK 新特性 根据官网的公开信息,此处的Java 11主要更新了 17 个 JEP。 JavaScript Engine(弃用 Nashorn JavaScript 引擎) 336: Deprecate the Pack200 Tools and API(弃用 Pack200 工具及其 API) 新特性体验
下面梳理一下 java11 的新特性。 抛出 IllegalAccessException,jdk11 正常 } } } 在java8中,注释① 处的代码是没有问题的,因为嵌套类是可以访问别的嵌套类的私有属性的。 该实现增加了 16,018 个字符,和10个新的脚本。 /usr/local/jdk/bin/java --source 11 public class HelloWorld{ public static void main(String[] args ,该版本提供的是实验性特性。
Java 11,作为长期支持(LTS)版本,自2018年发布以来,已经成为许多企业的首选。它不仅提供了稳定性,还引入了一系列令人兴奋的新特性。 在这篇文章中,我们将深入探讨Java 11的几大亮点,并提供相应的代码示例。让我们一起来探索这些新特性如何改变我们的编程实践,并在文章末尾留下你的点赞和评论,分享你的看法!1. 局部变量类型推断(var关键字)Java 10引入了局部变量类型推断的预览特性,Java 11将其正式纳入。现在,你可以使用var关键字来声明局部变量,编译器将自动推断变量的类型。 结语Java 11的新特性为开发者提供了更多的便利和强大的工具。无论是局部变量类型推断、新的HTTP客户端,还是改进的Lambda表达式,都极大地提高了代码的可读性和开发效率。 你最喜欢Java 11的哪个特性?在评论中分享你的看法,并点赞这篇文章,让更多人了解Java 11的魅力!如果你有任何问题或想要了解更多细节,请在评论区留言,我会尽快回复你。
目前JDK1.8被各大公司、各大项目纷纷使用,作为Java开发中使用最多的版本,细心的你,或许早已发现它与之前版本存在着较大的差异。如果能熟练掌握使用这些差异、新特性,你会发现另一片天地。 今天抽时间整理下,JDK1.8新特性究竟有哪些?并以【JDK1.8新特性】专题逐一展开讨论、学习。 (JDK1.8新特性常常在面试中被问及的频率很高哦) JDK1.8概述 JDK1.8,又称之为Java 8(我习惯叫它为JDK1.8,后续统一叫做JDK1.8),是Java语言开发的一个主要版本。 ; /** * JDK1.8新特性 * @Auther: xcbeyond * @Date: 2019/11/27 0027 23:53 */ public class Java8Test (num)); } } 新特性 JDK1.8新增了非常多的特性,本专题主要讨论以下几个: Lambda表达式:Lambda允许把函数作为一个方法的参数(函数作为参数传递到方法中)。
如果能熟练掌握使用这些差异、新特性,你会发现另一片天地。今天抽时间整理下,JDK1.8新特性究竟有哪些?并以【JDK1.8新特性】专题逐一展开讨论、学习。 (JDK1.8新特性常常在面试中被问及的频率很高哦) JDK1.8概述 JDK1.8,又称之为Java 8(我习惯叫它为JDK1.8,后续统一叫做JDK1.8),是Java语言开发的一个主要版本。 举例如下,JDK1.8的特性是不是与众不同。 ; /** * JDK1.8新特性 * @Auther: xcbeyond * @Date: 2019/11/27 0027 23:53 */ public class Java8Test { (num)); } } 新特性 JDK1.8新增了非常多的特性,本专题主要讨论以下几个: Lambda表达式:Lambda允许把函数作为一个方法的参数(函数作为参数传递到方法中)。
Switch 的三个方面,参考: JEP 361 支持箭头表达式 支持 yied 返回值 支持 Java Record 箭头表达式,新的 case 标签 Switch 新的语法,case label 表达式|throw 语句|block case label_1, label_2, ..., label_n -> expression;|throw-statement;|block step1:新的