有 jdk11 的开源项目吗(非 demo)

2021-01-07 13:45:09 +08:00
 SkyLine7

一直用的 jdk8,想学习一下 jdk11 的新特性. 1.jdk8 升级到 jdk11 性能提升大吗? 2.jdk8 升级到 jdk11 需要做哪些操作,改动的点? 3.jdk9 中的模块化拆包如何运用到真实的商业项目中

3299 次点击
所在节点    Java
21 条回复
hihanley
2021-01-07 13:51:03 +08:00
同样想了解
hantsy
2021-01-07 13:55:27 +08:00
商业项目有什么,我可以帮升到 15 。
echo1937
2021-01-07 14:22:04 +08:00
用 JDK15 跑了一下用 JDK8 开发的项目,啥问题也没发现,挺意外的。

明年下半年一定要把开发环境迁移到 JDK17 。
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
SkyLine7
2021-01-07 14:36:40 +08:00
@echo1937 有用到 jdk11 的新特性吗?
hantsy
2021-01-07 14:36:43 +08:00
Java Module 目前大部分开源的项目已经添加 module 描述,包括 Spring 。

一句话,不好用。

目前 jmps 的依赖解析也比较松散,没有 module 描述也会自动解析。 到后面这规肯定会严格起来。
SkyLine7
2021-01-07 14:38:06 +08:00
@hantsy 好的,老哥有这方面的项目吗
hantsy
2021-01-07 14:42:35 +08:00
@SkyLine7 生产项目我早就上 Java 11 了。
个人玩一直在尝试最新的 Java 。上面的连接 是 Java 15 写的,用了新语法( text block, record 等)。
qwerthhusn
2021-01-07 14:46:38 +08:00
从 Java8 到 11 升级不需要修改任何代码,语法上也基本上没有变化,我能想到的就是 var 了,不过这个你可以选择不用,我也很少用。module 也没使用,不影响使用 11 。

反正我的感觉是 8 到 11 没有啥大的新东西可以用。

升级的话,唯一可能需要注意的就是第三方依赖,有些依赖比较陈旧不支持 11
xuweifeng1987
2021-01-07 14:54:01 +08:00
元旦节 jdk8---》 jdk11,一个字符都没改,完美
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 。
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 克隆)
hantsy
2021-01-07 16:09:26 +08:00
@echo1937 record, sealed 都实用
hantsy
2021-01-07 16:18:26 +08:00
@echo1937 实际项目中新 Java 版本运行有没有问题,丢给 CI 就好了。
industryhive
2021-01-07 17:01:29 +08:00
java8 的 Hotspot 几乎已经优化到了极限,升级到 java11,性能提升很小,大概只有 16%。要想继续挖掘优化潜力,还得看 graalvm 。
hantsy
2021-01-07 18:44:51 +08:00
@industryhive 对于开发而言,我没指望过性能提升。语言本身相关的语法的进化才是我关心的关键点。

至于 16%嘛,我个人表示很怀疑。因为看过国内外的一些常见 Java 框架的使用的不同的 JDK 的 Benchmark 结果情况,基本不会有什么很大提高(大部分情况下差不多),个别测试反而 Java 8 占优势。

为什么要升级,Java 11 写程序更爽,就这么简单。
SkyLine7
2021-01-08 09:07:57 +08:00
@echo1937 好的,也就是说升级了版本,还是很多版本新特性没用上
echo1937
2021-01-08 09:21:20 +08:00
@SkyLine7 #17 习惯是很可怕的东西,组里的有些同事,JDK8 的 Steam API 和 Lambda 都用不利索
byte10
2021-01-08 11:29:33 +08:00
@qwerthhusn 不是向下兼容吗,啥项目不能使用 11 运行。
tmackan
2021-01-08 16:21:23 +08:00
Java8 不挺好吗。。。。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/742525

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX