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

台州企业建站系统郝友做的网站

台州企业建站系统,郝友做的网站,关于做摄影的网站,自动做效果图的网站Java 11 新特性概览 1. Java 11 简介2. Java 11 新特性2.1 HTTP Client 标准化2.2 String 新增方法(1)str.isBlank() - 判断字符串是否为空(2)str.lines() - 返回由行终止符划分的字符串集合(3)str.repeat(…

Java 11 新特性概览

  • 1. Java 11 简介
  • 2. Java 11 新特性
    • 2.1 HTTP Client 标准化
    • 2.2 String 新增方法
      • (1)str.isBlank() - 判断字符串是否为空
      • (2)str.lines() - 返回由行终止符划分的字符串集合
      • (3)str.repeat(n) - 重复字符串多少次
      • (4)str.stripLeading() - 删除字符串前面的空格
      • (5)str.stripTrailing() - 删除字符串后面的空格
      • (6)str.strip() - 删除字符串前后的空格
    • 2.3 ZGC:可伸缩低延迟垃圾收集器
    • 2.4 Optional.isEmpty()
    • 2.5 lambda 参数的局部变量语法
    • 2.6 简化启动单个源代码文件的方法
    • 2.7 Epsilon 垃圾收集器
  • 3. 其他新特性

1. Java 11 简介

Java 11 于 2018 年 9 月 25 日正式发布,且为长期支持版本(Long-Term-Support - LTS)。

下面为 Oracle Java SE 产品的一些关键产品日期示例(Oracle Java SE Product Releases):

在这里插入图片描述

2. Java 11 新特性

2.1 HTTP Client 标准化

Java 11 对 Java 9 中引入并在 Java 10 中更新的 Http Client API 进行了标准化,实现了几乎完全重写,并且现在是完全异步非阻塞的 (以前的 HTTP/1.1 的实现是阻塞的)。

Http Client 的包名由 jdk.incubator.http 改为 java.net.http。该 API 通过 CompleteableFutures 提供非阻塞请求和响应语义。

示例:

var request = HttpRequest.newBuilder().uri(URI.create("https://www.baidu.com/")).GET().build();
var client = HttpClient.newHttpClient();// 同步
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());// 异步
client.sendAsync(request, HttpResponse.BodyHandlers.ofString()).thenApply(HttpResponse::body).thenAccept(System.out::println);

JEP 321 HTTP Client (Standard)

2.2 String 新增方法

Java 11 新增了一些 String 方法:

(1)str.isBlank() - 判断字符串是否为空

class strMethodsTest {public static void main(String args[]) {String str1 = "";System.out.println(str1.isBlank());String str2 = "pointerJava";System.out.println(str2.isBlank());}
}

输出结果:

true
false

(2)str.lines() - 返回由行终止符划分的字符串集合

import java.util.*;class strMethodsTest {public static void main(String args[]) {String str = "pointer\njava";System.out.println(str.lines().count());System.out.println(str.lines().collect(Collectors.toList()));}
}

输出结果:

2
pointer
java

(3)str.repeat(n) - 重复字符串多少次

class strMethodsTest {public static void main(String args[]) {String str = "pointerJava";System.out.println(str.repeat(2));}
}

输出结果:

pointerJavapointerJava

(4)str.stripLeading() - 删除字符串前面的空格

class strMethodsTest {public static void main(String args[]) {String str = " pointerJava";System.out.println(str.stripLeading());}
}

输出结果:

pointerJava

(5)str.stripTrailing() - 删除字符串后面的空格

class strMethodsTest {public static void main(String args[]) {String str = "pointerJava ";System.out.println(str.stripTrailing());}
}

输出结果:

pointerJava

(6)str.strip() - 删除字符串前后的空格

class strMethodsTest {public static void main(String args[]) {String str = " pointerJava ";System.out.println(str.strip());}
}

输出结果:

pointerJava

2.3 ZGC:可伸缩低延迟垃圾收集器

详细介绍可以参考美团技术团队创作的:《新一代垃圾回收器ZGC的探索与实践》

JEP 333: ZGC: A Scalable Low-Latency Garbage Collector (Experimental)

2.4 Optional.isEmpty()

新增了 isEmpty() 方法来判断指定的 Optional 对象是否为空。

var op = Optional.empty();
System.out.println(op.isEmpty());

2.5 lambda 参数的局部变量语法

从 Java 10 开始,引入了局部变量类型推断(Local Variable Type Inference)功能,它可以让我们使用关键字 var 声明局部变量(而不是实际类型),而由编译器根据变量初始化的值自动推断出类型。

Java 10 中对 var 关键字存在几个限制

  • 只能用于局部变量上
  • 声明时必须初始化
  • 不能用作方法参数
  • 不能在 Lambda 表达式中使用

JDK 11 允许在 lambda 表达式中使用 var 进行参数声明:

public class VarInLambdaExample {public static void main(String[] args) {IntStream.of(1, 2, 3, 5, 6, 7).filter((var i) -> i % 2 == 0).forEach(System.out::println);}
}
public class WithoutVarInLambdaExample {public static void main(String[] args) IntStream.of(1, 2, 3, 5, 6, 7).filter(i -> i % 2 == 0).forEach(System.out::println);}
}

输出结果都为:

2
6

JEP 323: Local-Variable Syntax for Lambda Parameters

2.6 简化启动单个源代码文件的方法

该特性不需要首先使用javac工具编译java源文件。 你可以使用 Java 命令直接运行该文件,并隐式编译。

例如:如果名为 HelloWorld.java 的文件包含一个名为 hello.World 的类,那么该命令:

$ java HelloWorld.java

等同于:

$ javac HelloWorld.java
$ java -cp hello.World

2.7 Epsilon 垃圾收集器

Epsilon 垃圾收集器不执行任何实际的垃圾回收操作(没有实际的内存回收机制),它只是简单地分配内存并忽略所有的垃圾对象。这对于一些特殊的性能测试和调优场景可能很有用。

使用场景:

性能测试 :什么都不执行的 GC 非常适合用于 GC 的差异性分析。no-op (无操作)GC 可以用于过滤掉 GC 诱发的性能损耗,比如 GC 线程的调度,GC 屏障的消耗,GC 周期的不合适触发,内存位置变化等。此外有些延迟者不是由于 GC 引起的,比如 scheduling hiccups, compiler transition hiccups,所以去除 GC 引发的延迟有助于统计这些延迟。

内存压力测试:在测试 Java 代码时,确定分配内存的阈值有助于设置内存压力常量值。这时 no-op 就很有用,它可以简单地接受一个分配的内存分配上限,当内存超限时就失败。例如:测试需要分配小于 1G 的内存,就使用-Xmx1g 参数来配置 no-op GC,然后当内存耗尽的时候就直接 crash。

VM 接口测试:以 VM 开发视角,有一个简单的 GC 实现,有助于理解 VM-GC 的最小接口实现。它也用于证明 VM-GC 接口的健全性。

极度短暂 job 任务:一个短声明周期的 job 任务可能会依赖快速退出来释放资源,这个时候接收 GC 周期来清理 heap 其实是在浪费时间,因为 heap 会在退出时清理。并且 GC 周期可能会占用一会时间,因为它依赖 heap 上的数据量。

延迟改进:对那些极端延迟敏感的应用,开发者十分清楚内存占用,或者是几乎没有垃圾回收的应用,此时耗时较长的 GC 周期将会是一件坏事。

吞吐改进:即便对那些无需内存分配的工作,选择一个 GC 意味着选择了一系列的 GC 屏障,所有的 OpenJDK GC 都是分代的,所以他们至少会有一个写屏障。避免这些屏障可以带来一点点的吞吐量提升。

JEP 318: Epsilon: A No-Op Garbage Collector (Experimental)

3. 其他新特性

JDK 11 Release Notes:https://www.oracle.com/java/technologies/javase/11-relnote-issues.html

Java 11 – Features and Comparison:https://www.geeksforgeeks.org/java-11-features-and-comparison/

http://www.yayakq.cn/news/252144/

相关文章:

  • 上海柘中建设股份有限公司网站做网站能创业吗
  • 莱芜高端网站设计建设宁波网站优化体验
  • 怎样让百度搜索到自己的网站信息推广服务
  • 个人做二次元网站怎么赚钱建行互联网站
  • 江苏网站建设哪家好文字生成器在线制作
  • 沙河做网站培训课程网站
  • 网站空间文件删不掉彩虹网站建设
  • 字体分辨网站项目管理软件系统
  • 门户网站的基本特征有个人是否可以申请网址
  • 网站开发的软件支持温州百度关键词搜索
  • 如何知道网站什么时候做的网站建设众包平台
  • 网站定位与功能分析网站快速排名服务商
  • 站长平台社区网站5g空间多少钱
  • 地方旅游网站建设必要性wordpress ad
  • 2018年网站优化怎么做深圳建科院公司网站
  • 瑞安市住房和城乡规划建设局网站网站开发团队人员配置
  • 怎么开网站做网红网站商品图片怎么做
  • 设计公司网站域名巴中做网站公司
  • 如何做网站的关键词北京集团公司网站建设
  • 零基础学做网站难吗自己做的个人网站无法备案
  • 下载软件网站微信商城系统哪找
  • wordpress建站全过程软件售卖平台
  • 兰州新站seo网站建设捌金手指花总十六
  • 全网搜索引擎网站快速排名优化哪家好
  • 太原网站建设制作机构学生个人网页设计作品代码
  • 企业模式网站列表管理器昆明网站外包
  • 网站建设的目标和需求分析html网页设计作业成品代码免费下载
  • 预付网站建设费用怎么做分录网站建设协议书是否贴花
  • 镇江网站建设公司丽水市建设局网站
  • 自己动手做衣服网站岳阳网站开发网站运营