有用的新特性:
ZGC
明星产品,主打招牌,让你的代码0改动,性能提升1万倍。GC的stop the world时间为 10ms。
ZGC: avg 1.091ms max: 1. 681ms
G1: avg 156.886ms max: 543.846ms
用法:-XX:+UnockExperimentalVMOptions -XX:+UseZGC,因为ZGC还处于实验阶段,所以需要通过JVM参数来解锁这个特性。
- 但目前只是实验性产品,不建议应用生产。如果生产上的机器没有T级别的内存也没必要用。所以JDK11 可以不升级了。
- JDK11支持指定不适用GC,这个可在压力测试使用。排除GC干扰。比如1G内存,预期通过,但实际炸了,就有内存风险。当然生产上禁用。
- ZGC只支持64位操作系统。
免费的G1并行fullGC功能
这个功能以前是商业版的,现在放出来可以白嫖了。对fullGc有很大的提升。
在DOCKER中运行更加完美支持
让JAVA知道自己在docker里面运行,对内存和CPU的资源控制都比以前好。这个是JDK11的改进。
JFR 飞行记录仪
以前是收费的,现在可以白嫖了。可以通过命令开启和停用产生分析文件。然后用JDK12的工具可以打开分析。另外,阿里有Arthas可以用。
没啥用的特性:
JSHELL
可用命令行写JAVA,大家都用idea写代码。实战没啥用。
var
就是个语法糖,看得懂代码就行,实战没啥用。
工具新API
多数实战没啥用,强烈建议用hutool代替,中文API社区可查简单好用。新方法可以了解,看得懂就行。
- JDK 8 有 Stream.iterate(1,t->(2t)+1) 输出 1 3 7 15 … 无限直到int 爆掉变-1
JDK11有 Stream.iterate(1,t->,t<20,t->(2t)+1),中间多了个参数,输出 1, 3,7,15 没了。可以限制数量。实战没啥用,生个奇数玩算法? - Optional x = Optional.ofNullable(null)有点用,可以兼容空指针。是jdk11多出来的方法。orElseThrow还能抛异常。对空指针的处理,有更多的选择。
- 字符串"A\nB\nC".lines = 3,“Java”.repeat(3) = “JavaJavaJava” 稍微有点用,了解即可。
HTTP客户端
HttpClient 有 send 和 sendAsync同步和异步两个方法有用。类似的Hutool也有。但异步的hutool没有。
废弃的项
- PACK200废弃,用来压缩JAR。现在网络提升了,就没必要,还要解压,额外开销。
- JavaScript集成废弃,前后端分离谁用这,让老板多招一个前端吧。
- java hello.java 直接执行是允许的。 但只会找第一个类的main方法。 不会生产class文件。实战没啥用。
Unicode10
增加了8518 个字符,有emoj表情。特殊场景有用。

被折叠的 条评论
为什么被折叠?



