Java 9 中引入了模块的概念,默认情况下,Java SE中将不再包含java EE 的Jar包。
(在 java 6/7 / 8 时关于这个API 都是捆绑在一起的)

Java版本号表示方法的不同来由:
2004.9.30 发布了 J2SE 5.0。为什么这个版本命名和前面几个版本不一样呢?这个版本原本计划以 1.5 命名的,沿用以前的命名方式。但是为了更好的反映这个版本的成熟度,所以改名为 5.0。

这个版本以后,有了一个新的版本控制系统,5.0 用来表示产品版本,用来表示稳定的 J2SE 版本,而 1.5.0 用来表示开发者版本,也就是 Java 5.0 = JDK 1.5.0。

2006.12.11,J2SE 改名为 Java SE,版本号去掉了 .0。此后对应版本就是 Java 6 = JDK 1.6,Java 7 = JDK 1.7。

Java8 版本新增主要特性

  1. Lambda 和 函数式接口
    极大的减少代码量,代码看起来更清爽。
    函数式接口就是有且仅有一个抽象方法,但是可以有多个非抽象方法的接口。可以隐式转化为 Lambda 表达式。
  2. 方法引用
    通过方法引用,可以使用方法的名字来指向一个方法。使用一对冒号来引 “::” 用方法

Java9 版本新增主要特性

  1. Jigsaw 模块系统
    在 Java 9 以前,打包和依赖都是基于 JAR 包进行的。JRE 中包含了 rt.jar,将近 63M,也就是说要运行一个简单的 Hello World,也需要依赖这么大的 jar 包。在 Java 9 中提出的模块化系统,对这点进行了改善。
    关于模块化系统具体可以看看这篇文章
  2. JShell REPL
    Java 9 提供了交互式解释器。有了 JShell 以后,Java 终于可以像 Python,Node.js 一样在 Shell 中运行一些代码并直接得出结果了。

Java10 版本新增主要特性

  1. 新增局部类型推断 var
    var a = “aa”; System.out.println(a);
    var 关键字目前只能用于局部变量以及 for 循环变量声明中。
  2. 统一的垃圾回收接口,改进了 GC 和其他内务管理
    Java11 版本新增主要特性
  3. Lambda 中使用 var
  4. java 直接编译并运行,省去先 javac 编译生成 class 再运行的步骤

转载自个人博客:https://fusangjie.club/