I did some searches on the Internet, and there seem to be quite a few answers on the Internet.
e.g.
I read many of these posts, and I found that the most concentrated complaint against Java is
It's very verbose and repetitive.
However, there have been many improvements in recent versions of Java for the issue (Type Inference, Text Blocks, Recoeds, etc.). And Java 17 will be released in a month, Java code is becoming more and more concise.
But it may take more years to change the over-engineering culture of the Java community..
1
maninfog 2021-08-15 12:47:30 +08:00 1
No more Java, change to Kotlin please 😁
|
2
wangkun025 2021-08-15 12:50:17 +08:00 1
毁誉参半
|
3
Ehend 2021-08-15 13:03:46 +08:00 via Android
java17 出来了可能个人项目用用吧,公司还是 8
|
4
Jooooooooo 2021-08-15 13:07:28 +08:00
用的人多呀, 然后不必可避免的有些场景不适配
|
5
ericls 2021-08-15 13:09:31 +08:00 via iPhone
工具就是工具就是工具
|
6
Leviathann 2021-08-15 13:16:14 +08:00 6
主要是 java ee,servlet 那套东西的确很恶心,很莫名其妙,你就算说透了历史发展也解释不了为什么没见过其他语言还整这套的,而且 java 社区还把这套东西当宝
而且 tomcat 的 logo 真的巨丑 另外用 java 的人喜欢给守旧找理由,比如我组最近升级到了 11,并且引入了 kotlin,但是 java 的部分 var 却不能用,问就是不稳定,不清晰,不好维护 还有设计模式,相当一部分就是给早期 c++,java 强行搞万物基于 class 导致的函数抽象的缺失擦屁股, 被恶心的多了当然就巴不得他死了呗 |
7
WIN2333 2021-08-15 13:19:18 +08:00 2
骂的人多才说明用的人多,没人用的谁骂啊
|
8
sagaxu 2021-08-15 13:21:58 +08:00
还有比 Java 更罗嗦的语言吗?
|
9
6IbA2bj5ip3tK49j 2021-08-15 13:22:30 +08:00 via iPhone 6
Java 太过中庸,很多人都想来踩一脚,证明自己很厉害。
|
10
Rwing 2021-08-15 13:22:59 +08:00 1
https://www.slideshare.net/jeffz/why-java-sucks-and-c-rocks-final
Why Java Sucks and C# Rocks |
11
Leviathann 2021-08-15 13:31:48 +08:00
而且 java 几个关键性的 project 进展都很慢,一个 Valhalla 一个 loom,尤其是 Valhalla 做了不知道多少年,现在看也还是遥遥无期。。
|
12
Samuelcc 2021-08-15 13:34:01 +08:00 via Android
我觉得 Java 是很靠谱的 work horse. 平时那些黑 Java 的我觉得不少人只是平时不写 Java 或者不是主写 Java 的为了装个 b 吧,不排除有真正的 hacker 被 Java 限制了他思维的速度但是应该不多。另外用得多的语言一般都被黑呀,例如 c++ js golang
|
13
ikas 2021-08-15 13:34:33 +08:00
语言牛逼了.我用就厉害了
??? |
14
Vegetable 2021-08-15 13:39:35 +08:00
用着不爽才会喷,好不好客观就在那。
|
15
chendy 2021-08-15 13:40:28 +08:00
稳定的挣钱工具,为啥要 hete
|
16
pabupa 2021-08-15 13:42:06 +08:00
问题是它为什么不支持`import a as b`,,,,这现实起来不要太简单吧……可是就是没有。
|
17
maplerecall 2021-08-15 13:46:00 +08:00 via Android
Java 本身并没有大问题,围绕 Java 的生态圈也足够强大,但问题是进步太慢了(也许是 orical 的锅),加上用户基数多,一对比就显得守旧古板,不够 geek 了。
比如几乎定位相同的 C#,用过的基本都说好,本身还在不断快速进步,性能好,开发效率高,心智负担小,所以口碑好,国外占有率也不低。 再比如靠碰瓷 Java 起名的,被公认十分糟糕的 JS 也在很迅速的弥补不足和引入新特性,实实在在地大幅度提升开发体验。虽然抱了 web 的大腿,但也越来越多的出现在各种其他地方。 |
18
rita413413 2021-08-15 14:31:19 +08:00
java 是我第一门的编程语言,虽然现在不用了,但也不会讨厌她。以后有情怀了再用 java 谢谢项目吧。
|
19
b1t 2021-08-15 14:48:23 +08:00
Why you bully me?
|
20
EscYezi 2021-08-15 16:51:14 +08:00 via iPhone
倒是不讨厌 Java,讨厌一直停留在 Java8 不升级,Java 再怎么革新也吃不到半点好处
|
21
akira 2021-08-15 17:41:48 +08:00
喜欢不喜欢重要么。。不耽搁赚钱就是好语言。。。
|
22
TypeError 2021-08-15 17:52:46 +08:00
落后包袱太多了,看着难受,那一堆 xml 就不想看
|
23
dqzcwxb 2021-08-15 18:08:06 +08:00 15
|
24
JudyHal 2021-08-15 18:23:24 +08:00
Java 可以说是集合了各种设计缺陷的一个近亲杂交产品,骂他只是因为一个非常普通的理由,因为这样做是错的,但他好像还以自己的错误为荣,Java 的存在可以说是往所有程序员头上拉的一坨屎
|
25
felixcode 2021-08-15 18:26:48 +08:00 via Android
一堆人固守在 java8,吹着 java16,17 的改进,自认为 java 才是唯一正道,其它语言都是旁门左道,指不定想着 java8 用来养老,再也不用学别的语言了。
|
27
ztcaoll222 2021-08-15 21:02:50 +08:00
exception 和 lambda 打架
|
29
alexkkaa 2021-08-15 22:35:04 +08:00 via Android 2
不是 java 牛逼 是 Oracle 牛逼。
jdk 设计的就是求稳 这就戳到了很多大公司的 g 点,利于群体合作,语言特性少, 按部就班 |
30
cansiny0320 2021-08-15 22:44:00 +08:00 4
原文以为楼主是外国人 结果发现回复哟用的是中文 不懂为什么要用英文发帖
|
31
ebony0319 2021-08-15 23:12:58 +08:00 via Android
语言我就服 c,c++,java.
很多语言都想干翻 java,最后都成了末路英雄 |
32
TomDu 2021-08-16 00:39:16 +08:00 1
为什么要写工地英语😅
|
33
Mirage09 2021-08-16 03:16:54 +08:00 via iPhone
对一个语言这么大恶意,真是迷惑…
|
34
micean 2021-08-16 08:35:41 +08:00 1
over-engineering 说到底还是人的原因
java 不是一定要这样写那样写 |
35
daysv 2021-08-16 08:47:41 +08:00
态度上保持中立, 要我写, 打死我都不写
|
36
jsjjdzg 2021-08-16 09:06:01 +08:00
这个和前端很像啊,走有人抢着做布道师。。。
|
37
qwerthhusn 2021-08-16 09:41:27 +08:00
Java 程序员路过,看着 Kotlin 里面的各种各样的特性都很吸引人,但就是没有动力去学。。。
|
38
aflow 2021-08-16 09:58:25 +08:00
就没人喷一喷 java 的 io 接口吗,真的很烦唉
|
39
swim2sun 2021-08-16 10:51:40 +08:00
世上只有两种编程语言:一种被人骂,一种没人用
|
40
memorycancel 2021-08-16 10:52:47 +08:00 1
因为过于冗余吧。
|
41
gablic 2021-08-16 10:55:41 +08:00 2
Why do so many people become Chinese haters?
|
42
CRVV 2021-08-16 11:10:03 +08:00
Java 有一些奇怪的设定,而且奇怪得很明显。
比如 checked exception,要在 finally 里面写一个 try catch 来包住 file.close,结果是非常多层的嵌套。当然现在已经有新的写法了。 比如 Java 很喜欢标榜自己没有指针,还造了个词“引用”。但 Java 的引用是 C++ 的指针,C++ 的引用在 Java 里面不存在。这是让人很不爽的用词方式。 中文的 Java 资料里面类似的情况更多,比如“内存模型”,中文说的内存模型和 wikipedia 的 memory model 说的是完全不相关的两件事。 比如有个 Azul C4 GC,号称 pauseless,但如果你去翻它一篇 pdf 的像论文一样的东西,里面会说其实有那么大概 1 ms 的 pause,但这种重要信息从来不会出现在好找的地方,所有地方都说 pauseless 。我从来没在其它语言上见过这种销售话术。 这些是我不喜欢 Java 的原因,我并不介意它 verbose and repetitive |
43
ysc3839 2021-08-16 11:21:29 +08:00 1
我对 Java 语言本身没什么讨厌的,我个人不喜欢 Java 是因为它背后的公司不开放。
有的人喜欢拿 Java 开源来证明它背后的 Oracle 开放,时不时在 Java 对比 C# 的文章里看到,说 Oracle 比微软如何如何开放,所以大家喜欢用 Java 而不是 C#。然而 Oracle 起诉 Google 使用 Java API,以及收紧 Oracle JDK 的协议都能说明它并不开放。 C# 没有 Java 成功显然是因为早年微软不开放+不开源,但我认为 Java 成功并不是因为它开放,甚至也不是因为它开源,因为 Java 在 2006 年底才开源,在此之前 Java 就已经很出名了。 因此我拒绝 Oracle 发布的东西,我会用 MariaDB 而不是 MySQL,我会用 OpenJDK 而不是 Oracle JDK,就算 OpenJDK 需要自己手动解压配置我也不会用 Oracle JDK 那个一键安装包。 |
44
Ayanokouji 2021-08-16 11:34:08 +08:00
因为只能用 jdk8
|
45
pkoukk 2021-08-16 11:41:25 +08:00 2
|
46
Bromine0x23 2021-08-16 11:45:10 +08:00
用的人多吧?
我觉得 JS 更 sucks,但好像批判的声音也没 Java 这么大 |
48
eric96 2021-08-16 11:50:26 +08:00
硬要说具体语言的话,我说 JS 和 Python 的迭代和工程化才是 suck,割裂,混乱
|
49
kett 2021-08-16 11:57:03 +08:00
因为用的人多,即便只有一少部分人不满,在这么大的使用基数下也是一大批人。
|
50
yazinnnn 2021-08-16 12:06:47 +08:00
等 jdk17 发布了就把线上环境切到 17
ps,kotlin 项目 |
52
miniwade514 2021-08-16 14:21:45 +08:00
@cansiny0320 而且楼主发完贴之后就不说话了
|
53
sutra 2021-08-16 14:29:25 +08:00
这个 thread 下,居然没有 PHP,不和谐。
|
54
speedofstephen 2021-08-16 14:42:36 +08:00
哎,这么多人讨厌 Java,本 Java 粉丝其实很能理解。直言不诲的说,我很讨厌 PHP 。但是为什么讨厌呢?我想了了想可能是因为某些使用 php 的人,他们实现功能的方式过于的简单粗暴,不考虑扩展性。《编程思想》,《重构》基本是每个 Java 开发都会看的。有可能是因为小城市,这里的 PHP 开发写的东西简直可以作为书上的反面典型。 总结了一下站内的回复,感觉多数人讨厌 Java 也是相同的原因,他们觉得 Java 背后的群体代表的就是不思进取,故步自封的保守派。还有的人说因为培训的大多是 Java,所以 Java 这个群体的平均水平不高。这个确实是事实,但这不是 Java 的错。
|
55
tt67wq 2021-08-16 18:04:42 +08:00
主要是恶心国内的 Java 面试官吧,Java 语言本身瑕不掩瑜
|
56
ao99 2021-08-16 20:43:45 +08:00 1
忘记在哪看到的一句话:“Java 是个很糟糕的语言,但它无所不能”
|
57
liuxu 2021-08-16 20:48:56 +08:00
谁 hate java,我刘某人第一个带着 php 的兄弟办他
|
58
csy123 2021-08-16 23:51:01 +08:00
@cansiny0320 #30 提高讨论门槛吧
|
59
unlimitedsola 2021-08-17 00:33:54 +08:00
@Leviathann 守旧的多数还是不愿学新知识。
|
60
cenbiq 2021-08-17 18:12:47 +08:00
刚刚思考了整整 10 分钟,愣是没想到什么优点
|
61
secondwtq 2021-08-17 21:54:33 +08:00
@CRVV
> 比如 checked exception,要在 finally 里面写一个 try catch 来包住 file.close,结果是非常多层的嵌套。当然现在已经有新的写法了。 checked exception 确实是 Java 比较奇怪的设定。但是我的体验是每种技术都有自己奇怪的角落。你后面提到 C++,C++ 奇怪的东西不少么? > 比如 Java 很喜欢标榜自己没有指针,还造了个词“引用”。但 Java 的引用是 C++ 的指针,C++ 的引用在 Java 里面不存在。这是让人很不爽的用词方式。 我觉得如果一个东西在汉语里面叫“冷烤馒头”,在英语里面不一定要叫"Cold roasted bread"或者“LKMT”。 维基百科上有一张图: https://en.wikipedia.org/wiki/File:Germany_Name_European_Languages.svg 画的是“德国” (.de) 在不同欧洲语言中如何称呼,日耳曼也是德国,德意志也是德国,阿勒曼尼也是德国。 如果 Java 的设计者认为“引用”的名字更合适,那自然可以用“引用”这个名字,更何况两者不是一个东西,比如 Java 不支持 pointer arithmetic 。 > 中文的 Java 资料里面类似的情况更多,比如“内存模型”,中文说的内存模型和 wikipedia 的 memory model 说的是完全不相关的两件事。 Java 中文的内存模型就是 JMM (Java Memory Model) 啊,我看 wikipedia 的 Memory model 也提到了 JMM,没感觉有啥不相关的。 > 比如有个 Azul C4 GC,号称 pauseless,但如果你去翻它一篇 pdf 的像论文一样的东西,里面会说其实有那么大概 1 ms 的 pause,但这种重要信息从来不会出现在好找的地方,所有地方都说 pauseless 。我从来没在其它语言上见过这种销售话术。 我倒是觉得这个很常见。 比如 Rust 声称自己 Empowering EVERYONE to build reliable and efficient software,但是觉得 Rust 门槛高的应该不在少数。 Rust 声称自己 guarantee memory-safety and thread-safety,然而 Rust 至今连个像样的 spec 都没有。 另外你的 C4 GC 是第三方 Azul 做的,并不代表官方态度,上面 Rust 的 claim 是官方的,要找非官方的更多。还是 Rust 的例子: 最近 GitHub 上火了个项目 https://github.com/mTvare6/hello-world.rs ,这项目很明显是揶揄 Rust,其实应该主要是一些 Rust 项目的“销售话术”的。 实际上就算不涉及商业利益,你到任何一个圈子里面,看到最多的都是对其主题的吹捧。比如我看过两眼 BSD 圈子,都是吹 BSD 如何如何优雅啊,这个好那个也好啊,最喜欢跟 Linux 比较,然后说 Linux 虽然很多人用,但是就是不如 BSD——这种现象的部分原因应该是 BSD 的阳光下的地盘(划掉)生存空间被 Linux 严重挤压。不过你到 Linux 圈子里面,也能看到 Linux 比 Windows 好的大量吹捧——大概也是类似的原因。这个应该也能部分解释主题所说现象。 其实我觉得最牛逼的“销售话术”还是 Haskell 的: Avoid success at all costs. (顺便,Haskell 圈子里面吹捧一点不少) |
62
james122333 2021-08-18 01:27:30 +08:00 via Android
因为人不是机器 计算机产生的目的就在于此
本来目的是节省时间 反而要花更多时间不就更痛苦 不只 java 很多语言越来越多不必要的複杂度 有人爱人生耗在这样的事物上吗 语言本身来讲 java 都不是很类 unix |
63
james122333 2021-08-18 01:40:47 +08:00 via Android
|
64
CRVV 2021-08-18 12:41:01 +08:00
@secondwtq
引用和指针这两个名词的问题,其实我的意思是说它不应该用一个已有概念的名词来表达另一个已有概念,它混淆了“指针”和“引用”这两个词。至于一个概念有不同的名字,这是很正常的事情。德国可以叫日耳曼,也可以叫德意志,但不能叫法兰西。 中文的内存模型还有另一个意思,比如 https://zhuanlan.zhihu.com/p/34461147 销售话术本身是正常的,我指的是把一个存在 pause 的 gc 标榜成 pauseless 这种明显说谎的做法。 吹如何如何优雅,这显然算不上说谎。 至于 Rust,在一些限定条件之下,它确实降低了 buil reliable and efficient software 的门槛,这句话没说错。 |
65
charlie21 2021-08-20 18:21:23 +08:00
|
66
anyxchachapoly 2021-08-31 09:57:23 +08:00
讲实话,没搞懂为啥通篇英文,你这內容用中文表达又不是特别困难,中英夹杂可能开会习惯的话,我感觉也能接受,但你里边有明显中<>英用法的句构,何必呢
|
67
THESDZ 2021-09-03 10:38:23 +08:00
实际上的问题在于 java 的定位,我个人理解的是,java 为了降低使用门槛,或者说,提高编码质量的下限,即,水平再差的人,写出来的代码也会因为语法的规则,代码质量也不会太离谱.
为了这个目的,自然就会有很啰嗦的代码. 而程序员的熟练度总在提升,总会进步到可以脱离这些啰嗦语句的技术水平,那么这些就成为了负担. 而 java 也在做这样的进步,例如 var springboot 的默认约定代替显示配置等. 总而言之,语言自然有其优势,工具只是适用不适用,不应该有鄙视链,你可以说 我现在的水平不需要 java 来帮我做约束,我可以用动态语言,写出结构清晰的代码,或者说,java 的强约束让我无法写出我想要的灵活功能,而非全面否定 java 或者 javaer |