用 java 超过 10 年,golang2 年,就这两年的心得来看,golang 应该是能把 java 干死的。 但从招聘反馈的信息来看,java 的高薪资岗位明显多于 golang. 只怪 java 的沉淀太多,有很多事情 golang 可以替代的,golang 的实施成本要低很多,用 golang 的感觉也很舒服,但工作上因放弃 java 吃了大亏
1
leakeung 2018-06-23 23:06:46 +08:00 1
你想多了.
|
2
ToT 2018-06-23 23:11:31 +08:00
什么叫干掉啊。。。工具而已
|
3
a7a2 2018-06-23 23:14:22 +08:00 1
想多了,重要从一点看就能看出,例如安卓开发者使用 golang 开发 app 的数量对比 java 的就知道
|
4
xypcn OP golang 绝不是一个工具,真的很好用的,尤其是在流行的微服务开发,golang 的明显,适合创业项目,没有包袱
|
5
shiny 2018-06-23 23:17:01 +08:00
不是工具是什么
|
6
Raymon111111 2018-06-23 23:18:35 +08:00
生态不是一朝一夕的事情
全公司从上到下都是 java 的情况下换别的基本不可能 |
7
defel 2018-06-23 23:18:37 +08:00 via iPhone 1
个人觉得不可能,语言发展到今天,fortran 都还没挂,别说 java 了。
|
8
shiny 2018-06-23 23:18:47 +08:00 20
常言道:不要有了把锤子就到处去找钉子,但我们搞程序的往往会爱上锤子,把自己定义成锤子专家,甚至在论坛上提问锤子何时干掉锯子。
|
9
geeti 2018-06-23 23:19:36 +08:00
java 太繁琐,讽刺的是最近发现 James Gosling 所在的部门也是以 go 为主
|
10
xypcn OP golang 一个进程占 10M~20M,一个 JAVA 进程至少是 400 多 M,spring 全家桶,都是占内存大户,一个阿里云入门主机无任何压力跑几十 golang 进程,java 也就 2 个,再多就出乱子了
|
11
caixiexin 2018-06-23 23:32:46 +08:00 via Android 3
百足之虫,死而不僵,何况还没死呢。。
|
12
janus77 2018-06-23 23:36:03 +08:00
只有项目 技术被干掉的,这么几十上百年来 没听说过语言被干掉的,尤其是还在更新的现代性语言
|
14
superbiger 2018-06-23 23:46:47 +08:00 6
为了把题主这潭水搅浑,我选 rust
|
16
xypcn OP @superbiger rust 也行,反正只要 java 死了,就不会有读什么源码,jvm 优化了,当然只是堑时
|
17
Sparetire 2018-06-23 23:50:16 +08:00 via Android
"霍元甲,你嘛时候是荆门第一啊?"
|
18
miketeam 2018-06-23 23:50:39 +08:00 via iPhone
你的领导用 java,领导的领导也是,怎么推?让他们自己下岗?
|
19
wdlth 2018-06-23 23:51:24 +08:00
@xypcn 两个运行时都不一样,JVM 是虚拟机,执行 Opcode,能执行 Java、Clojure、Scala、Groovy、Kotlin 等至少 5 种语言。Go 目前并不包含虚拟机,不执行 Opcode,所以不同的平台架构下要生成不同的程序。
|
20
heww 2018-06-23 23:51:25 +08:00 via iPhone
去年起我们的项目就改为用 golang 了。微服务,不想用 java 系的 spring boot 就改为用 golang 了,我们之前用的都是 python。
|
21
ChenJHua 2018-06-23 23:52:20 +08:00 via iPhone
不存在的
|
23
cmuler 2018-06-23 23:58:07 +08:00 2
https://studygolang.com/articles/3838
感觉现在的新语言都是为了解决某些特定的问题而产生的,go 是为了解决一些 c++ 的痛点的。说实话我还认为 go 这样设计粗糙的语言根本不能写大型程序呢。如果要解决 io 密集型的问题,java 上的 netty 和 vert.x 了解下。 |
24
cmuler 2018-06-24 00:00:01 +08:00 1
我完全不了解为什么有这么多人会讨厌 java 这么优秀的语言, 更何况 jvm 的生态已经非常成熟了。
|
25
PDX 2018-06-24 00:02:12 +08:00 via iPhone
java 历史包袱太多,写法花样太少,和新东西一比真的很让人嫌弃。但是你要相信,java 可以很差,JVM 可是没人比得了。
|
26
dbow 2018-06-24 00:02:32 +08:00
干不掉,JVM 过于牛逼。
|
27
bumz 2018-06-24 00:06:15 +08:00
golang 何必干掉 java ?
|
28
orangeade 2018-06-24 00:26:04 +08:00 via Android 1
Apache 基金会一堆开源项目都是 Java 的
一个语言替代另一个语言一般是适用范围比较重合,并且新的语言比较容易普及吧,比如 Perl 和 Python,OC 和 Swift, 或者一个行业替代另一个行业,Android 上 Java 替代了各种用纯 C/C++开发手机 app 的平台 |
30
starcraft 2018-06-24 00:29:38 +08:00 via iPhone
明明是从高薪到底薪全方位碾压。你倒不如盼着 c/c++回春反干实际点。
|
31
yhzwy 2018-06-24 00:32:20 +08:00
大项目不还得用 java
当然作为程序员个人肯定是喜欢用 golang python 这种的。 |
32
xypcn OP |
33
applehater 2018-06-24 00:37:58 +08:00
语法糖不够,写个增删改查都要写一堆代码。
|
34
xypcn OP @applehater 有成熟的 orm,不难,我写过一个,能实现大部分 spring data-jpa 功能
|
35
j2gg0s 2018-06-24 00:43:46 +08:00
有生之年
|
36
Mitt 2018-06-24 00:45:49 +08:00
|
37
Mazexal 2018-06-24 00:47:05 +08:00
C#表示不服....java 主要是生态太好了
|
38
freedomSky 2018-06-24 00:51:42 +08:00 via iPhone 1
我们的产品运行环境有一部分是 AIX,开发环境是 linux,应用是 java 开发的,一点儿扩展功能我用了 go,写完了才发现目前 go 还不支持 AIX,😷
|
39
applehater 2018-06-24 01:02:20 +08:00
@xypcn 没泛型,简单的操作都得重复写代码
|
40
cyspy 2018-06-24 01:04:48 +08:00 via Android
golang 吃掉 scala、kotlin、clojure 和 groovy 的应用场景之前,graalVM 肯定已经把 golang 收归己有了。
|
41
miketeam 2018-06-24 01:14:59 +08:00 via iPhone 1
上面说 java 牛逼的,我不服。我们组的项目代码里面各种 handle,有时有找个函数最终执行的地方特么找半个小时,和我说架构优雅?封装到位?我呸!
|
42
miketeam 2018-06-24 01:16:00 +08:00 via iPhone 2
就倒入一个包,包名你也不看看有多长,这叫优雅?
|
43
sagaxu 2018-06-24 01:21:26 +08:00
Java 写着罗嗦,Go 更罗嗦,但 JVM 不错,Scala 和 Kotlin 是不错的选择。
Go 的确比 Java 省内存,但是内存不值钱啊,一个初中级开发,一个月的人力成本,至少能买 200G 内存了 |
44
miketeam 2018-06-24 01:22:20 +08:00 via iPhone
java 开发工具集又烂,没有像 Xcode 或者 vs 这样工业级的 ide 支撑,写代码简直是要命。出了谷歌不到的 bug 一群人就傻逼了……不要说没遇到大牛,特么国内大牛也就那样,谷歌不到的 bug 也是一愣一愣的
|
45
yylucifer 2018-06-24 01:24:50 +08:00
Java 流行的时候,别人问的是“ Java 何时干掉 C/C++”
|
46
MeteorCat 2018-06-24 01:27:22 +08:00 via Android
楼上说得对,C#以前天天说要替代 Java,最后 JD 还不是切回 Java
|
47
feiyuanqiu 2018-06-24 01:28:44 +08:00
我现在工作就用着 go,反正这语言不合我胃口就是了
|
48
xypcn OP @cyspy graalVM 可以肯定它难以成功,项目太复杂,java native 的事,十年前就关注过,关注过好长一段时间,好多企业在做,最早的 microsoft java,ibm eclipse 有的项目也在做,google 也做过,一直没有做好,主要的问题在依赖,java 包的循环引用,而 golang 相对来说单一些,没有包循环引用问题。oracle 也是不思进取,一直不做 native,现在才开始做可能是害怕 golang 之类的兴起吧。
|
50
incompatible 2018-06-24 01:50:32 +08:00 1
@xypcn 这个孰优孰劣还要看你起二十几个 go 进程是为了做什么。搞不好这些 go 进程做的事儿在一个 jvm 里写上二十几个 spring bean 就搞定了。
|
51
fancyhan 2018-06-24 01:54:13 +08:00
不构成竞争关系,两者并不是做一种事情的
|
52
incompatible 2018-06-24 01:57:41 +08:00 3
@miketeam 你这话句句透着无知。Eclipse 不是工业级 IDE ?它可简直工业得不能再工业了。甚至很多工业界的产品都是基于 Eclipse 平台构建的(我见过的比如 IBM 的 ClearCase / ClearQuest、呼叫中心大厂 Avaya 的 IVR 流程编辑器)。
JetBrains 的 Intellij IDEA 不是工业级编辑器? BABA、Google 这些大厂都在用的东西,我不明白你为什么对其视若无睹。也许是用不起?笑。 “出了谷歌不到的 bug ”指的是什么东西出了 bug ? IDE ? JDK ?你用的 Xcode 或者 llvm 出了“谷歌不到的 bug ”你确定你能搞定? |
53
notreami 2018-06-24 01:59:53 +08:00 4
都成年人了,还纠结什么编程语言?难道你们转另一种语言,能写 CURD 的程度,需要 1 个星期嘛??
语法、内存等这些压根不叫问题。真正的问题是开发效率和故障定位。举个例子,cpu 突然出现高频使用,大家多久能觉察到并定位问题呢? |
54
x7395759 2018-06-24 02:02:03 +08:00
干不掉
|
56
20015jjw 2018-06-24 03:42:45 +08:00 via Android
lz 活在梦里
|
58
Monstercat 2018-06-24 04:46:08 +08:00
@miketeam 惊呆了 第一次听说 Java 工具集不行的 IDEA 和 Eclipse 哪个不比 Xcode/VS 强?
|
59
wangxiaoaer 2018-06-24 06:15:11 +08:00 via Android
@blless 包管理 依赖管理 泛型 别扭的语法。
|
60
wangxiaoaer 2018-06-24 06:19:22 +08:00 via Android
@miketeam 我原以为就我是个半吊子二把刀,没想到你比我还 2。
|
61
janxin 2018-06-24 07:28:34 +08:00 via iPad
|
62
wwqgtxx 2018-06-24 08:02:22 +08:00 via iPhone
@miketeam java 这种严重依赖 ide 的软件居然说它没有工业级 ide,莫非你都是用 vim 在写呀
|
63
clino 2018-06-24 08:04:10 +08:00 via Android
但工作上因放弃 java 吃了大亏
这个楼主细说下? |
64
loongwang 2018-06-24 08:06:12 +08:00 1
语法繁琐,真正写代码需要多久?还不是设计花的时间最长
|
65
mejee 2018-06-24 08:08:56 +08:00 via Android
干掉是不可能的,除非你程序员上班不喝咖啡去玩老鼠
|
66
beastk 2018-06-24 08:21:00 +08:00 via iPhone 4
干掉又咋样,我还是用最强语言 php
|
67
miketeam 2018-06-24 09:05:54 +08:00 via iPhone
你们是不是对工业级 ide 理解有误啊,能用就是工业级 ide ? ij 写 Java 代码你们是在安慰自己很好用吗
|
68
fuxiaohei 2018-06-24 09:20:37 +08:00
@miketeam 如果 Xcode 那种算工业级,要笑掉大牙。代码自动提示不正常,debug 弱爆,一天崩溃几十次。多得是帖子吐槽 xcode 各种问题
|
69
baozijun 2018-06-24 09:22:42 +08:00 via iPhone
@miketeam 想到了微软 boy,在微软 boy 的心里,只有微软的产品才叫”生产力”,“工业级”。
|
70
miketeam 2018-06-24 09:25:12 +08:00 via iPhone
@wangxiaoaer 我写 Java 代码时间不长,有些业务场景需要需要参考 Java 来写出 swift,Java 的工具集不吹不黑真是难用,
|
71
v2orz 2018-06-24 09:33:49 +08:00 1
写了 10 年 java 楼主还能这么说,这到底是 10 年经验还是两年经验用十年?
在没有特定场景下的重量级项目前(就像大数据或安卓上的 Java ),个人认为 Go 还是难以推广开来 打包大小这种事,真的不会有太多人在乎的 |
72
cyspy 2018-06-24 09:51:12 +08:00 via Android
@xypcn 我个人其实对 native 不感兴趣,主要是新的编译器把包袱扔掉之后,主流语言都能编译上去共享库资源。性能上 jvm 本身也不差,就是有个 jre 的包袱而已。
|
74
iRiven 2018-06-24 10:21:48 +08:00 via Android 1
那些都是次要 有生之年 go 来一个重量级的图形库,解决一下我的痛点,这样子就舒服很多了,但是看到 golang 的那些实验仓库关于 gui 的部分很久没有更新 真令人绝望
|
75
nicevar 2018-06-24 10:31:24 +08:00 1
@miketeam 你自己写 Java 时间不长还喜欢胡扯,你要是说 vs 好用就还行,搬出 XCode 真是搞笑了,已经难用爱崩溃是出了名的,java 的 ide 无论是 eclipse 还是 idea 都甩 XCode 好几条街
|
76
wuhanchu 2018-06-24 10:35:35 +08:00
js 和 php 都活的好着呢。java 没太大问题还能用很久
|
77
sagaxu 2018-06-24 10:37:18 +08:00
@xypcn GraalVM 完成度已经不错了,不但打包小的多,内存占用也小的多,Go 的两大优势就没有了
https://vertx.io/blog/eclipse-vert-x-goes-native/ https://sites.google.com/a/athaydes.com/renato-athaydes/posts/a7mbnative-imagejavaappthatrunsin30msandusesonly4mbofram @miketeam 不会用和难用,有时候连自己都无法区分。 |
78
AngelCriss 2018-06-24 10:40:51 +08:00 via Android
@Mitt 解决是不可能的 cpp 远比 rust 好,作为第一批接触 rust 的人,我是深有体会。
|
79
blless 2018-06-24 10:43:25 +08:00 via iPhone
@wangxiaoaer 包管理,依赖管理真不是事,没有泛型不代表不能开发了,楼上有个评论我觉得蛮到位的,出了问题可以快速定位故障才是好的。go 的 pprof 是我用起来最舒服的,配合火焰图工具简直不要太爽,go get/fmt/vet 工具链基本只要装个 go 环境就把项目管理需要的东西都带了,连 import 不用都编译错误,至少可以规避很多低级错误。语法糖太多,tab 空格互用,反而让项目不同成员代码风格迥异,我反而认为 go 正是为了大型项目一些痛点来解决问题的。
|
80
lihongjie0209 2018-06-24 10:47:18 +08:00 1
别老想着一些骚操作, 老老实实写 KISS 代码不好吗???
|
81
lihongjie0209 2018-06-24 10:48:13 +08:00
@blless #79 说到包管理我想到了 npm
|
82
Cbdy 2018-06-24 10:48:37 +08:00 via Android
我就想问问,写 go 项目,是不是要把用到的库源码 copy 下来? go 有模块化系统这个设计吗?
|
83
ZSeptember 2018-06-24 11:29:12 +08:00
曾经我也是这么想的,做了一些项目以后,发现还是不可能的。
golang 要做一些复杂点的业务太繁琐了,不过做一些微服务还是可以,但还是要写很多模版代码,只能用代码生成技术。 个人的想法是自己的项目用 Go,公司的还是用 Java 吧。 |
85
xuhp 2018-06-24 11:44:06 +08:00
java 还能再苟十年
|
86
wangxiaoaer 2018-06-24 11:44:59 +08:00
@blless #79 快速故障定位,java 配合 ide 没觉得哪里痛。
import 这种仁者见仁吧,我认为是可以集成到版本控制中的,当然这个不算痛点,格式化同理。 说到依赖管理,非开源项目怎么提供直接可用的 go 包? 语法而言,写起来简直回到了蛮荒时代。map[string]interface{} 真的好看? ---------------------- 王垠批评 golang 的那篇文章,我觉得挺中肯。 |
87
wwqgtxx 2018-06-24 11:47:01 +08:00 via iPhone
@miketeam 说 ij 写代码还不好用的,还是回去老老实实的读读 help 文档吧,好吃只会骑自行车的说飞机功能弱爆了
|
88
cocode 2018-06-24 11:54:43 +08:00 via Android
怎么还有天天闹着要干掉 xxx 语言的啊,Java 是害你工作丢了么还是咋滴。。。
|
89
breeswish 2018-06-24 12:01:42 +08:00 1
哈哈楼主竟然是为了「就不会有读什么源码,jvm 优化了」而想让 java 被 golang 干掉。那么 golang 的 gc 了解一下? golang channel 怎么实现的? goroutine 泄露了解一下? golang ffi cost 太大怎么办?换个语言照样有一堆你不知道的问题。
|
90
tedzhou1221 2018-06-24 12:04:29 +08:00 via Android
作为个人的吐槽还可以
我现在要靠 java 吃饭,所以我很喜欢 JAVA |
91
woncode 2018-06-24 12:17:09 +08:00 via Android
我觉得说 Java 繁琐、历史包袱大的,怕不是还停留在五六年前吧。
用过 spring boot、spring cloud、spring data jpa 等 spring 的新项目吗,还是停留在认为 sping 家的东西只能做 ioc 和 aop,并且要使用 xml 做一大堆配置的年代。 拜托,用上面的那些 spring 新项目、基于 java 注解配置,我不相信其他语言做 web 开发、curd 操作、微服务,还能更加轻便、配置更加少,而且是不管做大项目,还是小项目。 并且 java 可是几乎全方位的解决方案都有,不想其他语言可能你在某个方面很爽,但是扩展了一点东西后可能发现自己得全部手写实现了。 |
92
xypcn OP @cocode java 是在浪费资源. 干掉什么什么是没意义,人要进步,社会也要进步。当然也有守旧的.
一个人的精力是有限的,不可能同时用多个语言,就后台而已,java 的那些事 golang 完全可以取而代之. java 不做后台,除了 IDE,好象其它方面特别难用,开发 IDE 也是原因先发优势。 java 现在的体系很庞大,确实很难死,除非有新的公司用 golang 取得巨大的的成就。 现在成功的最有名是 docker. 每年还有很多 java 的新生补充。 用第二语言至少在精通一门语言之后,精通第一门语言至少需要 5 年时间,第二语言也至少需要 1 年以上,java 存在很长一段时间。 如果 golang 与 java 都精通后,会发现微服务开发方面 golang 确实比 java 好很多倍,这个谁用谁知道,有些事情是没有比较就没有伤害,当然有这个感觉你至少工作了 6 年以上。 |
93
Mitt 2018-06-24 12:26:15 +08:00 via iPhone
@AngelCriss 解决痛点跟比 cpp 好是两码事
|
94
casillasyi 2018-06-24 12:30:34 +08:00 via Android
未来可能是 rust,swift 和 kotlin 三足鼎立,java 暂时只可能被 kotlin 替代
|
95
blless 2018-06-24 12:33:33 +08:00 via iPhone
@wangxiaoaer #86 我说的不是开发过程 debug,而是一些比如死循环,内存泄漏,goroutine 泄露之类排查,go 的 pprof 我感觉比别的语言做的好 而且简单易用。针对性优化,排查疑难杂症都很好用。说到这个我还想起来 go 的单元用例 /benchmark,相比其他语言都要第三方库支持也算友好易用。很多人写代码都不注重这些,但是项目管理里就很重要了。
|
96
casillasyi 2018-06-24 12:35:21 +08:00 via Android 1
至于先用层主一直强调的 java 干的事 go 都能干,还比你占用内存低。你就说哪一种静态语言有不能干的事吗?为了追求内存低,你为何不用 c 不用汇编?内存只是工具选择时的一方面,语言的设计,生态等等都很重要
|
97
wangxiaoaer 2018-06-24 12:41:14 +08:00
@blless #95 pprof 这个东西我倒没有接触过,没有发言权啊。
不过说起单元测试,感觉和源文件混在一起搞成文件爆炸,真不爽。 越来越觉得王垠说 go 的设计者是一帮偏执狂还是有道理的。 ---------------------- 我自己尝试过 go,但是写起来真的是感觉步步维艰,无从下手,python 也一样。 java js 感觉就是可以闭着眼睛写,加上 IDE,简直要飞起。 我对 java 唯一的抱怨就是包过大,spring 的项目动不动就上百兆(不是太大,但总归自动部署不便),频繁的重启也耗费时间,另外就是内存占用,虽然是白菜价了。 go 的二进制发布,轻量安装包,双击运行,内存占据不大,很合我的口味,这也是当初尝试 go 的主要原因,可惜实在坚持不下去。 |
98
woncode 2018-06-24 12:45:56 +08:00 via Android
@xypcn 我觉得放着 java 全面的生态不用,而要重新去造轮子才是浪费资源呢。
什么?要跟 java 比后台以外的领域?那看来只能认怂了,java 本来就是专注于后台领域。 你想比前端?那去干掉 js 吧,你想比 ai ?那去干掉 python 吧? 莫非这里说的 golang 干掉 java 不是在后台干掉 java 吗?还是说 golang 的目标是全领域的干掉所有语言,一统江湖? 难道我们大伙都走错片场啦?😂 |
99
CoderGeek 2018-06-24 12:46:22 +08:00
too young too native
|
100
blless 2018-06-24 12:49:08 +08:00 via iPhone
@wangxiaoaer #97 2333,我只能说应该是八字不合了,测试用例我本身认为是另一种文档,是文本文档的补全,而且更直观 更高效,所以我觉得跟源码放一起是没有问题的。😂我对 nodejs 也有同样的感觉,压根不知道怎么写
|