java是世界上最烂的语言,没有之一

bwangel 2019-10-25 08:36:50
现在流行的语言,java是最烂的。

对于从C#转过来的我来说尤其如此。在一个java项目告一段落之际,现在让我吐槽一下:

1. java的泛型让人费解。类型擦除让泛型的优势荡然无存。本来泛型的一大优势是避免装拆箱的性能开销。在java里,仅仅就剩下语法糖的功能。况且这颗糖非常的不好吃。

2. java里的lambda表达式实在是难看得要死。本来业界都用=>来代表箭头函数,java非要用->显得和别人不同。这也就算了,凡用到lambda的地方还非要steam()转一下,对于数组,还要Array.stream(), 要多别扭就有多别扭,要多难看就有多难看。更坑爹的是,还不支持延迟加载,用过一次再接着用就报错!

3. java的方法的异常处理声明让人恼火。我们知道,现在AOP编程,异常都是在框架上层集中处理的。底层只管抛就是了。一般情况下,不主张在底层用catch“吃掉”异常. 这就导致,如果我不想吃掉异常,就得抛出,如果要抛出,就得在方法声明后加throws xxxException。而如果一个方法调了其他的方法,也要跟着throws 这个Exception, 如果调了n多有异常的方法就得throws n多个Exception. 当然有人会说,你不会只throws 单一的基类Exception吗?这样倒是可以简单点。 那这个throws机制还有什么用呢?

4. java没有随用随丢的匿名对象,类似C#的new { a, b}, 或者像js那样更简单的{a, b}。这在传给api传参时,或者webapi返回的结果,是由几个值组成,但又不值得定义一个类时,显得特别啰嗦,导致我要么用一个hashmap来装,要么再专门定义一个只用一次的类。

5. java没有var的隐式类型声明。接受一个很长的类型名的返回结果时,特别不简洁。这个据说在java12以后支持。但是现在谁敢用java8以上的版本?

6. java没有扩展方法的机制。导致现在java的Util类满天飞。你如果想想像别的语言那样,一气点下去,简直是作梦。你不得不在写好一个对象以后,发现它没有你要的方法,然后不停把光标调到对象前面,加util,再加括号,再移到对象后面,再加反括号。太不顺畅了!

7. 现在流行的spring-boot实在是太慢了。我写一个单元测试,运行一次,初始化都要一分钟,搞得我现在烟抽得越来越多!

当我,我才写两个月的java代码,难免对java有所偏见。欢迎各位java大神拍砖!
...全文
1011 1 收藏 44
写回复
44 条回复
切换为时间正序
请发表友善的回复…
发表回复
UIbox 2020-06-09
吐槽不能解决问题, 但吐槽可以引起大家对问题的关注!
Java是一门比较有仪式感的语言. 相比python/javascript来说,语法的确是显得啰嗦,但是不影响阅读.至于书写效率,你可以使用编辑工具来替你快速书写Java语句.
Py/Js 在我看来,Py语法过于简单,显得没内涵. Js过于自由,显得比较狂野.
回复
sotondolphin 2020-03-15
都2020年了,为什么还有白痴发这种帖子???
回复
cookidog 2020-03-15
绝对支持,java就是世界上最烂的语言,但还不仅如此,这门语言还喜欢摆噱头,真的是不值得用啊!
回复
遇见,选择 2019-12-01
可能是个人不习惯吧
回复
流泪熊猫头 2019-11-27
众所周知,PHP是世上最好的语言
回复
i_want_to_study_ 2019-11-26
看自己喜欢吧,某个东西总有它流行的意义
回复
onOneLight 2019-11-21
回复
开发一时爽,维护火葬场。懂? java是有很多的要求,繁琐,但是你项目后期维护起来就很简单。
回复
景初JingChu丶 2019-11-14
各有优缺点,存在必然有存在的意义,如果它是最烂的就会被淘汰,反而现在他存活的很好,可能以后发展到一定时期会被淘汰,但是也不是现在,没有一个更好的替代品的时候,他仍然还是一个好的语言
回复
聪头 2019-11-14
还好吧,每种语言都有优点和不足
回复
蔡小小LOOP 2019-11-13
哦!看出来了,那是你菜
回复
IT_熊 2019-11-08
引用 23 楼 bwangel 的回复:
在定义接口的时候都会返回统一的格式,

JSON code
?
1
2
3
4
5
6
7
8
{
"code": 200,
"data": {},
"success": true,
"message": "OK",
"timestamp": 1571643706239
}
这样你只需要定义一个类就可以了。如果你每个方法都写一个new { a, b}之类的,谁能明白传回的参数代表什么意思。
-----------------------
你这有什么用呢? 有用的负载只是一个data, 这个data里面是啥东西,不是仍然要定义类吗?

Json java处理json远比C#要方便快捷的多。
回复
亦夜 2019-11-08
静看大佬吐槽
回复
jiangyongbing008 2019-11-08
从语言特性上来说,Java确实是不如c#
回复
Hudie. 2019-11-08
引战帖,吃瓜吃瓜吃瓜吃瓜
回复
既然你觉得你们的语言好,为什么转java呢?
回复
shangXoL 2019-11-08
引用 17 楼 旭烨 的回复:
好吧,不知道你自己的技术怎样,但是你抱怨的样子,像极了小丑。
同感
回复
shangXoL 2019-11-08
。。。。。。
回复
bwangel 2019-11-07
在定义接口的时候都会返回统一的格式, 如 JSON code ? 1 2 3 4 5 6 7 8 { "code": 200, "data": {}, "success": true, "message": "OK", "timestamp": 1571643706239 } 这样你只需要定义一个类就可以了。如果你每个方法都写一个new { a, b}之类的,谁能明白传回的参数代表什么意思。 ----------------------- 你这有什么用呢? 有用的负载只是一个data, 这个data里面是啥东西,不是仍然要定义类吗?
回复
oh_Maxy 2019-11-07
可能是用惯了别的语言,转过来之后就会不适应,凡事都要对标原来的语言怎么样怎么方便。
就像学英语学了这么多年,我一直认为英语不如汉语好。
回复
发帖
非技术区
创建于2007-09-28

2.3w+

社区成员

Java 非技术区
申请成为版主
帖子事件
创建了帖子
2019-10-25 08:36
社区公告
暂无公告