V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
shuperjolly
V2EX  ›  Java

10 年后,大家觉得 Java 的地位会不会被 go 或者 node 之流替代掉

  •  
  •   shuperjolly · 2019-07-07 23:04:45 +08:00 · 19803 次点击
    这是一个创建于 1971 天前的主题,其中的信息可能已经有所发展或是发生改变。

    如题,目前有这个趋势吗?

    135 条回复    2019-07-19 15:50:28 +08:00
    1  2  
    darklowly
        101
    darklowly  
       2019-07-09 02:31:11 +08:00   ❤️ 6
    1 node 不太可能

    2 golang 也不太可能,我大概从 2012 年低开始用 go,2016 年开始全职用 go。看过无数的 go 语言的开源项目,能够把 go 语言用好的不多。

    主要原因是,现在市面上的大规模教育和学习的方式是基于面向对象的模式构建的,所以大家形成了一套用面向对象模式解决问题的思路。


    如果把 C 语言看成爷爷,C++就是儿子,C++这儿子把家族发扬广大光大,但是引入了太多东西,搞的太复杂,Java 就是孙子,把 C++这爹犯的错误纠正了一些,所以 Java 这孙子其实很多地方设计的刚刚好。

    C++是 C 语言的扩展版,解决了很多不方便的问题,以及引入了新的编程模型,以及代码的组织方式,但是总体来说太复杂,所以实际工作中,用的都是 C++的子集,就怕新手喜欢秀特性,害怕别人不知道自己懂这个特性,非要到处用。

    Java 是 C++的阉割版,相对于 C++来说,对语言进行了限制,让大家写代码不要那么潇洒任性。相对于 C 语言来说,限制了指针(同时也限制来手动内存管理),增加了面向对象模型(限制了多重继承)。


    go 语言是在另一条路上改进的 C 语言

    首先看一下这段 C 代码
    ```
    struct bird {
    char *name;
    };

    const char *bird_get_name(struct bird *b)
    {
    return b->name;
    }
    ```

    再来看一下这段 go 代码
    ```golang
    struct Bird {
    bird string
    }

    func (b *Bird) getName() string {
    return b.name
    }
    ```

    在语法上改进了 C 语言的很多小问题,保留了指针,去掉了手动内存管理,加上了很多方便用的库

    另外一个改进是,看一下 C 语言里面的命名方式 bird_get_name, 一般的 C 代码的命名方式是 模块+功能,例如内存模块可能是 mem_xxxxx. go 语言里面把模块组织成包,那么就变成了 mem.xxxxx,同时限制了包的循环引用。

    这一个改进对于系统开发而言是非常好的,但是对于业务开发而言却不太好。

    因为对于系统开发而言,很容易按照功能分模块,例如内存管理功能,文件系统功能等等,业务开发一般是分层模式。换句话说,go 语言很好的支持了按照模块组织代码,但是按照分层模式组织代码却很别扭,但是 java 两样都可以。


    3 如果.net core 继续发展,听说微软在.net 5 里面要搞成一个夸平台的,通用平台,取代 java 的很可能是 C#
    q397064399
        102
    q397064399  
       2019-07-09 02:40:53 +08:00 via iPhone
    @darklowly
    c#就算了,它爹的黑历史太多,另外投资微软的技术,真的很容易没饭吃。
    darklowly
        103
    darklowly  
       2019-07-09 03:02:36 +08:00
    @q397064399

    微软现在对待技术的态度,比之前好很多了,而且甲骨文比微软好不到哪里去,google 呢喜欢搞潮的东西,今天搞一套,明天搞一套,大家不亦乐乎,幸苦的都是程序员自己。
    orm
        104
    orm  
       2019-07-09 06:41:11 +08:00 via iPhone
    java 一直在发展,例如 GraalVM
    jaskle
        105
    jaskle  
       2019-07-09 07:01:19 +08:00 via Android
    个人感觉:现在的语言呈现多元化,百花齐放,开源项目和组织越来越多,每种语言都在寻找自己的定位,基本上是各持一把刷子,比如最新流行的 ai 平台是基于 c++和 Python,erlang 也占了一部分集群市场,node 更是中小公司快速起家的武器,还有 go 这种密集计算的语言,总体来说你想用什么就得选什么,人家开源组件是 go 做的,你就得用 go 开发,就是这样
    n1dragon
        106
    n1dragon  
       2019-07-09 07:10:15 +08:00 via iPhone
    现在我们的新项目都直接上 AWS Lambda with node or python. 只有传统企业项目才用 Java
    whileFalse
        107
    whileFalse  
       2019-07-09 08:26:24 +08:00
    @n1dragon 我也看好 Lambda。
    好像有一个性能测试,Lambda 中 Go 比 Node/Python 的性能好多了。
    不过业务开发这玩意儿,在乎性能的不太多……
    starsriver
        108
    starsriver  
       2019-07-09 08:49:53 +08:00 via Android
    十年前有人说过 php 会被 java 代替
    现在 php 活的好好的,而且发展不慢。

    五年前有人说过 php 会被 node 代替
    现在 node 也逐渐沦为和 php 一样的东西
    talk2moon
        109
    talk2moon  
       2019-07-09 09:21:35 +08:00 via iPhone
    这个要看 oracle 作不作
    halk
        110
    halk  
       2019-07-09 09:50:10 +08:00
    @jitongxi 想当年这句话说的是 COBOL
    不知道现在核心系统里 cobol 还剩多少
    Hanggi
        111
    Hanggi  
       2019-07-09 09:56:42 +08:00
    @starsriver Node 只是最近讨论的少了,国内外用的实际上真的很多,特别是项目初期。
    sirm2z
        112
    sirm2z  
       2019-07-09 10:08:56 +08:00
    楼上几个 go 能取代 node 的观点应该是脱口而出
    前端垄断这点很难取代
    node 之于前端的生态链就像 java 的生态一样
    跟平台绑定,入门开发就需要掌握
    KuroNekoFan
        113
    KuroNekoFan  
       2019-07-09 10:19:30 +08:00
    反正 java 码农就是量大够用,生态也足够好....刚好国内还是处于堆人数解决问题的阶段,那就接着 java 咯..

    不过看起来讨厌 js 的人是真的很多
    yunson
        114
    yunson  
       2019-07-09 10:45:22 +08:00
    各有特色,各有应用之处,取代应该不至于
    jaskle
        115
    jaskle  
       2019-07-09 10:59:10 +08:00 via Android
    感觉好多人看不起 node,我从 c++转 Java,最后转 node,最后我的感觉是:没有最好的,只有最合适的,老板让你做个项目,你掏出 Java 撸了一个月,结果用 node 的一个周,你在跟老板谈集群框架大数据。最关键的是启动一次几分钟,我都等疯了,掏出 node,双击跑起来,有 bug 当场改,要多爽有多爽。跟我说性能不行?那我明确告诉你:数据库才是瓶颈,常见业务根本没有密集计算,反而 Java 不用 nio 连接数和性能远不如 node。
    windyboy
        116
    windyboy  
       2019-07-09 11:20:34 +08:00
    c 都活得好好的,谈谁取代谁
    java 要死,也是 oracle 玩死
    Jonasen
        117
    Jonasen  
       2019-07-09 11:23:35 +08:00
    没有最好的语言,只有最合适的语言,每个人都有自己的角度,所谓的会不会被替换也是站在个人的角度看问题,我从来不认为某个编程语言有多好,也不会认为哪个语言会被替代。
    --------别问,问就 PHP 是世上最好的语言[手动狗头]!!
    liuhuansir
        118
    liuhuansir  
       2019-07-09 11:25:43 +08:00
    @jaskle 啥样的系统用 Java 撸一个月,node 只要一周?水平差不多的话,Java 开发速度不比 node 慢
    ycz0926
        119
    ycz0926  
       2019-07-09 11:30:18 +08:00
    我以前觉得,套模板的活,python 和 ruby 会是主流,api 的实现,go 会是主流,但是,我又发现,同事用 laravel 在写 api,而二线城市,java 的就业机会始终是最多的 ~
    jaskle
        120
    jaskle  
       2019-07-09 11:35:03 +08:00 via Android
    @liuhuansir 举例说明,时间不一定准,估计差一倍应该是有,换 node 后总体感觉就是很爽。
    talk2moon
        121
    talk2moon  
       2019-07-09 11:38:54 +08:00 via iPhone
    @axwz88 好处是不用写实体类,坏处嘛就是验证不做到位会有类型转换错误,然后 idea 一堆强转换提示
    rockyou12
        122
    rockyou12  
       2019-07-09 11:41:10 +08:00
    @jaskle 只能说你们业务可能太野太简单了……表可能就 10 张以内。我们现在经常做 100 表网上,关系要是用外键起码也有 20+,这种系统用 node 做我确实不晓得怎么管理。更不要说后期维护 node 要怎么做重构或者单纯加功能……
    TheWalkingDead
        123
    TheWalkingDead  
       2019-07-09 11:43:59 +08:00
    @n1dragon
    现在我们的新项目都直接上 AWS Lambda with node or python. 只有传统企业项目才用 Java
    ---------------------
    把 java 玩到炉火纯青的阿里巴巴被吃了。
    friddle
        124
    friddle  
       2019-07-09 11:50:26 +08:00   ❤️ 1
    java 肯定不会被 node 取代。node 能干啥?
    go 和 java 有部分有交叉。但是 java 比 go 更适合大型商业型软件。尤其是商业性比互联网性质要浓的。毕竟招 go 的程序员比 java 的程序员贵多了。
    取代 java 的语言。必须比 java 入手更简单。库更多更稳定。生产力更猛。kotlin 可以算半个吧。scala 肯定是不行的。go 和 java 根本不是面向同一个商业场景。

    未来新项目:
    底层 c,
    rust 取代部分 c++.
    go 取代部分网络性质较重的业务层。
    java 和 kotlin 相互做用于业务型后端。
    python:新手入门或语言不重要的领域(比如机器学习)。
    至于 node,除了写页面模板源(前面还必须有 cdn 扛着)还能干啥。
    javascript 肯定不死。但是应该有很多项目用 typescript。
    tozp
        125
    tozp  
       2019-07-09 12:17:30 +08:00
    会取代一部分,不会取代整个 java 生态,因为 java 本来也在发展进步。

    至于 go,不少用过的人都表示非常喜欢,哈哈
    ihipop
        126
    ihipop  
       2019-07-09 12:19:45 +08:00 via Android
    node 暂时看不到可能性,go 不好说。
    Hanggi
        127
    Hanggi  
       2019-07-09 12:23:04 +08:00
    @friddle Node 能干啥自己查查不就知道了,Node 能干啥都不知道。python 语言不重要的领域,看来 python 能干啥也不知道。还有啥不知道,让大家帮忙科普一下。
    blless
        128
    blless  
       2019-07-09 12:33:50 +08:00 via Android
    虽然目前是 go 可能取代 java 系统层,但是业务生态起来之后也很难说,很多业务也需要多线程高并发啥的,优势还是不小的
    friddle
        129
    friddle  
       2019-07-09 12:51:27 +08:00
    @Hanggi
    能干啥和合适啥不一样。python 确实有一些比较成功的项目和成功应用场景。但是现在很少拿来做大型项目的技术选型。
    至于 node。确实孤陋寡闻了。假如有成功的项目。愿意了解下。
    Gea
        130
    Gea  
       2019-07-09 13:17:41 +08:00
    go 和 node 都取代不了,有希望替代的话,可能要再新出语言或者 go 的大改

    @friddle 分析的很对,但是有一点做 kotlin 的一般懂 java,不懂 java 的,学 go 和学 kotlin 也差不多,如果要学 kotlin 还不如学 java,我觉得 kotlin 又有点尴尬了。最后,你为什么不分析一下世界上最好的语言 php (手动狗头
    ArJun
        131
    ArJun  
       2019-07-09 13:22:01 +08:00
    @jaskle 支持你的观点,业务完善无 bug 才是王道,当数据量大的时候其实做分流都差距不大,数据库的影响倒是很大差别,个人也喜欢 node,比起 java 没那么麻烦
    ArJun
        132
    ArJun  
       2019-07-09 13:23:47 +08:00
    @friddle 简单的业务 node 做的其实还是很多的,太复杂大型项目不好用,不太好管理
    Cellei
        133
    Cellei  
       2019-07-09 18:25:39 +08:00
    哪位大佬来分析一下 Rust
    chihiro2014
        134
    chihiro2014  
       2019-07-10 00:17:36 +08:00
    面向金钱开发,其实语言被淘汰跟我们关系不大。
    毕竟遇上金融上的玩意还是 java 最好,go 和 java 在安全性上完全没法比。
    掌握好熟练的代码能力,远比去思考啥时候语言被淘汰来的更加实际。
    cmonkey
        135
    cmonkey  
       2019-07-19 15:50:28 +08:00
    当然是被 Rust 革命
    1  2  
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1066 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 19:55 · PVG 03:55 · LAX 11:55 · JFK 14:55
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.