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将彻底改变你写代码的方式!
Java 10的10个新特性,将彻底改变你写代码的方式相关推荐
- jdk 5 到 jdk 10各个版本的新特性
jdk5 jdk10各个版本的新特性 JDK1.5新特性: 工程代号为Tiger(老虎) 自从JDK1.3开始,sun维持一个习惯,大约每隔两年发布一个JDK的主版本,以动物命名,期间发布的各个修正版 ...
- Android Q(10.0)版本新特性和兼容性适配
北京时间2019年3月14日Google正式对外发布Android Q Beta 1及预览版SDK,这意味着安卓开发者们又即将迎来一年一度的新版本适配工作了.Android Q 为开发者们带来了许多新 ...
- 5分钟学会Java 9~Java11的七大新特性
Java11 发布了,然而很多公司还在用Java 8 ,本文会简要介绍Java 9 -11 引入的新语法和API. 本地变量类型推断 Java 10 就已经引入了新关键词var,该关键词可以在声明局部 ...
- Java基础:JDK1.5新特性
1. ENUM枚举 1.1 枚举概述 枚举是指将变量的值一一列出来,变量的值只限于列举出来的值的范围内.举例:一周只有7天,一年只有12个月等. 回想单例设计模式:单例类是一个类只有一个实例 那么多例 ...
- java 事件流_JDK14的新特性:JFR,JMC和JFR事件流
JDK 14的新特性:JFR,JMC和JFR事件流 简介 Java Flight Recorder(JFR)是JVM的诊断和性能分析工具.它可以收集有关JVM以及在其上运行的Java应用程序的数据.J ...
- Java9发布回顾Java 8的十大新特性
java9已经在北京时间9月22日正式发布,开发者可以在oracle jdk官网上下载到最新的jdk9. 今天,我们先来一起复习一下2014年发布的Java 8的十大新特性.先来喝杯java~~~ 按 ...
- [转载] Java9发布回顾Java 8的十大新特性
参考链接: Java中的DoubleStream mapToObj() java9已经在北京时间9月22日正式发布,开发者可以在oracle jdk官网上下载到最新的jdk9. 今天,我们先来一起复习 ...
- JDK18 Java 18 拥有 9 个新特性
Java 开发工具包 (JDK) 18 将于 2022 年 3 月 22 日发布.新版本的标准 Java 将有九个新特性,该特性集已于 12 月 9 日冻结,进入Rampdown第一阶段 . 值得注意 ...
- JAVA 18 拥有 9 个新特性,JDK18
Oracle 正式推出Java 18,这是世界排名第一的编程语言和开发平台的最新版本.Java 18 (Oracle JDK 18) 提供了数以千计的性能.稳定性和安全性改进,包括对平台的九项增强(J ...
最新文章
- Citrix 服务器虚拟化之二十八 XenApp6.5发布文档内容
- X-007 FriendlyARM tiny4412 u-boot移植之内存初始化
- make编译过程-Android10.0编译系统(三)
- Arduino终于支持代码补全了!小白们终于可以愉快的写代码了!Arduino IDE 2.0beta功能简介...
- 2线程原语:pthread_create(),pthread_self(),pthread_exit(),pthread_join(),pthread_cancel(),pthread_detach(
- 在mac上搭建了Java 环境,谨以此文写给自己
- 离散化+树状数组求逆序数
- 亚马逊如何变成 SOA(面向服务的架构)?
- 入门案例Maven搭建SpringBoot工程
- 移动app显示远程服务器错误,KIS移动应用常见问题汇总
- 实验2 格式化输入输出和分支语句
- 基于Socket的文件传输(使用CSocket类)
- java输入方法有哪些内容_java中输入一个字符的方法有哪些
- Gantt - attachEvent事件监听 - 一个参数事件
- C++ MFC调用易语言模块
- WinAPI设置RGB背景色以及前景色
- jquery html5关系图,html5 canvas复杂人物关系图设置代码
- 巧用京东物流分享链接批量查询多个京东快递的物流信息
- 关于3.3V稳压芯片
- 工具——XML文件解析器
热门文章
- C++ 详解拷贝构造函数
- [蓝桥杯2018初赛]乘积尾零-数论
- 数据结构与算法-- 广度优先打印二叉树
- java 计算i 出现的次数_JAVA算法:按照给定的段落统计单词出现次数(JAVA代码)...
- word 中同样的字号和行距倍数,不一样的行距
- CF1479A Searching Local Minimum
- [2-sat专练]poj 3683,hdu 1814,hdu 1824,hdu 3622,hdu 4115,hdu 4421
- P8208-[THUPC2022 初赛]骰子旅行【dp】
- Loj#3026-「ROIR 2018 Day1」管道监控【Trie,费用流】
- P6097-[模板]子集卷积