Java 10的10个新特性,将彻底改变你写代码的方式

转载自 Java 10的10个新特性,将彻底改变你写代码的方式

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"关键字,也就是你可以随意定义变量而不必指定变量的类型,如:

ist <String> list = new ArrayList <String>(); Stream <String> stream = getStream();

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

var list = new ArrayList <String>(); var stream = getStream();

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

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

// 该运算符允许在没有绑定ArrayList <>的类型的情况下初始化列表
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将彻底改变你写代码的方式!


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/330877.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何评估模型的预测性能?

you can refer to 如何评估模型的预测性能&#xff1f; 一、模型评估简介 http://www2.mccombs.utexas.edu/faculty/Maytal.Saar-Tsechansky/Teaching/MIS_373/Fall2004/Model Evaluation.ppt 二、评估数据 用于模型评估的数据和用于模型训练的数据最好是两套&#xff0c;否则用…

JDK8的日期时间类1

localDateTime类 1.分类 将时间分成 localDate类【年月日]】 localTime类【时分秒】 localDateTime类【年月日时分秒】 2.localDateTime类【常用】 &#xff08;1&#xff09;构造方法 public class Demo1 {public static void main(String[] args) {//localDateTime[天时分…

Spring Boot 2.0 正式发布

转载自 重磅&#xff1a;Spring Boot 2.0 正式发布&#xff01; Spring Boot 2.0 正式发布&#xff01; 2018/03/01最新消息&#xff0c;传得沸沸扬扬的Spring Boot 2.0 正式发布了。 小编去看了下Spring Boot的官网&#xff0c;正式版本已经释放出来了&#xff01;&#xff01…

LNCS用户写作指南【 Springer Computer Science Proceedings 】

转自&#xff1a; http://blog.csdn.net/wyskys/article/details/18075471 重点是文末的参考文献格式&#xff08;主要的是 链接&#xff0c; 期刊论文&#xff0c;会议论文的引用格式&#xff09; 下載地址 &#xff1a;http://static.springer.com/sgw/documents/1121537/a…

JDK8的日期时间类2

1.localDateTime类格式化和解析 概念 &#xff08;1&#xff09;格式化:把localDateTime对象转换为String,需通过DateTimeFormatter对象指定格式 &#xff08;2&#xff09;解析:把String转换为localDateTime对象,需通过DateTimeFormatter对象指定格式 注&#xff1a;localDat…

44个Java代码性能优化总结

转载自 44个Java代码性能优化总结代码优化的最重要的作用应该是&#xff1a;避免未知的错误。在代码上线运行的过程中&#xff0c;往往会出现很多我们意想不到的错误&#xff0c;因为线上环境和开发环境是非常不同的&#xff0c;错误定位到最后往往是一个非常小的原因。然而为了…

JDK8的日期时间类3

计算两个时间的间隔 方法&#xff1a;between【静态方法】 1.获取相隔的年月日用Period调用&#xff0c;参数用LocalDate类对象封装的时间 2.获取相隔的天年月日用Duration调用&#xff0c;参数用LocalDateTime类对象封装的时间 //计算两个时间的间隔 public class Demo7 {pu…

分类算法中常用的评价指标

转自&#xff1a; 分类算法中常用的评价指标 来自网络&#xff0c;备份勿忘&#xff01; 对于分类器&#xff08;分类算法&#xff09;&#xff0c;评价指标主要有&#xff1a;1&#xff09;Precision&#xff1b;2&#xff09;Recall&#xff1b;3&#xff09;F-score;4)Accur…

Java 9 中的9个新特性

转载自 强悍&#xff01;Java 9 中的9个新特性 你可能已经听说过 Java 9 的模块系统&#xff0c;但是这个新版本还有许多其它的更新。 这里有九个令人兴奋的新功能将与 Java 9 一起发布。 Java 平台级模块系统 Java 9 的定义功能是一套全新的模块系统。当代码库越来越大&#…

处理可能发生的异常

什么是异常? 异常指的时程序在【编译】和【运行时】的一些不正常的状况。 Java的工程师其实早就想到可能会出现这些问题&#xff0c;他们把常见的问题写成类。 当我们出现这些异常时&#xff0c;可以根据API中去查找这些异常产生的原因。 ArrayIndexOutOfBoundsException: 数组…

如何评价分类模型性能?(足球荔枝)

【1】评价分类模型&#xff0c;我们一般从两个点出发 1.通过指标来评估该模型是否适合对预测对象&#xff1f; 评价指标主要有&#xff1a;1&#xff09;Precision&#xff1b;2&#xff09;Recall&#xff1b;3&#xff09;F-score;4)Accuracy;5)ROC;6)AUC[1] 2.通过计算预测…

区块链在阿里巴巴天猫中的应用

转载自 双11&#xff1a;区块链在阿里巴巴天猫中的应用 背景 天猫国际正在全面启动全球溯源计划——将利用区块链技术、药监码技术以及大数据跟踪进口商品全链路&#xff0c;汇集生产、运输、通关、报检、第三方检验等信息&#xff0c;给每个跨境进口商品打上“身份证”。这项…

这七种回归分析技术,学了不后悔

转自&#xff1a; http://dataunion.org/20514.html 什么是回归分析&#xff1f; 回归分析是一种预测性的建模技术&#xff0c;它研究的是因变量&#xff08;目标&#xff09;和自变量&#xff08;预测器&#xff09;之间的关系。这种技术通常用于预测分析&#xff0c;时间序列…

单双列集合总述

Collection[单列集合]接口 有List 和 Set子接口 和Map接口[双列集合]并列 **1.**List接口 实现类:ArrayList 和 LinkedList &#xff1b;特点:有序,可重复,有对索引的增删改查相对操作的方法 a.ArrayList:底层为数组 查询快[根据地址和索引查找],增删慢 b.LinkedList:底层为链…

Java正确获取客户端真实IP方法整理

转载自 干货&#xff1a;Java正确获取客户端真实IP方法整理在JSP里&#xff0c;获取客户端的IP地址的方法是&#xff1a;request.getRemoteAddr()&#xff0c;这种方法在大部分情况下都是有效的。但是在通过了Apache&#xff0c;Squid等反向代理软件就不能获取到客户端的真实IP…

机器学习性能评估指标(综合性总结)

转自&#xff1a;http://charleshm.github.io/2016/03/Model-Performance/ 分类 混淆矩阵1 True Positive(真正, TP)&#xff1a;将正类预测为正类数.True Negative(真负 , TN)&#xff1a;将负类预测为负类数.False Positive(假正, FP)&#xff1a;将负类预测为正类数 → 误报…

单列集合List的实现类

List接口 [Collection】的子类 1.ArrayList【查询快&#xff0c;增删慢】 &#xff08;1&#xff09;ArrayList常见方法【部分】 //list[Collection的子类,也是接口],ArrayList也是其实现类 public class Demo2 {public static void main(String[] args) {List<String>…

8张图带你轻松温习Java知识

转载自 8张图带你轻松温习Java知识 1 字符串不变性 下面这张图展示了这段代码做了什么 [code ]String s "abcd"; s s.concat("ef");[/code] 2 equals()方法、hashCode()方法的区别 HashCode被设计用来提高性能。equals()方法与hashCode()方法的区别在…

Linux的安装及管理程序

一、如何在linux安装卸载软件 1. 编译安装 灵活性较高 难度较大 可以安装较新的版本 2. rpm安装&#xff08;redhat&#xff09; linux 包安装 查软件信息&#xff1a;是否安装&#xff0c;文件列表 rpm 软件名 3. yum yum是RPM升级版本&#xff0c;解决rpm的弊端 安装软件 首…

机器学习评价指标大汇总

转自&#xff1a; http://www.zhaokv.com/2016/03/ml-metric.html 在使用机器学习算法的过程中&#xff0c;针对不同场景需要不同的评价指标&#xff0c;在这里对常用的指标进行一个简单的汇总。 &#xff08;分类和拟合的评价指标&#xff0c;正好应用到本人的论文中&#xff…