2018 年的时候,Mark Reinhold 在 Oracle Codeone 大会上做了一次演讲,主题是The Future of Java is Today,内容分别是当时启用的每 6 月一次的发布节奏、oracle 持续对 Java 的支持、当时 Java 发布的新特性,最后介绍了正在开发中的四个项目:amber、loom、panama和valhalla。
如今四年过去了,这四个项目或者开始公测(成为 draft 状态),或者成为预览版本(preview)将随短期 Java 版本发布,或者已经上线,最新进度见此。 也许在下个 LTS 版本,它们都会发布完成,相信到时候会是比肩 Java8 一样的经典版本。
1
ChaosesIb 2022-06-27 20:07:25 +08:00
安卓都还在用 java11 吧
|
3
y830CAa5nink4rUQ 2022-06-27 20:15:21 +08:00
我们 JDK8 永不言弃!
|
4
Dispnt 2022-06-27 20:17:50 +08:00 via Android
它管它进化,我用 1.8
|
5
wanacry 2022-06-27 20:20:29 +08:00 via iPhone
1.8 用到死
|
6
cpstar 2022-06-27 20:21:26 +08:00
生活在 java1.8 的我表示,哇咔,名词真 NB ,最后一个都不知道怎么发音,然并卵,我的 1.8 就够用了——其实带上泛型都不是存粹的 OOL 。
|
7
littlewing 2022-06-27 20:22:26 +08:00 3
和 C++ 搞军备竞赛呢
|
8
Leviathann 2022-06-27 20:32:32 +08:00
明年秋天肯定不够,loom 只能上初版,值类型、基本类型泛型不一定能上,大后年秋天的 Java25 差不多
|
9
knightdf 2022-06-27 20:32:42 +08:00 1
新项目全部用 java 17 了,用新不用旧
|
10
dcsuibian 2022-06-27 20:54:03 +08:00
历史的重演:[为什么很多 Java 程序员都不愿意升级到最新的 jdk ?]( https://www.zhihu.com/question/26844110)
大家嘴上说“万年 Java8”,但迟早还是会升上去的。 |
11
dcsuibian 2022-06-27 20:56:59 +08:00
只考虑 LTS 版,目前 17 还不到一年,但 11 已经很成熟了。
以此推算,大概到 2025 就要学 17 了。 |
12
MakHoCheung 2022-06-27 21:04:54 +08:00
Kotlin 的優勢只剩尾随闭包和扩展函数了,哈哈哈
|
13
Buges 2022-06-27 21:07:15 +08:00 1
panama 这个名字取得不行,这是个敏感词。代码传 gitee 这些国内平台的时候,有可能因此造成麻烦踩坑。
|
14
Suddoo 2022-06-27 21:21:06 +08:00 via iPhone 3
Java 一直在进化,但是很多面试官的水平还停留在设计模式、JVM 调优……这些过时的东西上
|
15
bsfmig 2022-06-27 21:21:14 +08:00
|
16
kergee 2022-06-27 21:42:29 +08:00
On Java 这本书也说只需要考虑 LTS 版本
|
17
kkkiio 2022-06-27 22:26:51 +08:00
重点都是 JVM 的进化,Kotlin 、Scala 等其他 JVM 语言都能享受
|
18
keppelfei 2022-06-27 22:34:37 +08:00
springboot2.x 到时候停止维护估计有一大批要用 jdk17 了
|
19
jeesk 2022-06-27 22:51:50 +08:00 via Android
你发任你发 我还是 1.8
|
21
acctv2 2022-06-27 23:01:09 +08:00
“为 Java 引入值类型”,这......
|
22
fox0001 2022-06-27 23:07:10 +08:00
我们新项目用上了 OpenJDK 17 ,引发了一阵痛。感觉新技术还是赶紧用上,突然用上的话,思维跟不上
|
23
pursuer 2022-06-27 23:17:10 +08:00
C#有很多超前的设计,但也没能在市场上取得大优势。
所以掌握 python 和 c++就够了,其他语言大致了解下,要用的时候就直接拿胶水糊上就行,又不是不能用。。。 |
24
lysS 2022-06-27 23:37:16 +08:00
话说,有 1.8 和最新版的 benchmark 吗?
|
25
zrc 2022-06-28 09:03:26 +08:00
杠一下,难道设计模式、JVM 调优。。这些过时了?
|
26
nothingistrue 2022-06-28 09:35:19 +08:00
Java 8 并不是因为有啥优点才经典,而是因为它是目前唯一的稳定版本,在 Java 回到传统发布模式(一个大版本能顶上至少 5 年)之前,Java 8 很难被替代。Java 8 之后放弃了向下兼容性,别说大版本升级,小版本升级都可能蛋疼,而就算是 LTS 只有短短不到 3 年的维护器,这敢升级的都是勇士。
|
27
yazinnnn 2022-06-28 10:02:00 +08:00
放弃向下兼容是什么鬼?
jdk17 运行不了 java8 的字节码? |
28
dragondove 2022-06-28 11:15:41 +08:00
@nothingistrue jdk 本身就不向下兼容,jdk 的兼容性只是二进制兼容,即 jdk8 编译出来的.class 文件可以在 jdk17 的 jvm 上运行
|
30
dragondove 2022-06-28 11:19:33 +08:00
@zrc 部分设计模式的出现是因为语言本身的表达能力不够,很多用函数式写代码的人几乎不考虑设计模式。(可以看一下 github 上的一个项目 https://github.com/niltok/magic-in-ten-mins java 写的函数式编程)。jvm 如果足够强大,可以在运行期间检测运行状况并调整自身的设置(例如根据当前运行环境的内存和对象大小自动调整 gc 触发的时间)那么也不需要调优。目前 ZGC 是宣称最大 gc 时间不超过 1ms 的。
|
32
bringyou OP |
33
bringyou OP @nothingistrue Java8 还是有很多改进的吧,语法上的 lambda 、stream ,重新设计的日期 API ( localdatetime 这套),内存区的改动(去除永久代)。另外 LTS 比如 11 和 17 ,都是有 5 年的 active support 和 8 年的 security support: https://endoflife.date/java
|
34
nothingistrue 2022-06-28 11:43:01 +08:00
@dragondove #28 jdk 8 及之前,除了 enum 改保留字那一次,你还能找出哪个是低版本写的代码不能在高版本编译的吗。没有向下兼容性,jdk8 接口的 default 方法这一特性可能就不会出。
|
35
dragondove 2022-06-28 12:07:33 +08:00
@nothingistrue 我的意思是官方文档只从来没说过 java 编译器能做到向后兼容,但是说过保证 vm 下运行二进制兼容。至于以前版本的不兼容性可以从 oracle 文档上找到,比如 https://www.oracle.com/java/technologies/javase/incompatibilities.html https://www.oracle.com/java/technologies/compatibility.html
jdk9 最大的改动应该也就是模块化(实际上影响并不大,大部分在 jdk8 下写的代码能在 jdk9 上编译)但是 jdk16 加了模块安全性相关的功能,需要加额外启动参数。个人尝试过升级 jdk8 的项目到 jdk17 ,遇到的问题有:1.lombok 兼容问题,升级 lombok 就可以解决 2. javaEE 模块在 jdk11 时被移除,通过 maven 重新引入即可解决。3. sun 包被移除,但是能在 java.util 下几乎都能找到替代类。4. jdk16 引入的模块安全问题,加启动参数即可解决。 |
37
aguesuka 2022-06-28 14:14:03 +08:00
@xujia1998 暴论: 因为设计模式最重要的是 B 格, 但是现在它位于鄙视链下游.
单例, 建造者, 装饰器, 代理, 原型, 访问者, 迭代器... : 2022 年了 Java 还没有第一公民函数, 默认参数, 装饰器, 委托, 模式匹配, 代数数据类型...吗? 观察者: Observer 接口都被 Java 弃用了, 现在叫做 reactive. 组合实体: 问就是 OOP 已死 ECS 当立. 过滤器, 空对象: 这不就是个 Monad 吗, 单子说白了不过就是自函子范畴上的一个幺半群而已, 2022 年了书里不带点范畴也好意思误导别人. |
38
mmdsun 2022-06-28 15:38:36 +08:00 via iPhone
@MakHoCheung 下载个 lombok 就能用扩展函数了
|