In this post I will share my notes on a great talk given by Simon Ritter titled “JDK from 9 to 13 How Java is Evolving with Simon Ritter”. Simon Ritter is Deputy CTO of Azul Systems and has been in the field for a long time. The talk was organized by the Java User Group Campinas and sponsored by Movile and Wavy company in Campinas city state of São Paulo, Brazil. The notes below summarize my understanding on the subject talked during the lecture, so let me know whether I made any misunderstanding.

Simon概述了Java的发展以及自JDK 9以来的主要变化。 Java对其二进制文件和交付策略进行了很多更改。 2年前的JDK 9是最后一个主要版本,引入了大约90个新功能,JDK 9和10是中间版本,Oracle开始清理并删除不推荐使用的功能。 JDK 9包含的一些功能包括:

  • Java Platform Module System (JPMS): Allowed the grouping of packages from the previous version and ended up with 26 main modules for creation of run time specific for you application.
  • JEP 260: Encapsulate Most Internal APIs: Encapsulate most of the JDK’s internal APIs by default so that they are inaccessible at compile time, and prepare for a future release in which they will be inaccessible at run time.
  • JEP 282: jlink: The Java Linker: Tool that can assemble and optimize a set of modules and their dependencies into a custom run-time image.

The new release model for delivery new versions on every 6 months brings more agility to the development and allow the adoption of new features fast. I will be very happy when cloud providers start to deliver new JDK versions as fast as JDK is released. The Long Term Support (LTS) for the JDK is now eligible every 3 years and the current LTS version is JDK 11, this means that Oracle will delivery fixes to JDK 11 until the next LŤS release be launched.

OpenJDK也已经发展到与JDK版本保持一致,因此OpenJDK 11和JDK 11现在具有相同的功能,目标是两者一起发展。 OpenJDK和JDK之间的主要区别之一是许可证模型,而JDK 11及更高版本仅对开发和测试环境免费,并且您必须支付Oracle Java SE订阅才能在生产环境中使用它,OpenJDK使用带有GPLv2许可证的产品。 没有使用限制。 JDK 8无限期免费,但是没有诸如安全补丁和错误修复之类的官方更新。

JDK 10引入了一些很酷的新功能,例如:

  • JEP 286: Local-Variable Type Inference: Enhance the Java Language to extend type inference to declarations of local variables with initializers.
  • JEP 307: Parallel Full GC for G1: Improve G1 worst-case latencies by making the full GC parallel.
  • JEP 310: Application Class-Data Sharing: Improve startup and footprint.
  • JEP 317: Experimental Java-Based JIT Compiler: Enable the Java-based JIT compiler, Graal, to be used as an experimental JIT compiler on the Linux/x64 platform.
  • New APIs for Collections, Strings and much more.

JDK 11被视为Oracle向Java提出新方向的起点,其中一些新功能包括:

  • JEP 323: Local-Variable Syntax for Lambda Parameters: Allow var to be used when declaring the formal parameters of implicitly typed lambda expressions.
  • JEP 330: Launch Single-File Source-Code Programs: Enhance the java launcher to run a program supplied as a single file of Java source code.
  • JEP 181: Nest-Based Access Control: Introduce nests, an access-control context that aligns with the existing notion of nested types.
  • JEP 309: Dynamic Class-File Constants: Extend the Java class-file format to support a new constant-pool form.
  • JEP 318: Epsilon: A No-Op Garbage Collector: Develop a GC that handles memory allocation but does not implement any actual memory reclamation mechanism.
  • JEP 321: HTTP Client (Standard): Standardize the incubated HTTP Client API introduced in JDK 9, via JEP 110, and updated in JDK 10.
  • JEP 333: ZGC: A Scalable Low-Latency Garbage Collector: The Z Garbage Collector, also known as ZGC, is a scalable low-latency garbage collector.
  • Inclusion of the a new Predicate, not(Predicate) to allow cool thinks like list.stream().filter(not(String::isEmpty)
  • Removal of APIs including the ones related with Java EE like java.xml and java.xm.ws.
  • And much more…

JDK 12作为每6个月交付的新模型中的第一个开始,它还具​​有出色的功能,这是JEP 346的重要亮点:

  • JEP 346: Promptly Return Unused Committed Memory from G1: Enhance the G1 garbage collector to automatically return Java heap memory to the operating system when idle.
  • JEP 325: Switch Expressions: Extend the switch statement so that it can be used as either a statement or an expression.
  • JEP 189: Shenandoah: A Low-Pause-Time Garbage Collector: Add a new garbage collection (GC) algorithm named Shenandoah which reduces GC pause times by doing evacuation work concurrently with the running Java threads.
  • JEP 344: Abortable Mixed Collections for G1: Make G1 mixed collections abortable if they might exceed the pause target.
  • And much more…

JDK 13即将发布,以下是一些已计划的功能,并且已经开始了一些很酷的项目:

  • JEP 355: Text Blocks (Preview): Included multi-line string literal that avoids the need for most escape sequences, automatically formats the string in a predictable way, and gives the developer control over format when desired.
  • JEP 354: Switch Expressions (Preview): Extend switch with the inclusion of the yield keyword.
  • Project Valhalla: Provide a venue to explore and incubate advanced Java VM and Language feature candidates.
  • Project Loom: Explore and incubate Java VM features and APIs built on top of them for the implementation of lightweight user-mode threads

At the end Simon present the Zulu JDK, a JDK made for his company as a solution for companies that want keep using JDK 8 and receive secure updates even after the Oracle stops do that.

Conclusion

It was a great talk, Simon mastered the subject and expose in a object way the main features introduced and how agility the evolving of Java will be in the next years. The model of delivery fast excited me because nice features can be introduced in JDK every 6 months while language become more fun to write and JVM more robust. I wish cloud providers can make this versions available as fast as oracle has released it. Other thing that make me happy was the ability of java to automatically return Java heap memory to the operating system when idle, this is an amazing feature. See my other post here Automatic Vertical Scaling of the Java Heap.

This post was originally released on my Blog. If you have any doubts or questions feel free to drop a comment here or reach me out on Twitter @educostadev.

from: https://dev.to//educostadev/how-java-is-evolving-with-simon-ritter-jdk-9-to-13-469m

Java如何与Simon Ritter-JDK 9到13一起发展相关推荐

  1. Java 学习(1) ---JDK安装和配置环境变量

    一,Java 开发的第一步,就是安装JDK(Java Development ToolKit  Java开发工具包) JDK 是Java开发的核心,因为它包括Java 运行环境,工具包和命令.当我们安 ...

  2. jan java c 生成 dll_Java配置----JDK开发环境搭建及环境变量配置

    [声明] 欢迎转载,但请保留文章原始出处→_→ [正文] 1.安装JDK开发环境 开始安装JDK: 修改安装目录如下: 确定之后,单击"下一步". 注:当提示安装JRE时,可以选择 ...

  3. macbook配置java环境变量_Mac系统配置JDK环境变量

    1.安装 因为并非所有用户都用得着 Java ,所以在默认状态下 OS X 不预装 Java , 如果你需要的话可以手动安装. 到 Oracle 下载最新版的 Java 8 JDK 安装,安装目录可通 ...

  4. eclipse 64位_如何安装调试 Java开发工具Eclipse和JDK环境

    JRE是个运行环境,JDK是个开发环境.因此写Java程序的时候需要JDK,而运行Java程序的时候就需要JRE.而JDK里面已经包含了JRE,因此只要安装了JDK,就可以编辑Java程序,也可以正常 ...

  5. Linux java 生效不了,linux jdk 不生效怎么办

    [摘要] 操作系统(Operating System,简称OS)是管理计算机硬件与软件资源的计算机程序.操作系统需要处理如管理与配置内存.决定系统资源供需的优先次序.控制输入设备与输出设备.操作网络与 ...

  6. Mac OS X下安装Java 7及配置Eclipse JDK

    2019独角兽企业重金招聘Python工程师标准>>> 下载mac版专用的jdk1.7,地址如下:http://www.oracle.com/technetwork/java/jav ...

  7. 导入项目报错报错Error:java: Cannot run program “D:/jdk/jdk1.7.0_67/bin/java“

    1.问题: Error:java: Cannot run program "D:/jdk/jdk1.7.0_67/bin/java" (in directory "C:\ ...

  8. Java学习之道:jdk环境变量配置方法

    JDK(Java Development Kit)是整个Java的核心,包含了Java执行环境.Java工具和Java基础类库.JDK作为JAVA开发的环境,无论是做JAVA开发还是做安卓开发,都必须 ...

  9. mac java 安装教程_MAC安装JDK详细教程

    1.下载JDK: 2.安装:选中下载的压缩包,双击安装 3.查看是否安装成功: 终端输入命令:Java -version,看到版本号即代表安装成功 4.配置环境变量: (1).打开配置文件:终端输入  ...

  10. 【Java网络编程】:JDK API实现OIO和NIO

    前言 网络编程是Java的一大难点,JDK自带的api可以实现网络编程. 我们将从一个应用程序开始我们对传输的学习,这个应用程序只简单地接受连接,然后向客户端写"Hi!",然后关闭 ...

最新文章

  1. 为什么说机器学习是预防欺诈的最佳工具?
  2. Vue:echarts的柱状图为什么X轴上的文字不显示?
  3. 多线程同步之 WaitableTimer (等待定时器对象)[续三]
  4. linux shell 编码规范
  5. vncviewer 连接到服务器授权失败的解决方法/一些常用命令
  6. 《数据结构》知识点Day_01
  7. ACM入门之【差分】
  8. centos8 配置 dns_Linux搭建DHCP+DNS+WEB服务
  9. Linux中查看正在使用的端口并强制删除占用端口
  10. python精要(73)-turtle(3)
  11. 视图可视化 后台_如何在单视图中可视化复杂的多层主题
  12. 《写给大家看的面向对象编程书》读书介绍
  13. VS Code:4个中文乱码问题及解决方法
  14. 智慧医院解决方案如何落地 智慧医院解决方案实际应用
  15. 微信PC端小程序所在位置
  16. 讯时网站管理系统通杀0DAY漏洞
  17. python填写问卷星_使用Python自动填写问卷星(pyppeteer反爬虫版)
  18. [4G5G专题-112]:部署 - LTE邻区规划、配置、自动邻区关系ANR
  19. go语言基于time.After通道超时设计和通道关闭close
  20. 视频教程-Python数据分析案例实战 视频课程-Python

热门文章

  1. 基于jQuery的图片懒加载插件
  2. 图片打包下载,本地服务器打包文件下载,及线上图片地址下载
  3. 【超简便的Python】 提取两个列表的共同元素
  4. 【最新版】贝塔智能挪车v2.5.2+前端-已测试
  5. 怎么制作表情DIY,动态GIF表情包如何制作?
  6. 根据qq宠物等级计算级别
  7. 什么是CSR证书申请文件?
  8. 如何跨网络远程操作另一台计算机,如何远程控制另一台电脑?
  9. 几个黑科技、实用网站(转自公众号:趣说软件)
  10. SIGBUS:BUS_ADRERR for stack access violation in memcpy