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