点击上方"IT牧场",选择"设为星标"

技术干货每日送达!

作者:程序员java耕耘者

来源:https://urlify.cn/32aaEf

目前最新JDK 11,Oracle会一直维护到2026年。

# Java11的新特性

1、更新支持到Unicode 10编码

Unicode 10(version 10.0 of the Unicode Standard),Unicode是一个不断在演进的行业标准,Java一直在与它保持一致兼容。

Java8已经更新了Unicode8.0-9.0,Java10更新后将达到16018个characters、18种blocks和10种scripts。

2、将Http Client作为JDK标准发布、

原来作为jdk补充的http类放在jdk.incubator.http包中,现在统一改到java.net.http包下,核心类有下面4个。

  • HttpClient

  • HttpRequest

  • HttpResponse

  • WebSocket

HttpClient client = HttpClient.newBuilder().version(HttpClient.Version.HTTP_1_1).connectTimeout(Duration.ofSeconds(3)).build();HttpRequest request = HttpRequest.newBuilder().uri(URI.create("http://www.baidu.com")).build();
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.statusCode()); // 200
System.out.println(response.body()); // 百度页面的html

3、新增优化很多方法

  • java.util.Collection增加新方法toArray(IntFunction),集合转数组的不二之选。

  • String增加lines\stripLeading\stripTrailing等,一般项目都有StringUtils类。

  • java.io.InputStream增加构造方法

  • java.nio包下面很大类扩展了方法Channels\XXXBuffer等

4、支持动态分配 Compiler Threads

JVM启动参数新增-XX:+UseDynamicNumberOfCompilerThreads,动态的控制编程线程的数量,原来的编译线程默认会启动大量造成cpu和memory浪费。

5、GC能力大幅提升

低功耗可扩展GC(ZGC)模块是一个试验性的并发GC,在线程执行是ZGC会做一些重型回收工作,如string表清理等。执行周期在10ms内,处理heaps大小从MB到TB范围,目前只能支持linux和x64系统,除此外还有个处理memory分配的Epsilon GZ,有兴趣的可以自己研究。

6、堆分析能力提升:JVMTI

提供了一个低负载的堆分配采集分析程序:JVMTI,默认启动方案可以持续工作且不造成服务器压力,面向接口编程,能够收集活着和死去的对象信息。

7、Transport Layer Security 1.3更新

简称TLS1.3是网络传输层协议,需要注意的它不兼容历史版本而且官方承认有风险,希望后续能不断优化。

8、嵌套访问控制

嵌套是一种访问控制上下文,它允许多个class同属一个逻辑代码块,但是被编译成多个分散的class文件,它们访问彼此的私有成员无需通过编译器添加访问扩展方法。

例子:

/*** @author: Owen Jia* @time: 2019/11/7*/
public class NestBasedTest {public static class Nest1 {private int varNest1;public void f() throws Exception {final Nest2 nest2 = new Nest2();//这里没问题nest2.varNest2 = 2;final Field f2 = Nest2.class.getDeclaredField("varNest2");//下面代码在java 8环境下会报错,但在java 11中是没问题的f2.setInt(nest2, 1);System.out.println(nest2.varNest2);}}public static class Nest2 {private int varNest2;}public static void main(String[] args) throws Exception {new Nest1().f();}
}
这里要提一下Class类新增的方法:
// 获取宿主类。非嵌套类的宿主类是它本身。
public Class<?> getNestHost()
// 判断该类是否是某个类的嵌套类
public boolean isNestmateOf(Class<?> c)
// 返回某个类的嵌套类数组。第 1 个固定是宿主类,之后的是该宿主类的嵌套成员,但不保证顺序,同时也会包含自身
public boolean isNestmateOf(Class<?> c)
9、新增和优化诸多加密算法

对PKCS#1 v2.2内提供更多算法,如RSASSA-PSS签名算法。同时新增ChaCha20和Poly1305密码算法,通过Cipher.getInstance使用。还有 Curve25519和Curve448被添加。AES128和265也支持了Kerberos 5 encryption。

10、本地参数支持Lambda

简单理解就是lambda表达式的变量申明可以用var。

lst.forEach((var x) -> {System.out.print(x);
});
11、单java文件加载运行

单个的*.java文件可以直接用java命令来执行,格式:java HelloWorld.java。

12、飞行记录器分析工具

Jvm启动参数:-XX:StartFlightRecording

Java11中将这款原来商用的工具集成到jdk标准中了,它是一种低开销的事件信息收集框架,用来对应用程序和JVM 进行故障检查、分析,收集应用程序、JVM 和 OS的数据并保存在单独的事件记录文件中,故障发生后,能够从事件记录文件中提取出有用信息对故障进行分析。

更多其他能力

还有很多其他更新就不一一介绍了,这些都是JDK标准包支持的基础能力,得感谢Oracle持续对JDK发布的支持。完整的jdk11变化清单可以去官网查看;

从11开始移除的模块清单

  • Removal of com.sun.awt.AWTUtilities Class

  • Removal of Lucida Fonts from Oracle JDK

  • Removal of appletviewer Launcher

  • Oracle JDK's javax.imageio JPEG Plugin No Longer Supports Images with alpha

  • Removal of sun.misc.Unsafe.defineClass

  • Removal of Thread.destroy() and Thread.stop(Throwable) Methods

  • Removal of sun.nio.ch.disableSystemWideOverlappingFileLockCheck Property

  • Removal of sun.locale.formatasdefault Property

  • Removal of JVM-MANAGEMENT-MIB.mib

  • Removal of SNMP Agent

  • Remove the Java EE and CORBA Modules

  • Removal of JavaFX from the Oracle JDK

  • Removal of JMC from the Oracle JDK

  • Removal of Java Deployment Technologies

更多请查看官网

# 升级建议(重要)

从Java 11后Oracle不再单独发布JRE和Server JRE了,并统一JDK名称为:Oracle JDK。

另外Java 11及之后的版本,将不会再发布对32位操作系统支持的版本。

# 新旧项目不同策略

新启的Java项目建议直接从Oracle JDK 11开始搭建,千万不要犹豫,因为技术都是越新越强的。Java8就像晚期的大众,而Java11却是新兴的特斯拉。

历史的项目如果只是维护的话,干脆就放着运行不要动好了,等哪天决定重构了再考虑升级到Java11。因为最大的问题不是自己公司开发的Code不能迁移到高版本,而是项目中引入的第三方Jar,这个东西搞起来十分头疼。

# JDK升级分析工具

升级最担心的就是被删除的模块!

推荐IBM公司Liberty团队提供了一个十分好用的检测Toolkit程序,可以扫描应用程序二进制文件(.war),发现的任何潜在的Java 11问题并生成Html报告。绝对的大利器,详细内容直接查看IBM官方介绍:Scanner Kit。

直接运行java -jar binaryAppScannerInstaller.jar,按步骤安装有个lisence声明和目录指定,默认目录名wamt

参考文档中会有使用详细介绍,也可以参考下面测试例子(扫描很慢,要些耐心等):

java -jar binaryAppScanner.jar Root.war --analyzeJavaSE --sourceJava=oracle8 --targetJava=java11 --output=./java11/RootReport.html

查看帮助命令:

java -jar binaryAppScanner.jar Root.war --help --all

报告结果如下:

# JDK不同于OpenJDK

推荐Oracle JDK,因为更加稳定可靠。

  • 只有Oracle JDK支持Solaris系统;

  • 只有Oracle JDK才支持msi这样的安装程序;

  • Oracle JDK版本将每三年发布一次,而OpenJDK版本每三个月发布一次;

  • OpenJDK 是一个参考模型并且是完全开源的,而Oracle JDK是 OpenJDK的一个实现,并不是完全开源的;

  • Oracle JDK 比 OpenJDK 更稳定。OpenJDK和Oracle JDK的代码几乎相同,但建议您选择Oracle JDK,因为它经过了彻底的测试和稳定修复;

  • 在响应性和JVM性能方面,Oracle JDK与OpenJDK相比提供了更好的性能;

  • Oracle JDK不会为即将发布的版本提供长期支持,用户每次都必须通过更新到最新版本获得支持来获取最新版本;

  • Oracle JDK根据二进制代码许可协议获得许可,而OpenJDK根据GPL v2许可获得许可。Oracle公司很善于打官司,所以这点很重要。

你会升级到JDK14吗?欢迎在留言区讨论。

干货分享

最近将个人学习笔记整理成册,使用PDF分享。关注我,回复如下代码,即可获得百度盘地址,无套路领取!

•001:《Java并发与高并发解决方案》学习笔记;•002:《深入JVM内核——原理、诊断与优化》学习笔记;•003:《Java面试宝典》•004:《Docker开源书》•005:《Kubernetes开源书》•006:《DDD速成(领域驱动设计速成)》•007:全部•008:加技术讨论群

近期热文

•如何提高服务器并发处理能力?•太神奇的 SQL 查询经历,group by 慢查询优化!•SpringBoot+RabbitMQ ,保证消息100%投递成功并被消费(附源码)•Java 并发异步编程,原来十个接口的活现在只需要一个接口就搞定!•初探性能优化--2个月到4小时的性能提升!•关于数据库分库分表的一切都在这里了。


想知道更多?长按/扫码关注我吧↓↓↓>>>技术讨论群<<<喜欢就点个"在看"呗^_^

老表:Java8尽管很香,你想过升级到Java11吗?会踩那些坑?相关推荐

  1. 老表:Java8尽管很香,你想过升级到Java11吗?会踩那些坑?下

    接上篇 升级建议(重要) 从Java 11后Oracle不再单独发布JRE和Server JRE了,并统一JDK名称为:Oracle JDK. 另外Java 11及之后的版本,将不会再发布对32位操作 ...

  2. Java8很香但还是想升级到Java11,教你怎么从Java8升级到Java11

    Java11的新特性 1.更新支持到Unicode 10编码 Unicode 10(version 10.0 of the Unicode Standard),Unicode是一个不断在演进的行业标准 ...

  3. 截取小数点_五年级上册系列| 小数点位置变化名师微课+课本+学案,暑假预科,很香!...

    点击蓝字关注我们 李艳玲工作室微课展播[总142期] 主讲教师:徐素平 电子课本 学 案 小数乘法 [学习目标] 1.熟练掌握小数点的移动引起小数大小变化的规律,并能举一反三,灵活运用. 2.自主探索 ...

  4. 洛克人html5,《洛克人Zero/Zx合集》:跳票冷饭,与预期有差但依旧很香

    前言 洛克人系列,卡普空旗下经典IP之一,一直都是以高难度著称,相信很多90后玩家的童年都有游玩洛克人的经历.从18年发布的洛克人11,整个系列发展有30余年,洛克人元组系列.X系列的合集早已上线St ...

  5. 电子垃圾也很香 篇一:垃圾佬捡个路由器1:选择与刷机

    电子垃圾也很香 篇一:垃圾佬捡个路由器1:选择与刷机 前言 最近丈母娘总是抱怨家里的路由器不好用,总是动不动就断网.丈母娘的需求必须得满足啊,目前丈母娘家用的是tp的wr740n垃圾路由器,立马着手准 ...

  6. 苹果6能解掉id锁吗_起底闲鱼上的苹果游戏机,400块的苹果8很香,但并不建议购买...

    一直以来,苹果手机的A系列芯片的性能一直是傲视群雄的,但是苹果手机高昂的售价使得许多手头比较紧的高性能玩家望而却步.但是最近闲鱼上很火的廉价苹果游戏机满足了许多玩家对于高性能手机的需求,搭载强劲A11 ...

  7. springboot研究九:lettuce连接池很香,撸撸它的源代码

    个人公众号:jinjunzhu 目录 springboot中lettuce配置 lettuce初始化 使用netty创建连接 管理连接 actuator健康检查获取连接 释放不掉的连接 共享连接 总结 ...

  8. Windows 的这款工具,有时让我觉得 Mac 不是很香

    你有一个思想,我有一个思想,我们交换后,一个人就有两个思想 If you can NOT explain it simply, you do NOT understand it well enough ...

  9. 微服务很香--麻辣味,但要慢慢消化

    前言 微服务在编程圈火的是不行不行的啦,可能还有很多小伙伴还没有进行微服务实操,但这个词,要说没听过.没看过,那小伙伴一定是假Programmer. 虽然微服务很火,但不能盲目使用:先不说涉及技术和工 ...

最新文章

  1. Win7系统分区(C盘)扩容的一种可行的解决方案
  2. hdu 1286 找新朋友 欧拉函数模版题
  3. ad19电气规则检查_PROTEL DXP电气规则检查
  4. c/c++教程 - 2.4.2.7~8 类对象作为类成员,static静态成员变量函数
  5. (转)Windows Form Application 读取并修改App.config文件
  6. Python3 列表
  7. nmap 扫描常见端口——命令
  8. 域名转移:以腾讯云转至阿里云为例
  9. Java网络编程笔记(三):点对点通信(Socket基于TCP协议)
  10. OTU的定义与解读----了解笔记
  11. 学生用计算机的按键名称,哪个键是空格?详细说明各种计算机按键[图形]的名称和功能...
  12. 简单五子棋(单机版-C)
  13. Python处理PDF神器PyMuPDF的安装与使用
  14. vip会员开通续费html页面
  15. xSSD: DSSD,FSSD,ESSD,MDSSD,fireSSD
  16. linux系统中软盘的名称,linux中软盘的使用
  17. 上海社保查询 最强攻略
  18. 计算机中 递归 的概念,递归是什么?关于递归的详细介绍
  19. 在硅谷,人生的可能性不只有 996
  20. 分享1个超全面的 Python爬虫 接单实例!

热门文章

  1. 小甲鱼 S1E21:指针作业部分学习总结
  2. [英语单词] inside-out
  3. Selenium自动化测试面试题全家桶
  4. 一篇介绍LSTM的博客,写的很好
  5. hadoop配置文件core-site.xml
  6. Dig-域名解析工具使用
  7. 悬臂式货架一般采用两种材料制作:
  8. Linux中wait()函数
  9. RP Fiber Power特征
  10. 端口号不一致java_java – 连接到sql server时端口号不正确