Java新特性(1):Java 9和Java10(java 1-0.9)

createh53个月前 (02-01)技术教程36

您好,我是湘王,这是我的头条号「湘王说」,欢迎您来,欢迎您再来~


自从Java在2009年被Oracle收购之后,就不再开源,除了Oracle官方发布的版本之外,还有OpenJDK版本,这两者的区别可以自行找某度去搞明白。对于没有几千万用户的应用来说,OpenJDK已经足够了,即使是一些大厂,内部系统用OpenJDK也足够了。

从Java 8开始,整个JDK就一直在致力于不断改进,不断融合新的开发特性。Java目前始终保持前向兼容,所以如果有新的稳定版JDK出来,就可以立即使用新的JDK,尝试一些新特性,而不必担心不兼容的问题(可能个别地方有改动,但对个人及小型开发来说可以忽略不计)。

先做一些名词解释:

1、JEP:Java Enhancement Proposals,Java增强提案。

2、JSR:Java Specification Requests的缩写,意思是Java规范提案,是指向JCP(Java Community Process)提出新增一个标准化技术规范的正式请求。

3、CSR:是Compatibility & Specification Review的缩写,也就是兼容性和特征检视。

4、?标记:是那些未在官方JEP中列出,但明确在该版本Java API中具有,而前一版本API没有的特性。

先来看看Java9增加一些特性:



Java9主要的改进包括模块系统(261)、JShell(222)、日志集成(264)、弃用GC组合(214)、统一JVM日志(158)、统一GC日志(271)、集合工厂方法(269)、G1作为默认GC(248)、废弃CMS GC(291)、Http 2 Client(110)、私有接口方法(?)、Stream API(?)、Flow API(?)等。

其中,模块系统、JShell完全是鸡肋,可以忽略;

日志集成基本上也不会用Java自带的,跳过;

关于GC的后面会说,这里跳过;

Http 2 Client在后续Java10及更高版本中又有改进,Java9中的语法基本被废弃,所以可以先不看;

Flow API其实也是鸡肋,在外部MQ如此强大的情况下,没有人会用Java自带的Pub-Sub。

所以总结说起来,Java9真正比较有用的就是集合工厂方法、私有接口方法和Stream API了。

在Java9以前创建集合的时候,是这么干的:



而Java9就开始偷懒了:



Java8一个接口中能定义如下几种变量/方法:

1、常量

2、抽象方法

3、默认方法

4、静态方法

Java9又增加了两种:

1、私有方法

2、私有静态方法

可以敲代码试试看:



基于Java8的流式编程,Java9又增加了几个方法:takeWhile、dropWhile、iterate和ofNullable。来看看代码:



相比较于Java 9,Java10的特性少了很多:



比较有意思的就是增加了一个叫做var的关键字(向Javascript学习吗?Java也想长个script的尾巴?)





虽然多了var这个关键字,但我想真正习惯这种用法的人毕竟还是少数吧。而且对于大多数码农来说,如果在接手的系统中看到这种「新式」代码,可能会有点懵。至于其他新增的特性,基本都是鸡肋。





感谢您的大驾光临!咨询技术、产品、运营和管理相关问题,请关注后留言。欢迎骚扰,不胜荣幸~

我在头条

相关文章

Java:在Java中使用私有接口方法(java私有的)

  接口是定义一组方法及其签名的契约, 它可以由任何类及其在该类中实现的方法进行扩展。从Java9 开始,你可以在接口中使用私有方法。  由于私有方法只能在定义它的接口内访问,因此你可以利用这些方法编...

思考:Java对象之生(java中对象的概念的理解)

内存、性能是程序永恒的话题,实际开发中关于卡顿、OOM也经常是打不完的两只老虎,关于卡顿、OOM的定位方法和工具比较多,这篇文章也不打算赘述了,本章主要是来整理一下JVM的内存模型以及Java对象的生...

java匿名内部类的定义以及使用场景

匿名内部类定义 匿名内部类是Java中一种没有显式声明名称的内部类。它们在创建时被同时声明和实例化,通常用于创建一次性使用的类。它们的特点是:无名称: 无法像普通类一样被其他代码引用。一次性: 通常只...

Java设计模式-单例模式(java单例模式原理)

单例模式定义:它确保一个类只有一个实例,并提供一个全局访问点来访问该实例。单例模式主要分为两大类:饿汉式和懒汉式,懒汉式又分为 单线程下的普通懒汉式,多线程下的双重校验锁、静态内部类、枚举。单例模式的...

java的53个关键字(含2个保留字)第一篇

1.java的关键字(keyword)有多少个? 51+2个保留字=53个关键字(java的关键字都是小写的!!)2.java的保留字(reserve word)有多少个?问题:分别是什么? 1).c...

做开发这么久了,还不会搭建服务器Maven私有仓库?这也太Low了吧

大家好,我是冰河~~最近不少小伙伴想在自己公司的内网搭建一套Maven私服环境,可自己搭建的过程中,或多过少的总会出现一些问题,问我可不可以出一篇如何搭建Maven私服的文章。这不,就有了这篇文章嘛。...