1
yukiww233 2019-03-02 13:36:49 +08:00 1
日常引战
|
2
woscaizi 2019-03-02 13:40:57 +08:00 via iPhone 1
因为 java 的类型检查,强约束,编译时检查可以使普通程序员也能写出还可以运行的代码。
并且 java 生态非常非常好,尤其是国内。 |
3
Lonely 2019-03-02 13:44:55 +08:00 1
是的,走好不送。
|
4
rockyou12 2019-03-02 13:45:35 +08:00
回 lz,真的只有你。特别是你写过大点的项目,多会几门后端语言后才知道为啥
|
5
misaka19000 2019-03-02 13:46:25 +08:00 via Android
是的,Java 很垃圾,PHP 是世界上最好的语言
|
6
bumz 2019-03-02 13:48:08 +08:00 2
只写 50 行代码你用机器码都没人拦你
500000 行代码没有静态检查全靠运行时?重构都没法重构 |
7
lynskylate 2019-03-02 13:53:09 +08:00 via Android
等你写 c 艹写多了就知道 java 有多好了,有相对完善的标准库,完善的包管理,丰富的生态,优秀的虚拟机(还可以 hack 字节码),不用考虑对象生命周期,操蛋的 abi 兼容,过多遗留代码以至于语法上。以上几点 c 艹基本都很烂,就标准库来说,到现在还没有网络库,文件库,想要跨平台还得自己去做兼容。
|
9
orangeade 2019-03-02 13:54:09 +08:00 via Android
所以诞生了 kotlin/scala/go,个人项目我才懒得用 Java,公司项目无所谓,循行内部编码规范就行
|
10
lynskylate 2019-03-02 13:56:05 +08:00 via Android
等你写 c 艹写多了就知道 java 有多好了,有相对完善的标准库,完善的包管理,丰富的生态,优秀的虚拟机(还可以 hack 字节码),不用考虑对象生命周期。而 c 艹这些方面都很烂,就标准库来说,到现在还没有网络库,文件库,想要跨平台还得自己去做兼容。除了缺少上面 java 的优点外,c 艹还有操蛋的 abi 兼容,过多遗留代码以至于写库还得向下兼容到 98。
——————————————— 打错重发一遍 |
11
lhx2008 2019-03-02 13:57:16 +08:00 6
并不复杂,相反是简单,Java 用少量的可预测的 API 构建高楼大厦,而不是各种组装好的预制板,通过奇怪的切割方法来使用。
另一个证明 Java 简单的方法是,你可以比较轻松的看懂别人写的 Java 代码,但是你在 Python 和 Javascript 里面要看懂那些“高手”写的代码是极其困难的。 |
12
liujj 2019-03-02 13:58:21 +08:00 via iPhone
1 考虑招人成本,至少培训班出来的写 Java web 领域还是没问题的
2 企业级稳定性和生态,Java 是国内事实上的标准,良性循环加一大堆布道师 3 然而对于个人而言,学习 Java 很难深入系统底层,深入的是 jre,有一句笑话是写 Java 的不知道 nginx 也不懂 linux 原理 4 所以我选择 golang |
13
woscaizi 2019-03-02 13:59:43 +08:00 via iPhone
@Linxing golang 确实不错,不过需要多人协作的项目,还是会考虑 java,因为会 go 的人还是少。
|
14
Raphael96 2019-03-02 14:00:42 +08:00 via Android 2
c# 比 java 好,什么你说生态环境?哦,你们聊我先走了
|
15
Salvation 2019-03-02 14:01:23 +08:00 3
觉得糟糕就不用呗.
1. 一个东西,如果你认为糟糕,但是用的人非常多.你应该自己沉下心好好思考下,思考其优点究竟在哪里,为什么这个优点可以盖过其缺点等等内容.这个思考过程对人的帮助很大. 2. 这种帖子很难拿到真实的原因.因为你没有真正用这几种语言写过、维护过大型项目.很多理由写在纸上是一个意思.但是看到再多次也不能理解到.等动手做一次之后就能很清楚.所以你看了再多的回帖,不懂的还是不懂.你去做一下,可能瞬间就明白了. 3. 糟糕这个词形容 java 不太好.如果你认为糟糕,首先你得说清楚,哪个场景,和什么语言对比,结果如何,为什么糟糕.否则你说的这些缺点未必是真正的缺点.如果能具体到某个点上去聊.能深入一些 |
16
webjin1 2019-03-02 14:08:40 +08:00 via Android
|
17
westoy 2019-03-02 14:11:59 +08:00
你去 CSDN、javaeye 之类的论坛找找十几年前的论战, 尤其敏捷开发流行的时候各种动态语言撕 X Java 的, 理由和你的差不多
于是后来又流行了一句话, 动态一时爽, 重构 XXX 就入门门槛、开发效率、防止犯错, 有利于重构、生态这几块,java 算是最均衡的 |
18
bokchoys OP @lynskylate 谢谢,了解啦
|
25
bokchoys OP @misaka19000 Ahahahaha
|
27
wly19960911 2019-03-02 14:35:57 +08:00
复杂的有自己的理由,首先复杂的原因是有一部分冗余代码用来提高设计上的灵活。
反而越灵活的代码越难入门的时候掌握到一些设计上的门道,容易走偏。 |
28
DevRoss 2019-03-02 14:36:33 +08:00 via Android
不觉得糟糕,但觉得写得不爽罢了
|
29
wly19960911 2019-03-02 14:40:19 +08:00
@wly19960911 #27 我就举例 js 把,js 很多时候把 java 基础的面向对象各种反复强调实现,表面看起来灵活,你只能知道实现了面向对象,入门的时候学习你根本体会不到面向对象的好处,另外如果想要面向对象,为什么不一开始就看面向对象实现的东西呢。
|
30
1002149271 2019-03-02 14:42:19 +08:00 via Android
又臭又长,人生苦短,所以我用 python …
|
31
bokchoys OP @1002149271 ahahahah
|
32
Cbdy 2019-03-02 14:46:17 +08:00
Java 历史悠久也很流行,所以有很多用户,这些用户中有很多是半吊子或者民科
事实上 Java 并不糟糕,相反,它的竞争对手更糟糕(如 Python、Go 甚至是 C++)。当然 Java 平台确实有一些过度工程或者过度设计的地方,但是放到 2019 年看,Java 仍然是最优秀的严肃的工业级别的通用编程语言 如果你觉得 Java 糟糕,并不是你比 Java 设计者聪明或者 Java 应在 IT 行业的演变过程中淘汰,而是你没有掌握正确的方法 |
33
ClutchBear 2019-03-02 15:49:47 +08:00
就虎扑这种口水网站,
用 "只有我觉得 xxxx" 当标题的, 直接小黑屋 15 天以上 |
34
loveCoding 2019-03-02 15:51:48 +08:00
Intellij idea 可以让你一直爽
|
35
lovedebug 2019-03-02 16:02:45 +08:00
Java 也在进步,只是你没看到被网上文章带了节奏
|
36
lovedebug 2019-03-02 16:04:54 +08:00
Java 的生态目前是最好的。下一个可能 Node ? python 或者 Go ?不确定
Java 底层的 JVM 技术是目前不少新式语言在学习的。 Java 非常适合团队开发,犯错可能性少,Node Python 等弱类型语言团队开发考验每一个人的水平 |
37
HuHui 2019-03-02 16:06:24 +08:00 via Android
个人觉得目前就生态上,go 可能有希望
|
39
micean 2019-03-02 16:07:51 +08:00
生态、调试、重构,用来用去只有 java 最舒服
啰嗦是啰嗦了一些 |
40
lht260 2019-03-02 16:12:49 +08:00
兄弟,等你写过大型项目就知道为啥了
|
41
gejun123456 2019-03-02 16:57:16 +08:00 via iPhone
intellij 熟练点 很多代码都能自动生成
|
42
kljsandjb 2019-03-02 16:58:59 +08:00
|
43
rockyou12 2019-03-02 17:00:01 +08:00
|
44
Maboroshii 2019-03-02 19:34:52 +08:00
golang +1
|
45
presoul 2019-03-02 19:39:06 +08:00 via Android
只有我觉得 这种标题的人都是什么心理…
|
47
nicevar 2019-03-02 19:43:13 +08:00
我们都老了,这是 00 后找存在感专用标题格式。。。
|
49
icylogic 2019-03-02 20:06:54 +08:00 via iPhone
我从短暂的人生当中学到一件事……
所有说自己无意引战的,全部当做引战处理就可以了! |
51
josephok 2019-03-02 22:25:51 +08:00 via Android 1
Rust 也挺好的。就是国内用的少。
|
52
dot2017 2019-03-02 22:30:54 +08:00
Java 别的都好,内存回收实在太垃圾!
|
53
deadEgg 2019-03-02 22:44:40 +08:00
以前 java、python 写了很久,
现在在写 pure c,来对比下写 c 你将遇到什么 1. 平台移植兼容,你将需要面对各种平台写一堆另新手费解的宏,定义自己的基本数据类型根据编译器,cpu 位数,我见过一个很老的项目甚至兼容 8bit 的平台。不同的平台提供的库也很难去弄,一个不成熟的 c 项目可能带给你的是编译要弄很久。 2. 编译选项,不同的编译选项导致编译进不同的代码,所以你有时候会发现一堆定义相同的函数,当遇到这类事情你还得了解编译场景。。 3. 混编汇编,别问,问就看不懂 4. 多流派写法,不同的项目都有自己的写法流派,有些 struct 去面向对象,去做接口,有些写法不理解个半天根本不明白它在写什么。 5. trick 代码,可以说 c 是最能写出花样的,新手很难理解一些 trick 的代码片段。比如内核常用的 container_of 这种。或者一些大数实现中对结构内存的分配调整,很难以上层的思维模式去理解,上层可能可以很轻松的获取操控内存大小,但是在 c 里面,总是很难明白在一个 struct 里面的 char *到底里面有多大内存。 6.分包自由,代码很长,我有见过把所有核心功能都放到名为 lib 包的项目,一个.c 文件可能几千行然后也不面向对象,只面向功能去做(或者说面向组件),上手一个 c 的项目其实都很去理解他的核心思路。 7. 和别的代码混着写,反正 makefile 足够自由,可以加入很多别的语言在里面。。 所以,少年珍惜 java 把,java 这门语言可以说是上手算是挺快的了。 |
54
msg7086 2019-03-02 22:51:32 +08:00
不如试试 C 井?
|
55
justin2018 2019-03-02 22:57:45 +08:00
楼主 来做前端 😁~ 总有新花样~
|
56
zorui 2019-03-02 23:17:52 +08:00
当你使用其他语言做一些项目的时候你才会想起 java 的好。
|
57
cpdyj0 2019-03-02 23:59:41 +08:00
感觉吐槽的点不太对,环境配置这都不叫事,况且我觉得 Java 算是简单的了……
私以为 Java 最大的缺点(或者说是最大的优点-见仁见智吧)语法过于简单,导致表达能力较低,写起来不爽;不过也极大地限制了大家自由发挥,加之设计模式的推广极大降低了理解他人代码的难度(?). |
59
vegito2002 2019-03-03 02:18:11 +08:00
java 编写代码复杂???
|
60
EscYezi 2019-03-03 03:11:20 +08:00 via iPhone
Java 算是相对简单的语言了,想要的包 Maven 都能找到,语法简单限制严格,比较啰嗦但是可读性和可维护性好。
曾经我也一度瞧不起 Java,因为太啰嗦。写了一段时间 PHP,回来捡起 Java,才知道自己当初还是太年轻,代码量一大,才知道 Java 的好。 |
61
EscYezi 2019-03-03 03:28:10 +08:00 via iPhone
@zhazi #58 用 Kotlin 举个简单的例子:
fun f(i: Int, s: String?): String { return s ?: when (i) { 1 -> "one" 2 -> "two" 3 -> "three" else -> "unknown" } } 同样的功能用 Java 实现一下试试( |
62
KasuganoSoras 2019-03-03 06:30:42 +08:00
@EscYezi #61
<?php function f($i) { $list = Array("one","two","three"); return isset($list[$i]) ? $list[$i] : "unknown"; } (笑 |
63
KasuganoSoras 2019-03-03 06:36:50 +08:00
@EscYezi 忘了还有空指针判断
<?php function f($i, $s) { $list = Array("one","two","three"); return $s == null ? isset($list[$i-1]) ? $list[$i-1] : "unknown" : $s; } |
64
hasunday 2019-03-03 06:37:51 +08:00 via iPhone
日常引战。lz 不想学 java,可以学 go scala
|
65
SpiderXiantang 2019-03-03 08:00:32 +08:00 via Android
java 就是为了简化工程复杂度而生的
|
66
kyuuseiryuu 2019-03-03 08:29:10 +08:00 via iPhone
@woscaizi php 没有这么多约束菜鸟程序员也能写出可以跑的代码,嘿嘿嘿嘿[滑稽]
|
67
13160919135 2019-03-03 08:36:26 +08:00
生态好,太多公司用,不学不好找工作。虽然我也认为这个语言很垃圾
|
68
cuebyte 2019-03-03 08:41:37 +08:00
覺得複雜是因為沒用到正確的工具,sdkman 推薦給樓主。
另外,各種 SSM/SSH 配置的複雜純粹是 legacy,用上 spring boot 就爽快許多了。 Java 除了 NullPointerException 以外沒大毛病,可以通過 lombok 或者 Kotlin 消除,況且這個問題其他語言也有。 如果覺得文件體積大,Jigsaw 歡迎你。 |
69
cuebyte 2019-03-03 08:45:49 +08:00
|
70
woscaizi 2019-03-03 09:42:56 +08:00 via iPhone
@EscYezi 老铁,是不是查表法更优雅? kotlin 确实很简约,不过 java 的很多代码可以用 idea 来生成啊。
|
71
crack105 2019-03-03 09:43:19 +08:00
IntelliJ IDEA 一直爽
|
72
dbpe 2019-03-03 09:50:08 +08:00
动态语言一时爽...重构火葬场...
|
74
abcbuzhiming 2019-03-03 10:01:41 +08:00
@EscYezi 我也一样,只有在静态语言写过一段时间回见,跳到动态语言后,被动态语言的优点和缺陷都洗礼过,才知道 Java (静态语言有类型检查)的好。我现在基本不考虑任何没有类型检查的语言写项目
|
75
k8ser 2019-03-03 10:25:41 +08:00
简单的例子,代码水平不高的时候,python 里面一个函数想返回啥返回啥,一时爽了,后面维护起来跟坨屎一样。
|
76
Allianzcortex 2019-03-03 10:53:00 +08:00
我也曾经有同样的想法并且中二到发朋友圈长篇大论说这个,真想捶死自己....楼上的很多回复让我想起了之前看有人发过 Pornhub 的面经, [Manager 问了一些基础的问题,C++和 Java 的区别,多线程,垃圾回收,然后问了一个项目。大约半个小时。他们组主要是用 Go 和 Java] ,Java 和 Go 果然是未来的趋势
|
77
lihongjie0209 2019-03-03 11:04:37 +08:00
环境配置 复杂???????????
还有比 java 环境配置简单的嘛???? |
78
sonyxperia 2019-03-03 11:07:14 +08:00
可能他们不觉得 Java 糟糕吧
|
80
gam2046 2019-03-03 11:33:05 +08:00
Java 从业者,同样觉得 Java 有些方面有点糟糕,主要原因是历史包袱太过沉重,在这种古老语言上,Java 的向下兼容做的算是不错了。相比更古老一点的 Python,直接语法大改了。对标 C,Java 的入门门槛真的低了很多。其他与 Java 同时代的编程语言,目前还在使用的,基本上都已经变成特定场景下的特定编程语言。
但是与同类型的.Net 相比,毕竟.Net 出生晚,没有那么多需要顾及的历史包袱。.Net 优越性比 Java 高不少。不过反过来说,因为 Java 历史悠久,因此大量的第三方轮子很多,并不需要自己造,也就是所谓的生态好很多。 单纯从语言上来讲,我自己觉得.Net 比 Java 好的很多。Java 那个基于类型擦除实现的假泛型,就搞的很头痛。 |
81
tairan2006 2019-03-03 12:32:02 +08:00 1
Java 的优越性在生态上,语法简单也是优势。但是又臭又长,包特别大,泛型实现垃圾。
.Net Core 语法好,生态差。 Golang 语法简单,生态也好,但是没有泛型,抽象能力差。 所以 Go2 才是最好的选择(还没有 |
82
gamexg 2019-03-03 14:18:04 +08:00
在 C#、go 还没有出来时,java 基本是大型项目最好的选择吧。
c/c++ 的内存管理是个大问题,即使顶级公司一样会出现空指针、内存泄漏等问题。 php、python 等不是静态类型语言,小项目没什么问题,大型项目真的是重构火葬场。 java 的槽点大概是写起来非常啰嗦,非 java 程序员,记得一次临时用 java,发一个 http 请求用了 30 多行。但是这个问题并不是无解,使用第三方库后一个 http 请求几行就能够完成。 .net 系列现在的确挺好。但是 x 年前,.net 只能在 windows 下运行。第三方开源尝试实现 linux 支持,结果被微软威胁,我记得开源版被迫停止开发并执行代码审计移除可能侵权的代码。现在微软倒是开始拥抱开源了,但是黑历史在那里。 go 太年轻了,生态倒是还好,但是开发人员招不到(付费简历库全省居然只有 3 份简历...)。还有说不支持泛型是个问题的,不过我感觉无泛型支持问题倒是不大,也就个别时候多写点代码吧。 |
83
wangxiaoaer 2019-03-03 14:31:46 +08:00
@tairan2006 #80 哈哈哈,不知道有生之年能不能等到 go 的泛型和方便的二进制发布以及包管理,目前的 gomod 感觉用起来还是不爽,总感觉一个包管理直接引用源代码很不灵活。
|
84
Cbdy 2019-03-03 14:34:10 +08:00 via Android
|
85
wangxiaoaer 2019-03-03 14:41:39 +08:00
@Cbdy #83 如果作为 DSL 的话,那就没必要跟 java c#比较了,但现在看来,远远不是只作为 DSL 的存在。
所以“ go 是 c++的升级版”这种观点,我觉得在现阶段还是比较稳妥的一种说法。目前跟 java 还是没法比。 |
86
wangxiaoaer 2019-03-03 14:47:28 +08:00
@lhx2008 #11 我也觉得 java 不管是从可读性还是编码速度都很好,即使可能会有乱用设计模式绕来绕去,但是起码读起来很清晰,写起来也没有各种千奇百怪的符号。
最起码,除了泛型的 < > 和 lambda 的 => 其他都不需要组合键。 |
87
Cbdy 2019-03-03 15:17:31 +08:00 via Android
@wangxiaoaer C 语言我信,C++就算了
|
89
closedevice 2019-03-03 20:26:40 +08:00
忌讳半瓶子水的时候发表任何语言的评论,语言的好坏,得先等你深入了解并实战几门语言之后,有更好的结论.上来就来各个 XXXX 语言不好,你得举出各种同样情况的对比案例,然后才能进一步分析吧
|
90
sweetx523 2019-03-03 20:31:41 +08:00
半吊子水的学生==。
|
91
ifxo 2019-03-03 20:32:55 +08:00
主要是用的人多了,没人敢说它不行,好比皇帝的新衣,你会说自己傻吗
|
92
yingfengi 2019-03-04 08:54:04 +08:00 via Android
生态是一切。
|
93
haon 2019-03-04 09:02:51 +08:00
借楼问一下 go 的生态好在哪里
|