人们对Java最不满的是什么? - Reddit


对 Java 语言或平台的第一大不满是什么?为什么?

1、没有语言级别的 null 安全性。这不是一件容易解决的事情,但它是我真正怀念(例如)Kotlin 的一种语言级别的功能。

2、我最讨厌的是所有的日志库。jdk里有足够好的日志,我真的希望大家不要再让我们依赖log4j,或者sf,或者commons等等,只是为了愚蠢的日志记录。

3、在字节码中,double和long占用了常量池和局部变量表/堆栈中的两个槽。甚至在规范中他们也说这是 "一个糟糕的选择"。
对于泛型来说,如果能实现Consumer<One>, Consumer<Two>就更好了。但是可以理解为什么不是这样的。

4、绝对是模块系统。它的设计完全是为了让JDK维护者的工作更容易(并阻止框架使用sun.misc.Unsafe),但是却牺牲了库和框架开发者的利益。
用户/开发者并没有从中受益
在OSGi、Maven、Gradle都存在的情况下,我还没有遇到一个明确使用Java模块的理由。
如果你维护一种用Java写的、使用反射的解释型编程语言,JPMS就是一场噩梦
没有一个人能够说服我相信模块系统的好处,尤其是在工具支持如此之差,而且没有版本控制的概念的情况下。

5、另一个。我希望有语言支持来定义具有自动生成的getters、setters和constructors的类属性。
记录Record只涵盖了不可变的值类型的使用情况。我们仍然需要一些东西来减少可变对象(如JPA实体)的模板。
(banq注:提出这个缺点的人大概不明白实体getter和setter的没有必要使用,隐藏在可变对象中的属性不能用setter、getter随意更改,需要经过领域逻辑检查)