JDK17 都出来了,感觉现在很多资深程序员 Stream 不会, Lambda 不会, Java .time 包不会

2022-07-11 14:27:31 +08:00
 qwerthhusn

不少资深人士写代码的时候还是各种 for 循环。

Lambda 也不用,还用各种匿名内部类。

还有 JDK8 的时期时间库,很多人还是在用 Date ,Calender 。现在的 LocalDate, LocalDateTime, YearMonth, ZonedDateTime 做时间计算真的特别直观简单,但是他们就喜欢用 Date ,简单的计算就用毫秒加减,复杂点的计算就先换成 Calender ,完事后再转换回 Date 。

甚至 JDK7 的 try-with-resources 语法我都感觉不少人都不知道。

所以,现在“JDK8 是主流”这句话是不对的,而是“JVM8 是主流”才是对的。语法的主流应该是 J2SE 1.5 。

18195 次点击
所在节点    Java
185 条回复
coetzee
2022-07-12 11:32:42 +08:00
@windyboy 没意见,谁说 Java 做操作系统的事儿了?
aheadlead
2022-07-12 11:33:33 +08:00
有没有一种可能,那些老旧的 API 并不是制约你手上项目发展的瓶颈?
coetzee
2022-07-12 11:33:52 +08:00
大家在聊语言特性,你跟我说操作系统,Java 写操作系统,另外,底层也是有定义的,如何定义底层。语言和底层混到一起来说?
UIXX
2022-07-12 11:35:21 +08:00
我用 Java 少,用 C/C++比较多,不过胜在时间长,也算是个资深 C 工。

实话就是 C++14 往后的高级特性真的没怎么专门学习过,个人对此是有过总结的:

1. 年龄大了。这是最根本的原因,年龄大了意味着
- 精力不再旺盛,续航能力变短。
- 注意力容易被家庭、人际关系分散。
- 记忆力变差。

2. 对待工程的观念在转变。
- 意识到编码在整个项目,甚至在具体的软件工程中都是很小的一环,程序员能做的事很渺小。
- 新的特性并不能给项目带来实质提升,反而会带来额外的学习成本。而这个学习成本性价比很低。
- 经验的积累使得一眼看去就知道哪些是语法糖,哪些是实验特性,大多数都是“纯记忆项”,确实要用到的时候翻工具书就好了。

3. 对人的看法在转变。

身边的人都在卷,不卷意味着落后;
什么听起来新什么听起来好一股脑全学了;
写代码力求最短最简洁;
做注释 /文档 /PPT 怎么高大上怎么来。

刚工作的时候我就是典型的“IT 愤青”,A 写的代码指针没释放,B 的模板写得不好,我都会“拉到”贴吧 CSDN 看雪引嘲以博得一波优越感。

经过了几年的共事,我发现自己才是纯纯的小丑。有些不写注释的年轻仔正暗暗复习考研、还在用老掉牙技术的磨洋工跟我们分享他女儿的录取通知书、常常被我们嘲讽混吃等死的经理辞职回去经营自家餐厅。你说他们编码技术吧,也就那样,别指望能跟上现代 IT 发展的节奏。但同时他们好像一样过得很好。他们同时务正业,同时又不务正业,问题出在哪里?

我想,是我的世界太小,价值观太单一。

某人虽然在编程上面不学习,但他在你看不见的地方学习并获得提升。
我在学习编程,他在钻研科学;
我在学习编程,他在经营家庭;
我在学习编程,他在创业管理;
一叶障目,不见泰山。

所以我对“持续在编程道路上不懈”者表示赞赏,同时因为人的复杂性,也不会轻易地对“不会使用高级语法特性”者下判断。因为那是另一种的“何不食肉糜”。
windyboy
2022-07-12 11:37:54 +08:00
@coetzee 我还以为你用 jdk17 开发了什么 NB 的操作系统,秒天秒地秒世界
原来知道 java 再 NB 也不过老老实实做个顶层应用罢了

看清楚自己的地位,学个 jdk 新特性就觉得高人一等了?学个新技能就可以淘汰老的了?

我只是告诉你,新特性要运行,都在大量依赖老技术。学了新语法就开不起老语法了?适可而止
coetzee
2022-07-12 11:37:56 +08:00
@UIXX 说得很好,大家各有各的选择。因为大环境不同,国内做技术的大家明显考虑的事物更贴近自己的生活。
ccppgo
2022-07-12 11:39:48 +08:00
2021 年开始写 java 的表示。。 没有 steam , 没有 lambda , 没有 java.time 包, 可以说是差不多不会写代码了,
coetzee
2022-07-12 11:41:27 +08:00
@windyboy 老哥,从来没有人觉得会新特性就高人一等,你想学就学,不想学就算了,但是也别教别人别学就行,你别回复我了,咱俩聊不到一起去。
另外,您千万别敏感到别人一个特性就是新技术的境地,另外也别敏感到会了新技术就动了您什么蛋糕的境地,大家各学各的,想学就学,不想学就算,何必呢上纲上线说别人高人一等呢?更来一句淘汰别人,没人想要淘汰谁,也没有人要伤害您,别那么敏感,搞技术时间长了,多看看股票,多看看房子,生活中还有很多别的事儿,从来没有人想跟您卷,大家都是做技术的,开放包容一点,不好吗?
另外,别回复我了,真不想跟您聊了
yava555
2022-07-12 11:43:13 +08:00
假如十年后 JDK27 出来了,不知道楼主还能不能追得动。 想当年我也追过 JDK Release Notes, Java 白皮书之类的。

1. 花拳绣腿会了更好,不会也无妨,JDK 只是个工具,熟悉 JDK8 就足够让你写出性能卓越、可读性良好、设计优雅的作品了。
2. 编码多年视野变得更广,时间更宝贵,研究新特性反而不那么划算了。 有这时间,宁愿去学点更基础的底层技术。
3. 至于楼主说的开发效率,相信老程序员有一堆的经验和技巧去解决这个事情。

另外我也不觉得用 for 循环有什么不妥的,我写代码会花很长的时间构思结构、可读性和命名。代码敲得慢一点,好让大脑追的上 : )
coetzee
2022-07-12 11:44:28 +08:00
一个 lambda ,这么多人这么敏感,回复这么多,有点没意思了,想学就学,不想学就算了,多看看国外的知识,多看一下更先进的理念和技术总归是好的,我多加一句(如果你不想看,也不用敏感,人家看过的也不会如何您,大家都是过自己的生活,学自己的技术,不用动不动去《比》,比真的害死人了,你爽,你分享,你不爽你分享,何必非要在你会我不会,我会你不会这事儿《比》一下呢),如果非要比,比比谁更高效率,比比谁加班更少,比比谁更幸福,比这个,可以吗?
liyhu
2022-07-12 11:44:34 +08:00
不好阅读,不喜欢
goalidea
2022-07-12 11:47:56 +08:00
活到老,并不能学到老
Leviathann
2022-07-12 11:52:12 +08:00
lambda 是一个很本质的东西,也是应对并发的利器,连这个都无法理解的,很难说能设计出什么值得一提的架构
况且八股文里喜欢扯的 concurrent hash map 大量 api 都是基于 lambda 的
F281M6Dh8DXpD1g2
2022-07-12 11:53:10 +08:00
stream 跑的更快么?
Suddoo
2022-07-12 12:00:09 +08:00
@acidsweet 当初用算盘的人也是这么想的,算盘永远不会过时

当初八旗也是这么想的,骑马射箭比洋人的雕虫小技更“底层”,结果被人家打得满地找牙

火车刚出来的时候,骑马的也觉得骑马更“底层”
felixcode
2022-07-12 12:16:27 +08:00
1.任何在我出生时已经有的科技都是稀松平常的世界未来秩序的一部分

2.任何在我 15-35 岁之间诞生的科技都是将会改变世界的革命性产物

3.任何在我 35 岁之后诞生的科技都是违反自然规律要遭天谴的!
Suddoo
2022-07-12 12:17:26 +08:00
本来就是新技能淘汰老技能

但是有些“资深”程序员,占着位置,故弄玄虚,顽固不化、言必称“底层”、结果你看看这帮人除了会调几十年前的 API ,有做出东西来吗?

这么喜欢底层,干嘛用编程语言呢、打纸带编程多好啊,掌握核心科技、永远不会过时

低调点也就不说啥了,结果还整天在哪儿叫,资本家输送这帮人的时候、叫得比谁都厉害
windyboy
2022-07-12 12:20:59 +08:00
我反反复复强调,程序的品质有个主要因素。
如果引入新 jdk ,新特性对品质有提升,当然要用,但不是说用了新特性,品质就一定能提高

我要求的品质,反而成了拒绝学习新技术新知识的代表,只能一脸尴尬。

站在 JDK 的角度,引入新特性希望 Java 程序品质提高,但也有带来新 bug 的风险。
站在应用程序的角度,新特性就一定品质好?旧程序就一定品质差?未必
n18255447846
2022-07-12 12:25:29 +08:00
有算法思维的程序员一般都喜欢用 for 循环
aguesuka
2022-07-12 12:31:17 +08:00
@n18255447846 有那种 ADT 都不懂的人谈算法的画面感了.

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

https://ex.noerr.eu.org/t/865425

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

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

© 2021 V2EX