一直用的 jdk8,想学习一下 jdk11 的新特性. 1.jdk8 升级到 jdk11 性能提升大吗? 2.jdk8 升级到 jdk11 需要做哪些操作,改动的点? 3.jdk9 中的模块化拆包如何运用到真实的商业项目中
1
hihanley 2021-01-07 13:51:03 +08:00
同样想了解
|
2
hantsy 2021-01-07 13:55:27 +08:00
商业项目有什么,我可以帮升到 15 。
|
3
echo1937 2021-01-07 14:22:04 +08:00
用 JDK15 跑了一下用 JDK8 开发的项目,啥问题也没发现,挺意外的。
明年下半年一定要把开发环境迁移到 JDK17 。 |
4
hantsy 2021-01-07 14:33:04 +08:00
关键语法上还是有差别的。Java 11 - 15 以后的一些小特性,还是不错。
比如:Text Block, var, Map.of/List.of/Set.of, record 等。 https://github.com/hantsy/spring-playground/blob/master/programming-models/webmvc-fn/src/main/java/com/example/demo/DemoApplication.java |
6
hantsy 2021-01-07 14:36:43 +08:00
Java Module 目前大部分开源的项目已经添加 module 描述,包括 Spring 。
一句话,不好用。 目前 jmps 的依赖解析也比较松散,没有 module 描述也会自动解析。 到后面这规肯定会严格起来。 |
8
hantsy 2021-01-07 14:42:35 +08:00
@SkyLine7 生产项目我早就上 Java 11 了。
个人玩一直在尝试最新的 Java 。上面的连接 是 Java 15 写的,用了新语法( text block, record 等)。 |
9
qwerthhusn 2021-01-07 14:46:38 +08:00
从 Java8 到 11 升级不需要修改任何代码,语法上也基本上没有变化,我能想到的就是 var 了,不过这个你可以选择不用,我也很少用。module 也没使用,不影响使用 11 。
反正我的感觉是 8 到 11 没有啥大的新东西可以用。 升级的话,唯一可能需要注意的就是第三方依赖,有些依赖比较陈旧不支持 11 |
10
xuweifeng1987 2021-01-07 14:54:01 +08:00
元旦节 jdk8---》 jdk11,一个字符都没改,完美
|
11
echo1937 2021-01-07 14:55:06 +08:00
@SkyLine7 #5 我大部分情况下,是用 JDK15 的环境写 JDK8 的代码,
JDK9,集合类型有了 copyOf 和 of 方法,但我还是在用 Guava, JDK10,局部变量支持类型推导 var,我还是习惯写全类型,或者使用 Lombok, JDK11,有了新的 HttpClient API,本想替换掉第三方的 HttpClient API,但是引入的包有附带依赖,那继续用吧, 简单来说,需要一个适用的过程,我最喜欢的还是 Text Block 。 |
12
hantsy 2021-01-07 16:09:05 +08:00
@qwerthhusn 8-》 11 细节上的东西还是有不少。
1. var 2. Collection 的 of 工厂方法 3. Optional, Stream 等增强,更方便 4. HttpClient, Flow(ReactiveStreams API 克隆) |
15
industryhive 2021-01-07 17:01:29 +08:00
java8 的 Hotspot 几乎已经优化到了极限,升级到 java11,性能提升很小,大概只有 16%。要想继续挖掘优化潜力,还得看 graalvm 。
|
16
hantsy 2021-01-07 18:44:51 +08:00
@industryhive 对于开发而言,我没指望过性能提升。语言本身相关的语法的进化才是我关心的关键点。
至于 16%嘛,我个人表示很怀疑。因为看过国内外的一些常见 Java 框架的使用的不同的 JDK 的 Benchmark 结果情况,基本不会有什么很大提高(大部分情况下差不多),个别测试反而 Java 8 占优势。 为什么要升级,Java 11 写程序更爽,就这么简单。 |
18
echo1937 2021-01-08 09:21:20 +08:00
@SkyLine7 #17 习惯是很可怕的东西,组里的有些同事,JDK8 的 Steam API 和 Lambda 都用不利索
|
19
byte10 2021-01-08 11:29:33 +08:00
@qwerthhusn 不是向下兼容吗,啥项目不能使用 11 运行。
|
20
tmackan 2021-01-08 16:21:23 +08:00
Java8 不挺好吗。。。。
|