V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
Sniper416
V2EX  ›  程序员

一直在说 go 相比 Java 生态上还差的很远,那么具体差在哪些地方呢?

  •  
  •   Sniper416 · 2019-12-06 14:47:40 +08:00 · 13248 次点击
    这是一个创建于 1832 天前的主题,其中的信息可能已经有所发展或是发生改变。
    80 条回复    2020-11-26 14:02:15 +08:00
    Leonard
        1
    Leonard  
       2019-12-06 14:52:14 +08:00   ❤️ 8
    差在找不到工作
    Raymon111111
        2
    Raymon111111  
       2019-12-06 14:54:27 +08:00
    举个例子说, 各种中间件的交互

    java 都是非常成熟的
    Sniper416
        3
    Sniper416  
    OP
       2019-12-06 14:55:52 +08:00
    @Leonard 这倒是
    zunceng
        4
    zunceng  
       2019-12-06 15:06:46 +08:00
    k8s 云原生这套 早已超出语言的范畴了 所有语言都一样 我都不知道他们说的生态是指什么
    392039757
        5
    392039757  
       2019-12-06 15:09:01 +08:00
    java 各种轮子都很多,很多项目里面都有代码生成的插件,开发效率很高
    Citrus
        6
    Citrus  
       2019-12-06 15:11:27 +08:00
    Java 想要干什么,基本上都有 1 ~ 2 个最成熟的,用的人非常多的库可以选择。而 Go,先不说库不多,经常还会出现找到一堆库,Star Commit Watch 都差不多,不知道用什么好。
    另外依赖管理这个用过的都懂,也没啥好说的了。。。
    sonxzjw
        7
    sonxzjw  
       2019-12-06 15:17:18 +08:00   ❤️ 1
    指的是各个领域(鉴权、数据库操作、api 等这些领域)的可选度和成熟度没有 java 的好
    在某些所谓的“x 级架构师”角度看,就是在找“架子”的时候不能像方便面一样随手拿随手就能吃得香
    wangxiaoaer
        8
    wangxiaoaer  
       2019-12-06 15:19:15 +08:00
    我就想问一下,go 能不能在不提供源码的情况下提供类库供第三方调用并支持跨平台?
    manami
        9
    manami  
       2019-12-06 15:24:38 +08:00 via Android
    对比 java,移动端生态这个软肋明显
    raincode
        10
    raincode  
       2019-12-06 15:34:04 +08:00
    web 上没 spring 这种量级的框架,大多数程序员还是做 web 居多吧
    DelayNoMore
        11
    DelayNoMore  
       2019-12-06 15:35:39 +08:00
    java 是调包语言,go 是造轮子语言
    Yoock
        12
    Yoock  
       2019-12-06 15:39:10 +08:00 via iPhone
    大数据这块 go 很弱,而且深度学习方面 go 也几乎为 0
    fengjianxinghun
        13
    fengjianxinghun  
       2019-12-06 15:41:25 +08:00
    @Yoock 大数据就算了,深度学习不都是调 c++/cuda so 么,什么语言有啥区别。
    wuwukai007
        14
    wuwukai007  
       2019-12-06 15:42:52 +08:00
    现在处于造轮子阶段,java 处于优化轮子阶段,品一下
    murmur
        15
    murmur  
       2019-12-06 15:43:37 +08:00
    go 还在造轮子,java 已经开始布局立体车库了
    gamexg
        16
    gamexg  
       2019-12-06 15:44:34 +08:00 via Android
    @wangxiaoaer 可以作为第三方库
    Vegetable
        17
    Vegetable  
       2019-12-06 15:44:40 +08:00
    @wangxiaoaer 可以吧,不过还是通过 c 来做,类似这种 http://snowsyn.net/2016/09/11/creating-shared-libraries-in-go/
    Vegetable
        18
    Vegetable  
       2019-12-06 15:46:55 +08:00
    @Vegetable https://medium.com/@shijuvar/using-binary-only-packages-in-go-667bd7b123c8 这个文章也再说,不过自己没试过,好像有 //go:binary-only-package 的编译标签
    fengjianxinghun
        19
    fengjianxinghun  
       2019-12-06 15:47:21 +08:00
    @Vegetable 不能跨平台,都编译成 so 二进制了,那显然平台架构相关。
    hijoker
        20
    hijoker  
       2019-12-06 16:02:34 +08:00
    就一句话,大数据相关,你看看基本都是 Java 的天下
    Java 的生态是最完善的,这一点毋庸置疑
    hijoker
        21
    hijoker  
       2019-12-06 16:02:51 +08:00
    @Leonard 哈哈哈,的确
    javapythongo
        22
    javapythongo  
       2019-12-06 16:03:51 +08:00 via iPhone   ❤️ 1
    kafka 没一个好用的客户端...
    Vegetable
        23
    Vegetable  
       2019-12-06 16:18:21 +08:00
    @fengjianxinghun 这倒是,不过这个对于没有 vm 的非脚本语言来说,不是很现实的样子
    kernelpanic
        24
    kernelpanic  
       2019-12-06 16:28:59 +08:00   ❤️ 1
    库的质量,java 的很多库都是经过大厂验证过的
    hongzz
        25
    hongzz  
       2019-12-06 16:31:17 +08:00
    @Leonard 真实
    lhx2008
        26
    lhx2008  
       2019-12-06 16:32:16 +08:00 via Android
    做 web 的话,java springboot 搭架子方便点,其他配件也就那样,随便用用也都是坑
    robot1
        27
    robot1  
       2019-12-06 16:44:50 +08:00
    宁愿光脚,我也不愿缠裹脚布
    aeli
        28
    aeli  
       2019-12-06 16:57:44 +08:00
    大批量便宜的基础码农
    zunceng
        29
    zunceng  
       2019-12-06 17:11:13 +08:00
    k8s docker 是 golang 开发的 java 的程序就不能跑上面了?
    tensorflow 也有提供 golang 和 java 的 language bindings

    给自己划了个圈子 还说在这个圈子里别人生态上还差很远 真实黑人问好脸了
    Sendya
        30
    Sendya  
       2019-12-06 17:50:29 +08:00
    可能是一行代码跑个 world 和一行代码跑个 "hello world" ?
    Mohanson
        31
    Mohanson  
       2019-12-06 18:12:25 +08:00 via Android
    最美不过夕阳红
    fox0001
        32
    fox0001  
       2019-12-06 18:36:18 +08:00 via Android
    spring 已经超过 10 年的验证,go 没有这种库
    gvinaxu
        33
    gvinaxu  
       2019-12-06 18:49:50 +08:00
    宁愿光脚,我也不愿缠裹脚布
    reus
        34
    reus  
       2019-12-06 19:03:51 +08:00
    @Citrus 2019 年了还拿依赖管理说事,只能说是知识过时。
    zjsxwc
        35
    zjsxwc  
       2019-12-06 20:01:40 +08:00 via Android
    思考了下嗯~~ golang 相比 java 不能写安卓程序
    HuHui
        36
    HuHui  
       2019-12-06 20:05:55 +08:00
    开发用的 ide 都不是很成熟
    Moker
        37
    Moker  
       2019-12-06 20:40:54 +08:00
    @wangxiaoaer golang 的 plugins 功能 不过现在支持有限
    uxstone
        38
    uxstone  
       2019-12-06 20:55:21 +08:00   ❤️ 2
    说句难听的,nodejs 的包管理做的都比 golang 的好用
    secondwtq
        39
    secondwtq  
       2019-12-06 22:00:00 +08:00
    我猜是差一堆历史包袱?
    gowk
        40
    gowk  
       2019-12-06 22:01:09 +08:00 via Android   ❤️ 1
    宁愿光脚,我也不愿缠裹脚布
    Foreverdxa
        41
    Foreverdxa  
       2019-12-06 22:04:45 +08:00
    看看大家的评论的就行了,哈哈
    yixinlove
        42
    yixinlove  
       2019-12-06 22:16:05 +08:00
    @javapythongo 我现在用的 Shopify/sarama 库感觉还可以,也比较成熟,start 数不少
    qoras
        43
    qoras  
       2019-12-06 22:17:08 +08:00
    组件成熟度相差较大, 基本所有业务场景 java 都有现成经过检验的方案
    guokeke
        44
    guokeke  
       2019-12-06 22:26:40 +08:00
    @uxstone npm: 难听的???
    gimp
        45
    gimp  
       2019-12-06 22:31:46 +08:00
    举一个例子吧,最近工作用遇到的

    组里项目需要对接一个平台 HTTPS 接口,因为是私网,证书是自签的,我用 Rust 写的中间件调用,各种问题,最后没办法,用平台提供的 Java 示例并修改 JDK 相关安全配置解决了

    不是说其它语言解决不了,而是如果我继续用 Rust ( Python,Node.js 同理)需要花费很长的时间来验证,在私网调试很麻烦的前提下,老老实实用平台提供的例子完成功能对接,就是最正确的选择
    InkAndBanner
        46
    InkAndBanner  
       2019-12-07 00:14:30 +08:00
    本来还打算等自己技术成熟了开始搞搞 golang,看了大家的评论有点劝退啊哈哈哈哈哈
    Trim21
        47
    Trim21  
       2019-12-07 00:19:37 +08:00 via Android
    @uxstone npm 能算是差的例子吗…
    lxml
        48
    lxml  
       2019-12-07 01:37:11 +08:00 via Android
    @uxstone 没懂,能举个例子,差在哪儿?
    blless
        49
    blless  
       2019-12-07 02:06:48 +08:00 via Android
    @zjsxwc gomobile 了解下
    ppphp
        50
    ppphp  
       2019-12-07 03:42:51 +08:00   ❤️ 1
    依赖社区的程度主要是取决于程序员的能力和乱七八糟的需求的复杂程度,比如鉴权代码,有的程序员只能调官方 sdk,有的能撸一份,但是其中的加密解密库需要依赖标准库,有一些程序员可以从矩阵加加减减开始写,还有的直接拿针在光盘上戳戳就好了。
    工作里学 sdk 库和开发库的效率,需要程序员能力的工资始终是很复杂的问题,举例 sdk 改改就不能用了,deprecated 了。
    cosmtrek
        51
    cosmtrek  
       2019-12-07 05:09:47 +08:00
    @HuHui 你可以试下 goland 2019.3
    okwork
        52
    okwork  
       2019-12-07 09:03:44 +08:00 via Android
    #45 楼提到的这个问题是普遍的,不是大厂的话,多少都会依赖第三方 sdk,厂商大多提供 JAVA,PHP,Python 等语言的 sdk,其他语言的很少,只能自己写。
    passerbytiny
        53
    passerbytiny  
       2019-12-07 09:26:33 +08:00
    Spring @ Pivotal @ 戴尔 /EMC/VMware
    Hibernate @ Jboss @ Red Hat @ IBM
    在提 Red Hat 之前,IBM 就是 Java 社区的重头贡献者,并且 IBM 的商用方案有不少是用 Java 实现的
    Oracle 是不是 Java 的重头贡献者另说,但它确定是 Java 的重度依赖者

    而 Go 呢,就一个 Google。就这还有人有“Go 是 Google 的,不是社区的”的怨念。
    wpf375516041851
        54
    wpf375516041851  
       2019-12-07 10:29:00 +08:00   ❤️ 1
    Java 的圈子人多,声音大,工作多,低中高档都有,golang 十年圈子还那么大,未来是云的天下,但开发云的人就那么多,程序员正在杀死程序员
    rophie123
        55
    rophie123  
       2019-12-07 10:34:00 +08:00 via Android   ❤️ 1
    golang 招不到人啊,我们慢慢改 Java 了
    yuanmomo
        56
    yuanmomo  
       2019-12-07 10:55:00 +08:00
    初学 go,但是用了 Java 好多年。go 有 go 的好处,自从用了 go,我好多的插件,首选是 go,不用装各种依赖,配置各种环境,丢更新别人直接就可用,这个是让我最开心的。说说,最近用 go 还不习惯的地方:
    1. 缺乏好用和统一的版本依赖管理。go modules 的版本管理( gomobile 还不支持),严重依赖 tag,好多旧的项目不规范,用起来还是不好用。
    2. 第三方类库,Java 有 Apache 和 guava, go 我还没有找到类型这样的比较全面的类库用(初学,如果有人推荐,先谢谢啦)。

    其它的不是太麻烦,就是需要了要在网上找一找就行了。至于框架的选择,确实没办法,我想选个 orm,就发现有好多: beego orm、gorm、sqlx、gorp、xorm,也没有很官方或者权威的推荐,朋友都说不要用,让我改改我的思维了。
    charlie21
        57
    charlie21  
       2019-12-07 13:12:12 +08:00
    C 语言和 Java 差在哪里呢?

    慌个屁
    reus
        58
    reus  
       2019-12-07 14:04:46 +08:00   ❤️ 3
    差在没人给巨婴喂饭,差在南郭先生没法混下去。
    苍蝇才需要屎山做生态。
    Nazz
        59
    Nazz  
       2019-12-07 14:38:34 +08:00
    @wangxiaoaer WASM 了解下
    mz02005
        60
    mz02005  
       2019-12-07 16:19:11 +08:00 via iPhone
    无非就是轮子的多少,java 轮子多,很多功能都有人帮你写好了,你的工作量不就少了
    zibber
        61
    zibber  
       2019-12-07 17:04:05 +08:00
    统一天下的框架
    jeffh
        62
    jeffh  
       2019-12-07 18:11:15 +08:00
    java 码农便宜,并且有很多成熟的解决方案,社区里的东西很完善,不会有解决不了的问题
    fanpei0121
        63
    fanpei0121  
       2019-12-07 18:22:08 +08:00
    用 go 一年多,没觉得生态差,该有的都有。
    SpiderXiantang
        64
    SpiderXiantang  
       2019-12-07 18:32:30 +08:00
    都没到点子上 java 牛在 JVM 我现在做得 scala 用的全是 java 的类库
    594duck
        65
    594duck  
       2019-12-07 18:58:53 +08:00
    不出所料,GO 们上线开始喷了,连工程都不懂的 K8S 们也上来了。看戏
    hangszhang
        66
    hangszhang  
       2019-12-07 19:52:48 +08:00
    Spring 就是 Java 最强的护城河
    iyaozhen
        67
    iyaozhen  
       2019-12-07 21:33:27 +08:00
    最明显的就是大数据这块,只能用 Java。

    web 这块也缺少 spring 这种大统的框架
    blless
        68
    blless  
       2019-12-07 21:48:39 +08:00
    @hangszhang 稍微大点的厂自写一个框架也不算难事,而且如果真的用现在云原生趋势来看,原本很多框架集成的功能,正在慢慢从语言层面剥除,比如现在火热的服务网格。业务只需要按照接口标准完成请求,其余安全、流量、监控等很多原本语言强大生态带来的优势,在新的云原生框架下荡然无存。并不是说 JAVA 也不能用这些特性,但是很大程度上其实是进一步削弱了语言生态优势。尤其是在 web 开发领域,我并不觉得 JAVA 有任何优势,我上次看 Dubbo 已经有 Go 的实现了。
    wzwwzw
        69
    wzwwzw  
       2019-12-07 23:46:20 +08:00   ❤️ 1
    招人不容易吧,毕竟 Java 马上上千人投简历。
    gejun123456
        70
    gejun123456  
       2019-12-08 09:00:32 +08:00 via iPhone
    @blless 大厂基本都用的 spring,dubbo 加 springboot 用起来更方便。
    useben
        71
    useben  
       2019-12-08 10:04:21 +08:00
    哪个东西不是逐渐发展起来的
    nicevar
        72
    nicevar  
       2019-12-08 10:07:26 +08:00
    Java 程序稳定的东西太多了,目前 go 这方面还很欠缺,比如第三方库,Java 能找出一大堆,Go 很多都没有,或者有那么几个还到处都是 bug,根本无法用于生存环境
    fuyufjh
        73
    fuyufjh  
       2019-12-08 10:43:33 +08:00
    其实并没有高下之分,只是后端程序员们用惯了 spring 之类的框架不愿意换而已
    default7
        74
    default7  
       2019-12-08 11:10:38 +08:00
    @wpf375516041851 「程序员正在杀死程序员」确实如此!
    wingoo
        75
    wingoo  
       2019-12-08 11:26:20 +08:00
    还是要看中趋势
    趋势是 大一统的框架会被弱化, 最终会当做基础设施, 就像虚拟机一样, 只需考虑你的负载需求
    实现的语言层面随意, 但冗余的最终会被替代
    Rorysky
        76
    Rorysky  
       2019-12-08 14:07:28 +08:00
    谈生态,我 C#服过谁?
    jrtzxh020
        77
    jrtzxh020  
       2019-12-09 09:12:04 +08:00
    @Trim21 npm 虽然缺点很多,至少上手简单,能解决 90%以上日常开发依赖包问题。
    cco
        78
    cco  
       2019-12-09 09:33:53 +08:00   ❤️ 2
    Go 项目组很难招到 Go 开发者。
    Go 开发者很难找到 Go 语言开发的工作。
    另外,上面大批 Go 吹大约没脑子,我又会写 Java,又会写 Go,差了啥了?还是说你们就只会 Go,作为既得利益者,死命喷其他语言,来提高你们的利益?
    编程语言是工具,并且大多都相通的,不清楚有什么好喷的,有这时间去给 Go 造造轮子不好么?
    另外,回答题主问题,差哪了?举个栗子,参考 AWS 和 VPS 的差别。
    liuyibao
        79
    liuyibao  
       2020-11-26 14:01:35 +08:00
    Go 做 web 开发生态确实差,都自己造轮子,轮子还很差劲。不说别的,就说数据操作这块,有 mybatis,jpa 这种稳定好用大家共识的库么
    liuyibao
        80
    liuyibao  
       2020-11-26 14:02:15 +08:00
    都 2020 年了啊。。。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5383 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 03:01 · PVG 11:01 · LAX 19:01 · JFK 22:01
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.