讨论 Java 相比其他编程语言(c++, go, rust 等)的缺点

2023-12-06 09:54:12 +08:00
 steelshadow39

本人学生,我自己是写 Java 的,最近发现身边技术能力远高于我的同学对于 Java 这门语言的态度并不友好。由于没有大型互联网项目的经验,所以还没有体会到 Java 相较于其他几种语言的瓶颈,自己能想到的缺点也就性能相对较弱,代码冗长(我本人觉得这种代码即注释挺方便理解的)。Java 的生态可能是最全的吧?并且现在互联网公司大头应该还是 Java (个人想法,我猜想一些公司仍然使用 Java 是因为换门语言的成本太高?所以求稳)。

想请教各位 V 友的看法,以及在国外编程语言的发展趋势是什么情况?

只做理性讨论,没有“XX 语言是最好的”这种想法,谢谢。

23482 次点击
所在节点    Java
162 条回复
c2const
2023-12-06 11:25:47 +08:00
java 缺点就是太卷 :(
C++系列就是人少岗位更少,要求更高,也卷,不过卷进去了就没那么卷了 :(
--------
但语法糖其实无所谓的,以前同事做 JAVA/安卓逆向的,可以自己写 IDEA 插件,来支持你想要的语法糖,比如支持 C 系列的#define 、#if 等预处理、支持运算符重载、支持元编程等等;

性能的问题不大,一般公司遇不到,加机器就行 :)
steelshadow39
2023-12-06 11:30:11 +08:00
@gitrebase 这个是开发者自身的问题吧
fredweili
2023-12-06 11:35:25 +08:00
函数式进步太慢,技术负担重
debuggerx
2023-12-06 11:38:58 +08:00
成也多线程,败也多线程;
成也设计模式,败也设计模式;
成也 jvm ,败也……好吧,这个不算失败,只能说在很多新兴领域成了拖油瓶,曾经的优势不再明显
要不是有喷射大脑,估计还会有多几倍的人喷它
reeco
2023-12-06 11:40:14 +08:00
没有意义的讨论,不如花点时间用这几门语言分别写下 side project
gitrebase
2023-12-06 11:44:22 +08:00
@steelshadow39 #42 肯定有开发者的原因,但我侧重于表达语言的能力对开发者的约束
XCFOX
2023-12-06 11:44:26 +08:00
在我看来 Java 缺少好用的 ORM 。就这一点足以否决 Java 作为互联网项目的后端。
C# 有 EF Core 、Ruby 有 Active Record 、php 有 Eloquent 、TypeScript 有 MikroORM 、kotlin 有 Ktorm ,连 Rust 这样的编译型语言都有 SeaORM 。
别的语言已经用 OOP 语法完成 CURD 业务了,Java 还在用 MyBaits 手写拼接 SQL 。

都说 Java 生态好,可是连最基础的 ORM 都没有好用的。在我看来真正生态繁荣的是 Node.js 背后的 npm 生态,当然 npm 过于繁荣、各种包库卷出花来,质量更是良莠不齐...
coderzhangsan
2023-12-06 11:45:08 +08:00
以前有句话说:穷玩车,富玩表,屌丝比电脑;程序员中的屌丝,就是比框架、比语言;好吧,说点跟技术无关的,比如你的职业规划。

如果你是个大牛,就忽略。

如果你是个普通人,或许将来发展不会太高的上限,那我的建议就是好好学 java ,虽然这语言人很多,也比较卷,但是工作这东西首要是挣钱,剩下的就是如何舒服的挣钱。
1.国内市场主流语言就是 java ,而且大部分公司规模都不会小,这些或多或少能保证就业和待遇,大环境在差,只要国内主流语言市场还是 java ,就基本可以保证有你一口饭吃。
2.java 生态没得说,你的工作至少不会造轮子,这样至少也不会出现轮子的 bug ,工作少一点烦心,生活也会比较顺心,内分泌也不会紊乱。
ganbuliao
2023-12-06 11:49:01 +08:00
@adskhf go 很有特点 很简单 标准统一 可读性高 可以交叉编译成系统可执行文件 可以看到引用库的代码
只是不符合你审美吧 还是有很多人喜欢的
keepRun
2023-12-06 11:50:40 +08:00
@XCFOX 用 hibernate 不就好了,或者 mybatis plus
murmur
2023-12-06 11:56:16 +08:00
@XCFOX hibernate 你不用喷 mybatis 干嘛。。。
knightdf
2023-12-06 11:59:53 +08:00
@XCFOX java 是只有一个 mybatis 么?
chenzw2
2023-12-06 12:04:30 +08:00
对于我来说,单个 jvm 太占内存,至少 512M 起步,做个项目拆分个 5 、6 个模块,再加上 nacos 、mysql 等各种组件,没台 16G 内存的服务器你都不能流畅地运行起来。。。
BaseException
2023-12-06 12:05:37 +08:00
@XCFOX #47 正经人用 mybatis plus 从来不手写 sql ,除非是复杂 sql
ns09005264
2023-12-06 12:12:45 +08:00
对比 Go 我想不出有什么大的缺点,对比 Rust 的话,就是 null 的存在,空指针异常挺烦人的。还有 Enum 挺弱的。
Rorysky
2023-12-06 12:16:02 +08:00
java 语言特性优秀,不然也不会在 web 后台占据领导地位。

但是 jvm 本身限制了应用与系统隔离,jvm 本来是抹平系统和硬件架构差异的,但是这一点在 llvm 之后变得不是那么必要一个虚拟机做这件事。
version
2023-12-06 12:18:09 +08:00
如果你有 10w 创业.二次开发 php 或者轻量语言.
如果你有 100w 创业..就会选择 php 或者其它轻量语言
如果你有 1000w 创业.自然会选择高大上的语言.严谨的业务
黑猫白猫..能赚钱自然是好猫..
只要国内那帮老的架构师不退休..java 还是他们唯一可控的.不可替代的优势--(代码量多.架构复杂.一般人不能接手).有时候代码烂和架构搞特别复杂也是不被裁员的优势.
murmur
2023-12-06 12:24:50 +08:00
@version java 万物基于 spring 啥叫 java 代码烂复杂 mvc 那套都看不明白真别写代码了
LykorisR
2023-12-06 12:27:07 +08:00
团队开发和个人开发是完全不一样的,做个人项目开发必然哪个用着舒服用哪个,但是团队的话需要考虑水平参差不齐,这种时候所谓的“啰嗦”反而会成为优势
ionfev
2023-12-06 12:27:55 +08:00
前段时间在 B 站看到了 2020 年周志明的演讲:《云原生时代,Java 的危与机》,觉得非常有启发。

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

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

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

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

© 2021 V2EX