sotvokun 最近的时间轴更新
sotvokun

sotvokun

V2EX 第 241539 号会员,加入于 2017-07-20 01:38:02 +08:00
今日活跃度排名 13904
sotvokun 最近回复了
只从语言层面来看缺点的话,大概有以下几点:
1. Primitive Type 不是对象,不是对象就算了,也不像对象一样进行操作。
2. 没有值类型,到处都是引用类型,然后还没有 null-safety 的语言层面的配套设施。
3. 同上一条,因为都是引用类型,所以函数的传参在函数内部可能被修改,只能靠人为规范规避问题( C# 的话可以通过 ref/in/out 来显性标识)。
4. 没有原生的 getter/setter 支持,只能用 lombok 这种代码生成器来 hack 实现。
5. 标准库设计得稀烂。

单从语言层面上来看的话,Java 是一个彻底贯彻落实面向对象但是又仅此而已的语言……好处的话,语法糖很少,学起来很简单,所有人的写法都是差不太多的。对比 C++ 和 C# 这种,一个问题的解法每个人都可以写出自己的风格来,算是一种很强的优势了。

某种意义上来说 Java 在行业的应用和发展算是双向奔赴的结果,老板放心,打工人喜欢。

唯独不好的地方大概就是有如果你喜欢写代码的话,Java 这门语言用起来不会很开心。

和其他语言其他,C++ 的话就是自由,你想怎么写就怎么写,你甚至可以在 C++ 里面实现 Rust 的 trait 。Go 的话就是简单,写的时候没有任何心智负担,因为啥高级特性都没有。Rust 弥补了 C++ 中的部分缺点,用自由和编译速度换来了安全和更好的包管理。


来到更上层,大家其实都差不多,Java 的唯一优势就是这些年积累下来的生态比较丰富。但是这个优势又没那么大……出活速度不如 PHP, nodejs 快,速度不如 golang, Rust, C++ 快,那些引以为豪的生态,在绝大多数时候都不是一开始就需要考虑的问题。


不过语言这种东西顶多就是个工具,围绕他的一切事物甚至算不上知识。还是数据结构算法、系统设计、数据库设计,这些东西更重要。
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4162 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 10ms · UTC 10:08 · PVG 18:08 · LAX 03:08 · JFK 06:08
Developed with CodeLauncher
♥ Do have faith in what you're doing.