0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Oracle官方宣布 Java 11(18.9 LTS) 正式发布

电子工程师 来源:未知 作者:李倩 2018-10-08 15:07 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

有多少语言在提刀想反超 Java的路上?但万万没想到,人家并未当回事,如今这款常青藤甚至越跑越欢,当我们还在使用 Java 7/8 时,它已经一路跑到了 11。

和预期的时间差不多,北京时间 9 月 26 日,Oracle 官方宣布 Java 11(18.9 LTS) 正式发布,可供生产环境中使用,此次版本的更新,不仅提高了工作效率,也提供了HTTP/2ClientAPI

同时,这也是自 Oracle 宣布以六个月为周期更新后发布的第一个长期支持版本。下载地址如下:

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

JDK 11 主要特性

最新发布的 JDK 11 共带来了 17 项更新:

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

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

315:Improve Aarch64 Intrinsics(改进 Aarch64 内部函数)

318:Epsilon: A No-Op Garbage Collector(Epsilon:No-Op 垃圾收集器)

320:Remove the Java EE and CORBA Modules(删除 Java EE 和 CORBA 模块)

321:HTTP Client (Standard)(HTTP 客户端)

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(启动单文件源代码程序)

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(弃用 Rhino JavaScript 引擎)

336:Deprecate the Pack200 Tools and API(弃用 Pack200 工具和 API)

开发者的角度来看,上面的特性中有几点需要特别关注。

JEP 323 实现了 Java 10 中引入的局部变量类型推断的扩展。类型推断是从其余源代码和键入规则中推导出的数据类型。这节省了开发者的工作时间,且不会使源代码过于复杂,而提高了可读性。

从 Java 10 开始,可以使用关键字 var 声明局部变量,如下所示:

//FunktioniertseitJava10varzahl=5;//intvarstring="HelloWorld";//Stringvarobjekt=BigDecimal.ONE;//BigDecimal

在 Java 11 中,不同点在于开发者可以使用 var 声明 lambda 参数。乍一看,这一举措似乎有点多余,因为在写代码过程中可以省略 lambda 参数的类型,并通过类型推断确定它们。但是,扩展名对于使用 @Nonnull 和 @Nullable 等类型注释很有用。

//InferencevonLambda-ParameternConsumerprinter=(vars)->System.out.println(s);//statts->System.out.println(s);//aberkeineMischungvon"var"unddeklariertenTypenmöglich//BiConsumerprinter=(vars1,Strings2)->System.out.println(s1+""+s2);//NützlichfürTypeAnnotationsBiConsumerprinter=(@Nonnullvars1,@Nullablevars2)->System.out.println(s1+(s2==null?"":""+s2));

JDK 11 中另一个亮点在于仍处于实验阶段的新 HTTP Client API 的标准化,该 API 在 JDK 9 中被引入,在 JDK 10 中进行了更新,在本次 JDK 11 中包名由 jdk.incubator.http 改为 java.net.http。HTTP Client API 除了实现了HTTP(1.1和2)、WebSocket,同步和异步调用以及 Reactive Streams 现在也受支持。还使用清晰易懂的 Fluent 界面,将来可能会淘汰其他 HTTP 客户端(如 Apache)的使用。

HttpClientclient=HttpClient.newHttpClient();HttpRequestrequest=HttpRequest.newBuilder().uri(URI.create("http://openjdk.java.net/")).build();client.sendAsync(request,asString()).thenApply(HttpResponse::body).thenAccept(System.out::println).join();

JEP 330(启动单文件源代码程序)现在可以启动尚未编译的类。如今单文件程序在编写小实用程序时很常见,特别是脚本语言领域。从中开发者可以省去用 Java 编译程序等不必要工作,以及减少新手的入门障碍。在基于 Java 10 的程序中可以通过三种方式启动:

作为* .class文件

作为* .jar文件中的主类

作为模块中的主类

现在,Java 11 中可以在源代码文件中声明类:

#javaHelloWorld.java//statt#javacHelloWorld.java#java-cp.hello.World

在 Unix 操作系统上,Java 文件甚至可以直接作为 Shebang 文件执行:

#!/path/to/java--sourceversion

#./HelloWorld.java

其他值得注意的变化包括支持 Unicode 10 标准以及将 Profiler Flight Recorder 集成到 OpenJDK 中(之前仅适用于 Oracle JDK)。Flight Recorder 的目标是尽可能高效地记录应用程序数据,以便在出现问题时分析 Java 应用程序和 JVM。

API 的变化

此外,Java 类库也有不少小的改动。 特别是字符串:

|WelcometoJShell--Version11|Foranintroductiontype:/helpintro//UnicodezuStringjshell>Character.toString(100)$1==>"d"jshell>Character.toString(66)$2==>"B"//ZeichenmitFaktormultiplizierenjshell>"-".repeat(20)$3==>"--------------------"//EnthälteinTextkeineZeichen(höchstensLeerzeichen)?jshell>Stringmsg="hello"msg==>"hello"jshell>msg.isBlank()$5==>falsejshell>Stringmsg=""msg==>""jshell>msg.isBlank()$7==>true//AbschneidenvonführendenodernachgelagertenLeerzeichenjshell>"helloworld".strip()$8==>"helloworld"jshell>"helloworld".strip()$9==>"helloworld"jshell>"helloworld".stripTrailing()$10==>"helloworld"jshell>"helloworld".stripLeading()$11==>"helloworld"jshell>"".strip()$12==>""//Textezeilenweiseverarbeitenjshell>Stringcontent="thisisamultilinecontent Mostlyobtainedfromsomefile whichwewillbreakintolines usingthenewapi"content==>"thisisamultilinecontent Mostlyobtainedfro...ines usingthenewapi"jshell>content.lines().forEach(System.out::println)thisisamultilinecontentMostlyobtainedfromsomefilewhichwewillbreakintolinesusingthenewapi

Java 11 计划于本月,即 9 月 25 日发布。与 Java 10 不同,Java 11 不仅提供了长期支持,还将作为 Java 平台的参考实现。新的长期支持版本每三年发布一次,根据后续的发布计划,Java 17 将于 2021 年发布。

Java 11:删除了什么?

Oracle JDK 将不再包含 JavaFX(OpenJDK 从未提供过)。相反,JavaFX 通过 OpenJFX 作为单独的下载提供,并且可以像任何 Java 应用程序中的任何其他库一样使用。除 JavaFX 外,还将停止对 Applet 和 Java Web Start 的支持。如果仍然想使用 Java Web Start,那么必须保持在 JDK 8 的版本,直至 Oracle 停止免费更新后,花钱购买该服务。

另一个在 Java 11 中被弃用的 JavaScript 引擎 Rhino。预计它将在 Java 的未来版本中彻底消失。不过值得注意的是,Rhino 从未真正将自己断言为 Node.js 上的服务器端 JavaScript 实现基础。通过 GraalVM,Oracle 现在采用其他方式在 JVM 上本地运行其他编程语言。

顺便说一下,从 Java 11 开始,Java 运行时环境(JRE)将仅存在于服务器版本中,而不再存在于桌面中。但是,对于具有模块系统和 jlink 工具的桌面应用程序,开发者现在可以轻松创建或调整运行时环境。

JDK 11 是否值得更新?

今年四月,Oracle 发布官方声明表示即将停止对 JDK 8 的正常支持(免费更新):

2019 年 1 月之后,Oracle 将不会在其网站上发布 Java SE 8 商业使用的进一步更新下载。如需持续获取安全的 Bug 修复和安全补丁以及 Java SE 8 或以前版本的稳定性支持,可以通过 Oracle Java SE 高级版、Oracle Java SE 高级桌面、或 Oracle Java SE 套件。

这意味着,在 2019 年 1 月之后,开发者想要使用老版本只能付费了,从中也侧面看出,Oracle 在间接性鼓励用户主动升级。不过,据各种对 Java 用户调查如 Jaxenter发现,大多数的开发者依旧停留在 Java 8 以内的版本。

其实,这也不足为怪,当开发者刚开始吐槽新版本带来的问题时,Java 已搭载上了火箭更新到了下一版本,让大家措手不及。此前,就连Java Collection Framework 的创建者 Josh Bloch 都在吐槽Java 9 模块系统(Project Jigsaw)带来令人头痛的问题,甚至建议:

现在说Project Jigsaw将在 JDK 之外实现广泛使用还为时过早。与此同时,除非你有迫切需要,否则最好避免使用它们。

那么对于 JDK 11 是否值得立即更新使用?按照 Oracle 公布支持的路线图来看,如文章开头所述,Java 11 将会获得 Oracle 长期的服务支持,直至 2026 年 9 月。相比 Java 9 和 10 这两个仅提供半年技术支持的版本来说,JDK 11 的发布无疑对个人开发者以及企业都是一件好事。

那么,再结合其新特性,你会选择更新到 JDK 11 吗?

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • JAVA
    +关注

    关注

    20

    文章

    3006

    浏览量

    116828
  • Oracle
    +关注

    关注

    2

    文章

    307

    浏览量

    38945

原文标题:Java 11 正式发布!

文章出处:【微信号:rgznai100,微信公众号:rgznai100】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    Oracle和NVIDIA合作加速向量搜索和企业数据处理

    旨在支持 NVIDIA GPU 和 NVIDIA cuVS 开源库,用于向量搜索和索引生成。本公告基于在 Oracle AI World 2025 大会上推出的 Oracle AI Database 26ai 和 Oracle
    的头像 发表于 03-23 15:26 424次阅读

    迅为RK系列开发板重磅升级SDK内核从5.10全面升级至6.1 LTS

    迅为RK系列开发板重磅升级SDK内核从5.10全面升级至6.1 LTS
    的头像 发表于 03-18 13:21 1311次阅读
    迅为RK系列开发板重磅升级SDK内核从5.10全面升级至6.1 <b class='flag-5'>LTS</b>

    Oracle软件在主机平台的应用

    在数字化转型浪潮中,企业核心业务系统对数据库的稳定性、性能与扩展性提出严苛要求。Oracle数据库凭借其深厚的技术积淀与主机平台(大型机、高端Unix小型机)的强强联合,成为金融、电信、能源等行业
    的头像 发表于 03-14 14:18 725次阅读

    Ubuntu 20.04/24.04/25.04深度对比:谁是你的最佳选择?

    2020 年 4 月发布的经典 LTS 版本,服务器版提供 5 年官方支持(至 2025 年 4 月),桌面版支持 3 年,是企业级部署的 “稳定基石”。
    的头像 发表于 02-09 16:52 2309次阅读

    发布元服务配置隐私声明

    服务”。 选择要发布的元服务。 左侧导航选择“应用上架 > 版本信息”下待发布的版本。 进入“隐私声明”区域,选择您生成的隐私政策和用户协议。 本文参考鸿蒙官方文档
    发表于 11-25 11:24

    如何基于开发板RK3568 Android 11强制所有应用横屏展示

    RK3568 Android 11强制所有应用横屏展示,1、打开frameworks/base/core/java/android/content/pm/parsing/component
    的头像 发表于 11-07 16:07 879次阅读
    如何基于开发板RK3568 Android <b class='flag-5'>11</b>强制所有应用横屏展示

    元服务发布选择待发布软件包

    上传软件包并通过基础合法检查后,就可以从上传的版本中选择需要发布的软件包。 登录AppGallery Connect,点击“APP与元服务”。 选择要发布的元服务。 左侧导航选择“应用上架 &
    发表于 11-03 17:10

    Java 25正式发布,重要特性详解(附代码示例):灵活构造函数体、模块导入声明、AOT方法分析等

    Java 25现已发布,更多新特性来了!配合Perforce JRebel,代码修改即时生效,无需重启服务,即可实现“改完就看效果”。新特性+快工具,让你的Java开发体验双倍提升!
    的头像 发表于 10-29 13:16 1678次阅读
    <b class='flag-5'>Java</b> 25正式<b class='flag-5'>发布</b>,重要特性详解(附代码示例):灵活构造函数体、模块导入声明、AOT方法分析等

    NVIDIA Spectrum-X 以太网交换机助力 Meta 和 Oracle 加速网络性能

    Facebook 开放交换系统平台。 Oracle 采用 Spectrum-X 以太网交换机构建十亿瓦级(Giga-Scale)AI 超级计算机。 NVIDIA 宣布 Meta 和 Oracle 将升级为
    的头像 发表于 10-14 10:26 2063次阅读
    NVIDIA Spectrum-X 以太网交换机助力 Meta 和 <b class='flag-5'>Oracle</b> 加速网络性能

    元服务发布准备工作

    元服务软件包自检,确保您的APP包满足如下要求: 3.提前准备好发布所需的材料、信息。 本文主要从参考引用自HarmonyOS官方文档
    发表于 10-10 15:48

    Java效率提升指南:5个Java工具选型建议及Perforce JRebel和XRebel介绍

    企业级Java环境越来越复杂,真正的破局点,可能不在“人”,而在于“工具”。5个实用建议,帮你理清Java工具的选型思路。
    的头像 发表于 09-11 13:59 1886次阅读
    <b class='flag-5'>Java</b>效率提升指南:5个<b class='flag-5'>Java</b>工具选型建议及Perforce JRebel和XRebel介绍

    请问在Vision Five2上怎样安装openeuler24.03 LTS SP1?

    在Vision Five2上怎样安装openeuler24.03 LTS SP1?
    发表于 07-29 09:02

    Oracle Database@Amazon Web Services现已正式可用

    即日起,客户可以在亚马逊云科技北弗吉尼亚区域和俄勒冈区域使用Oracle Database@Amazon Web Services,后续将扩展至全球其他20个区域。 富达投资集团、全美互惠保险公司
    的头像 发表于 07-21 15:11 918次阅读

    IBM和Oracle深化合作伙伴关系

    近日,IBM 正在与 Oracle 合作,将 IBM 旗舰 AI 产品组合 watsonx 的强大功能引入 Oracle 云基础设施 (OCI)。 借助 OCI 的原生人工智能服务,IBM 与 Oracle 这一最新里程碑式技术
    的头像 发表于 06-30 14:15 1235次阅读

    oracle数据恢复—oracle数据库误执行错误truncate命令如何恢复数据?

    oracle数据库误执行truncate命令导致数据丢失是一种常见情况。通常情况下,oracle数据库误操作删除数据只需要通过备份恢复数据即可。也会碰到一些特殊情况,例如数据库备份无法使用或者还原
    的头像 发表于 06-05 16:01 1750次阅读
    <b class='flag-5'>oracle</b>数据恢复—<b class='flag-5'>oracle</b>数据库误执行错误truncate命令如何恢复数据?