Java 9才发布几个月,很多玩意都没整明白,现在Java 10又要来了。。

这时候我真尼玛想说:线上用的JDK 7 甚至JDK 6,JDK 8 还没用熟,JDK 9 才发布不久不知道啥玩意,JDK 10……

刚学Java的同学是不是感觉一脸蒙逼?!!!

就连我这个老司机也同样感觉如此!

Java 更新越来越快,我们做技术的也要跟上步伐,不然总会慢别人一拍,这新东西从国外到国内应用一般要好几年的时间,如果我们提前了解并应用这些新技术对自己不是坏事。

Java 10的新特性

说了这么多,看Java 10都会有哪些特性来改变我们写代码的方式呢?!

1.局部变量类型推断

局部变量类型推断可以说是Java 10中最值得注意的特性,这是Java语言开发人员为了简化Java应用程序的编写而采取的又一步,如下图所示。

这个新功能将为Java增加一些语法糖 - 简化它并改善开发者体验。新的语法将减少与编写Java相关的冗长度,同时保持对静态类型安全性的承诺。

局部变量类型推断将引入”var”关键字,也就是你可以随意定义变量而不必指定变量的类型,如:

  1. List <String> list = new ArrayList <String>();

  2. Stream <String> stream = getStream();

将被下面这个新语法所取代:

  1. var list = new ArrayList <String>();

  2. var stream = getStream();

看完是不是有点JS的即视感???越来越像JS了吗?!虽然类型推断在Java中不是一个新概念,但在局部变量中确是很大的一个改进。

说到类型推断,从JDK 5引进泛型,到JDK 7的”<>”操作符允许不绑定类型而初始化List,再到JDK 8的Lambda表达式,再到现在JDK 10的局部变量类型推断,Java类型推断正大刀阔斧的向前发展。

  1. // 该运算符允许在没有绑定ArrayList <>的类型的情况下初始化列表

  2. List <String> list = new LinkedList <>();

局部变量类型推荐仅限于如下使用场景:

  • 局部变量初始化

  • for循环内部索引变量

  • 传统的for循环声明变量

Java官方表示,它不能用于以下几个地方:

  • 方法参数

  • 构造函数参数

  • 方法返回类型

  • 字段

  • 捕获表达式(或任何其他类型的变量声明)

2.GC改进和内存管理

JDK 10中有2个JEP专门用于改进当前的垃圾收集元素。

第一个垃圾收集器接口是(JEP 304),它将引入一个纯净的垃圾收集器接口,以帮助改进不同垃圾收集器的源代码隔离。

预定用于Java 10的第二个JEP是针对G1的并行完全GC(JEP 307),其重点在于通过完全GC并行来改善G1最坏情况的等待时间。G1是Java 9中的默认GC,并且此JEP的目标是使G1平行。

3.线程本地握手(JEP 312)

JDK 10将引入一种在线程上执行回调的新方法,因此这将会很方便能停止单个线程而不是停止全部线程或者一个都不停。

4.备用内存设备上的堆分配(JEP 316)

允许HotSpot VM在备用内存设备上分配Java对象堆内存,该内存设备将由用户指定。

5.其他Unicode语言 - 标记扩展(JEP 314)

目标是增强java.util.Locale及其相关的API,以便实现语言标记语法的其他Unicode扩展(BCP 47)。

6.基于Java的实验性JIT编译器

Oracle希望将其Java JIT编译器Graal用作Linux / x64平台上的实验性JIT编译器。

7.根证书(JEP 319)

这个的目标是在Oracle的Java SE中开源根证书。

8.根证书颁发认证(CA)

这将使OpenJDK对开发人员更具吸引力,它还旨在减少OpenJDK和Oracle JDK构建之间的差异。

9.将JDK生态整合单个存储库(JEP 296)

此JEP的主要目标是执行一些内存管理,并将JDK生态的众多存储库组合到一个存储库中。

10.删除工具javah(JEP 313)

从JDK中移除了javah工具,这个很简单并且很重要。

Java 10尝鲜

就像所有其他JDK版本一样,Oracle已经发布了一个Java 10初始候选版本,Java开发者可以下载此版本用来测试新功能。如果你对Java 10抱有期待想提早尝试,那么现在就开始吧!

尝鲜地址:http://openjdk.java.net/projects/jdk/10/

最后的一点想法

对于第一点新特性来说确实是一个大的跨越,其他特性或多或少都能带给开发者福音。但最终Java 10会是什么样,或许还会增加更多实用性的新功能或者优化,我们还得期待!

现在要做的就是,赶紧熟悉JDK 8,现在已经是很多互联网企业标配了。如果还在使用JDK4-7,那真的是要OUT了。。

在不久的将来,Java 10将彻底改变你写代码的方式!

本文来自一Java大牛朋友的公众号,大家可以关注一下

JAVA10 十大特性相关推荐

  1. ES6的十大特性和认知

    ---恢复内容开始--- ES6(ECMAScript2015)的出现,无疑给前端开发人员带来了新的惊喜,它包含了一些很棒的新特性,可以更加方便的实现很多复杂的操作,提高开发人员的效率. 本文主要针对 ...

  2. 华为的鸿蒙os,鸿蒙OS明天正式发布,十大特性,能拯救暴跌80%的华为手机吗?...

    上周二,华为正式对外宣布,研发两年多的鸿蒙 OS 将于 6 月 2 号,也就是明晚八点正式发布. 华为表示,发布会上不仅会推出「华为WATCH 3.华为 MatePad Pro」等多款搭载鸿蒙 OS ...

  3. 在 44186 款开源软件中搜索 前端开发者不得不知的 ECMAScript 6 十大特性 oschina 2016年03月16日 前端开发者不得不知的 ECMAScript 6 十大特性

    http://www.oschina.net/news/71566/es6-developers-will-have-to-know ES6(ECMAScript2015)的出现,无疑给前端开发人员带 ...

  4. 鸿蒙os上海交大教授,等了两年,鸿蒙OS明天发布,十大特性抢先看!

    上周二,华为正式对外宣布,研发两年多的鸿蒙 OS 将于 6 月 2 号,也就是明晚八点正式发布. 华为表示,发布会上不仅会推出「华为WATCH 3.华为 MatePad Pro」等多款搭载鸿蒙 OS ...

  5. 鸿蒙能用安卓app吗,鸿蒙OS明天正式发布,十大特性,能拯救暴跌80%的华为手机吗?...

    上周二,华为正式对外宣布,研发两年多的鸿蒙 OS 将于 6 月 2 号,也就是明晚八点正式发布. 华为表示,发布会上不仅会推出「华为WATCH 3.华为 MatePad Pro」等多款搭载鸿蒙 OS ...

  6. 鸿蒙手机的特点,鸿蒙OS明天正式发布,十大特性,能拯救它暴跌80%的手机市场吗?...

    上周二,华为正式对外宣布,研发两年多的鸿蒙 OS 将于 6 月 2 号,也就是明晚八点正式发布. 华为表示,发布会上不仅会推出「华为WATCH 3.华为 MatePad Pro」等多款搭载鸿蒙 OS ...

  7. 前端开发者不得不知的ES6十大特性

    ES6(ECMAScript2015)的出现,无疑给前端开发人员带来了新的惊喜,它包含了一些很棒的新特性,可以更加方便的实现很多复杂的操作,提高开发人员的效率. 本文主要针对ES6做一个简要介绍. 主 ...

  8. 非华为手机可以用鸿蒙吗,鸿蒙OS今晚发布,十大特性,能拯救暴跌80%的华为手机业务吗?...

    原标题:鸿蒙OS今晚发布,十大特性,能拯救暴跌80%的华为手机业务吗? 上周二,华为正式对外宣布,研发两年多的鸿蒙 OS 将于 6 月 2 号,也就是今晚八点正式发布. 华为表示,发布会上不仅会推出「 ...

  9. Java语言十大特性

    作者简介:笔名seaboat,擅长工程算法.人工智能算法.自然语言处理.计算机视觉.架构.分布式.高并发.大数据和搜索引擎等方面的技术,大多数编程语言都会使用,但更擅长Java.Python和C++. ...

最新文章

  1. 用Rhino V7建造机甲学习教程 Building a Mecha using Rhino V7
  2. 鸿蒙推送升级包,华为鸿蒙系统已陆续推送!安卓可无缝升级,升级包容量高达6GB...
  3. Android中/system/build.prop文件解读
  4. c语言构造满二叉树,递归创建二叉树c语言实现+详细解释
  5. java领域对象_java的几种对象(po,dto,dao等)
  6. 如何在Chatbot中应用深度学习
  7. c# 基于layui的通用后台管理系统_【SpringBoot】三十三、SpringBoot+LayUI后台管理系统开发脚手架...
  8. mysql show timestamp_mysql中 datatime与timestamp的区别说明
  9. 使用pv命令限制SQL文本导入速度
  10. django mysql 2006_Django (2006, 'MySQL server has gone away') 本地重现与解决
  11. UI组件库从1到N开发心得-组件篇
  12. 用php写一个可以抽取随机数的工具一次只抽四个怎么实现?_面试了一个32岁的程序员,场面一度很尴尬。...
  13. Request的学习笔记(属Servlet学习课程)
  14. Google AJAX 搜索 API
  15. c:\program files\microsoft visual studio\vc98\mfc\include\afxv_w32.h(14) : fatal error C1189:
  16. 一个销售精英拜访客户的6大绝招,胜过10次培训,实用!
  17. notebook pip install 只有星号_每日一点,带你入门Python-星号拆包
  18. Java文件如何用qq邮箱发送_java中怎么发送复杂的邮件?在QQ邮箱中怎么操作?
  19. 2017年 Java 程序员,风光背后的危机
  20. java框架_2020年到了,你需要掌握的9大顶级Java框架

热门文章

  1. 模块设计之“模块”与“模块化”
  2. 在安卓模拟器中,adb安装apk常见错误
  3. i2c总线注意事项和在linux下使用实战
  4. 蔡徐坤团队获得”微博年度最佳团体“!vivo X23幻彩版却实力抢眼
  5. nginx unit
  6. python 魔法方法之:__getitem__ __setitem__ __delitem__
  7. asp.net Core 中间件Hello world
  8. 新手入门:史上最全Web端即时通讯技术原理详解
  9. 听云CTO访谈:解读现代应用性能管理(APM)技术
  10. 使用cisco pt 6.0模拟NAT,PAT