概述

美国当地时间9月25日,Oracle 官方宣布 Java 11 (18.9 LTS) 正式发布,可在生产环境中使用!这是自 Java 8 后的首个长期支持版本,将支持到2026年,可以使用下面的地址进行下载:

https://www.oracle.com/technetwork/java/javase/downloads/jdk11-downloads-5066655.html

版本更新说明

在Java的版本上,按照官方的说法,Java 的版本发布周期变更为每六个月一次 —— 每半年发布一个大版本,每个季度发布一个中间特性版本,并且承诺不会跳票。通过这样的方式,开发团队可以把一些关键特性尽早合并到 JDK 之中,以快速得到开发者反馈,在一定程度上避免出现像 Java 9 这样两次被迫延迟发布的窘况。

按照官方的说法,新的发布周期会严格遵循时间点,将于每年的3月份和9月份发布。所以 Java 11 的版本号是 18.9(LTS)。不过与 Java 9 和 Java 10 这两个被称为“功能性的版本”不同(两者均只提供半年的技术支持),Java 11 不仅提供了长期支持服务,还将作为 Java 平台的参考实现。Oracle 直到2023年9月都会为 Java 11 提供技术支持,而补丁和安全警告等扩展支持将持续到2026年。

许可证

按照官方的说法,从 Java 11 开始,Oracle 将在 GPLv2 许可证下提供 JDK 版本,采用 Classpath Exception (GPLv2+CPE) 的方式,满足了在商业许可下使用 Oracle JDK 作为 Oracle 产品或服务的一部分,或者不想使用开源软件的需求。这种使用开源许可证和商业许可证的组合取代了历史上的“BCL”许可证,该许可证具有免费和付费商业条款的组合。

新特性

根据官网的公开信息,此处的Java 11主要更新了 17 个 JEP。

  • 181: Nest-Based Access Control(基于嵌套的访问控制)

  • 309: Dynamic Class-File Constants(动态的类文件常量)

  • 315: Improve Aarch64 Intrinsics(改进 Aarch64 Intrinsics)

  • 318: Epsilon: A No-Op Garbage Collector(Epsilon 垃圾回收器,又被称为"No-Op(无操作)"回收器)

  • 320: Remove the Java EE and CORBA Modules(移除 Java EE 和 CORBA 模块,JavaFX 也已被移除)

  • 321: HTTP Client (Standard)

  • 323: Local-Variable Syntax for Lambda Parameters(用于 Lambda 参数的局部变量语法)

  • 324: Key Agreement with Curve25519 and Curve448(采用 Curve25519 和 Curve448 算法实现的密钥协议)

  • 327: Unicode 10

  • 328: Flight Recorder(飞行记录仪)

  • 329: ChaCha20 and Poly1305 Cryptographic Algorithms(实现 ChaCha20 和 Poly1305 加密算法)

  • 330: Launch Single-File Source-Code Programs(启动单个 Java 源代码文件的程序)

  • 331: Low-Overhead Heap Profiling(低开销的堆分配采样方法)

  • 332: Transport Layer Security (TLS) 1.3(对 TLS 1.3 的支持)

  • 333: ZGC: A Scalable Low-Latency Garbage Collector (Experimental)(ZGC:可伸缩的低延迟垃圾回收器,处于实验性阶段)

  • 335: Deprecate the Nashorn JavaScript Engine(弃用 Nashorn JavaScript 引擎)

  • 336: Deprecate the Pack200 Tools and API(弃用 Pack200 工具及其 API)

新特性体验

那么,作为一名Java程序猿,Java 11究竟带来了哪些改变呢,对于我们写代码会有什么帮助呢?

1,在Lambda表达式中使用var

本地变量类型var是java 10提出的新概念,它可以从上下文中推断出本地变量的类型,从而提高代码可读性。

public class Main {    public static void main(String[] args) throws Exception {        URL url = new URL("http://www.oracle.com/");        URLConnection conn = url.openConnection();        Reader reader = new BufferedReader(                new InputStreamReader(conn.getInputStream()));    }}

使用var声明后,上面的代码可以改写成:

public class Main {    public static void main(String[] args) throws Exception {        var url = new URL("http://www.oracle.com/");        var conn = url.openConnection();        var reader = new BufferedReader(                new InputStreamReader(conn.getInputStream()));    }}

在上面的代码中,我们使用var代替了URL、URLConnection、Reader,提高了代码的可读性,也方便了开发。 但是在JAVA 10中,var变量不能在lambda表达式中声明,在JAVA 11中,解决了这个问题。现在,我们可以在lambda表达式中使用var,例如:

(var x, var y) -> x.process(y)//等价于(x, y) -> x.process(y)

2,标准化的HTTP Client API

以前我们在程序中使用HttpClient时,通常会引入apache的HttpClient工具包。现在,我们可以使用JDK原生的 HttpClient。

  1. public class HttpTest {

  2.    public static void main(String[] args) throws Exception {

  3.        String uri = "http://www.oracle.com/";

  4.        HttpClient client = HttpClient.newHttpClient();

  5.        HttpRequest request = HttpRequest.newBuilder()

  6.                .uri(URI.create(uri))

  7.                .build();

  8.        HttpResponse<String> response =

  9.                client.send(request, HttpResponse.BodyHandlers.ofString());

  10.        System.out.println(response.body());

  11.    }

  12. }

上面的例子是同步的get请求,还有其他的方法HttpClient也是提供的,例如:异步get、post提交、并发请求、Get Json和Post Json等。更多资料请查看附件的链接:

JDK 11 发布说明

https://www.oracle.com/technetwork/java/javase/11u-relnotes-5093844.html

JDK 11 官方文档

https://docs.oracle.com/en/java/javase/11/

JDK 11 新特性

https://www.oracle.com/technetwork/java/javase/11-relnote-issues-5012449.html#NewFeature

转载于:https://blog.51cto.com/13883927/2339000

Java 11新特性解读相关推荐

  1. IntelliJ IDEA 使用 Java 11新特性以及Java 8 以来的Java 11新特性介绍

    文章目录 Java 11 安装 IDEA 设置 特性1:lambda表达式中允许使用var 特性2: String新增REPEAT 方法,方便拷贝字符串 特性3: 文件读写更方便:readString ...

  2. Java 11 新特性

    2019独角兽企业重金招聘Python工程师标准>>> Java 11 新特性 转载于:https://my.oschina.net/u/3764794/blog/2993127

  3. Java 11新特性

    转载来源:https://juejin.im/post/5bb08accf265da0a87266d2a Java 11新特性 概述 美国当地时间9月25日,Oracle 官方宣布 Java 11 ( ...

  4. Java LTS版本——Java 11新特性

    ​​​​​​​ 今天来总结一下Java11版本中主要的新特性.供大家学习参考. 目录 1.HTTP Client API 同步用法 异步用法:需要用到SendSync方法 2.直接运行单个Java文件 ...

  5. Java 11新特性_java 11 值得关注的新特性

    JEP 181: Nest-Based Access Control 基于嵌套的访问控制 JEP 309: Dynamic Class-File Constants 动态类文件 JEP 315: Im ...

  6. java9特性_96.java基础10(java9/10/11新特性)

    126.java 9 新特性1(模块化功能): 1.java模块化 2.java 交互式环境jshell 3.泛型 package com.atguigu.java; import org.junit ...

  7. java11 是长期支持_这里有你不得不了解的Java 11版本特性说明

    「MoreThanJava」 宣扬的是 「学习,不止 CODE」,本系列 Java 基础教程是自己在结合各方面的知识之后,对 Java 基础的一个总回顾,旨在 「帮助新朋友快速高质量的学习」. 当然 ...

  8. Java 11 正式发布,新特性解读

    Java 11 正式发布,新特性解读 杨晓峰   2018 年 9 月 26 日 话题:Java语言 & 开发 不知不觉 JDK 11 已经发布了,从 9 开始,JDK 进入了让人学不动的更新 ...

  9. Java 9 - 17 特性解读:​Java 13

    Java 13在2019年9月发布,这个版本引入的正式可用特性几乎没有,是我认为最无聊的版本之一.所以我们跳过Java 13直接来看Java 14吧. Switch表达式 我觉得switch表达式在日 ...

最新文章

  1. 安装wdcp的方法和bug
  2. android实践项目一实现简单的验证码和spinner下拉选项效果
  3. 对付网络盗贼的三板斧
  4. Spark MLlib编程API入门系列之特征选择之R模型公式(RFormula)
  5. 本地文件夹如何断开svn连接
  6. 逻辑回归的总结(详细步骤)
  7. 解密Arm Neoverse V1 和 Neoverse N2 平台 为下一代基础设施带来计算变革
  8. 【第九课】MriaDB密码重置和慢查询日志
  9. 四窗口卖票 自己的票
  10. JavaScript高级程序设计学习(四)之引用类型(续)
  11. C++11 处理时间和日期的处理,以及chrono库介绍
  12. Python使用twisted包进行网络通信
  13. 68、secureCRT,vim中输入中文
  14. 计算机中文无敌版,与电脑下象棋无敌版
  15. 计算机研究院分所烟台,综合新闻_中科院计算所烟台分所 烟台中科网络技术研究所...
  16. java-net-php-python-13jspm珠宝销售网开题计算机毕业设计程序
  17. 红山服务器虚拟化解决方法,红山虚拟化:数据备份与灾难恢复
  18. 腾讯云—人脸识别应用实践
  19. 美的 Dell 国信证券面经整理
  20. Git命令: rebase 和 squash命令

热门文章

  1. UpdateLayeredWindow 绘制异型窗口
  2. C++ 暂停Windows文件保护
  3. 粤桂粤黔协作签约-丰收节交易会·李喜贵:谋定一县一园产业园
  4. 谋定新型农业主体-农业大健康·万祥军:农业高质量发展规划
  5. s插件——SlimScroll滚动美化插件
  6. linux 无外网情况下安装 mysql
  7. MySQL 主键冲突,无法插入数据
  8. 今天终于将第一个 Android NDK 程序编译、运行成功
  9. WEB标准页面CSS命名参考
  10. 各国家分析之- 阿根廷与乌拉圭