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

老哥们,目前 Java 和 node.js 后台都会一点,现在想深入一个方向,怎么选?

  •  
  •   cjh1095358798 · 2019-06-01 10:22:45 +08:00 · 9946 次点击
    这是一个创建于 2002 天前的主题,其中的信息可能已经有所发展或是发生改变。

    自己有三年 android 开发经验,对 java 很熟。又做了一年 rn,前端相关,nodejs 也在用,所以在考虑深入这两种后端技术哪一个好点?

    82 条回复    2019-06-05 13:52:48 +08:00
    karottc
        1
    karottc  
       2019-06-01 10:32:03 +08:00 via iPhone   ❤️ 8
    Java,( nodejs 也能叫后端吗?
    RYAN0UP
        2
    RYAN0UP  
       2019-06-01 10:35:43 +08:00 via Android
    建议 Java,生态好点。
    cjh1095358798
        3
    cjh1095358798  
    OP
       2019-06-01 10:35:48 +08:00   ❤️ 1
    @karottc 为啥不能?现在公司团队技术栈都迁移到依赖 js 技术栈了。招人都招 js 全栈,后端用 node.js 一点问题没有
    wxsm
        4
    wxsm  
       2019-06-01 10:36:33 +08:00   ❤️ 2
    目前基本没有人用 Node 作后端,不过它在“中端”倒是有很广阔的使用场景。
    cjh1095358798
        5
    cjh1095358798  
    OP
       2019-06-01 10:37:29 +08:00
    考虑到 java 生态很成熟,node.js 的坑我也不太清楚,但是 typescript 写的很爽啊。。ps:不想写 java 了,现在能用 kotlin 就不用 java,如果学习 java 技术栈我也用 kotlin
    oneisall8955
        6
    oneisall8955  
       2019-06-01 10:47:09 +08:00 via Android
    java 毋容置疑
    oneisall8955
        7
    oneisall8955  
       2019-06-01 10:48:33 +08:00 via Android
    java,封装继承多态,设计模式玩起来贼有意思
    love
        8
    love  
       2019-06-01 10:58:45 +08:00 via Android
    为啥都这么歧视我大 js,写起来比 java 舒服多了,生态也很不错
    birdrally
        9
    birdrally  
       2019-06-01 10:59:29 +08:00 via iPhone
    主力 node 没有,还是打辅助
    javaWeber
        10
    javaWeber  
       2019-06-01 11:00:16 +08:00
    后端选 java 吧。分布式,微服务,容器。
    ysweics
        11
    ysweics  
       2019-06-01 11:04:58 +08:00
    这都不用选吧,二者在后端的生态级别应该相差几个数量级
    amon
        12
    amon  
       2019-06-01 11:15:11 +08:00   ❤️ 1
    招聘网站上搜一下 java 开发和 nodejs 开发。
    ixiaohei
        13
    ixiaohei  
       2019-06-01 11:20:34 +08:00 via iPhone
    都什么时候了,还有推荐 nodejs 做后端的
    qq1009479218
        14
    qq1009479218  
       2019-06-01 11:25:18 +08:00   ❤️ 1
    我主力做 node,看完评论,我感觉很难受
    abcbuzhiming
        15
    abcbuzhiming  
       2019-06-01 11:31:49 +08:00
    从目前的情况看无类型约束的动态语言想入侵对安全性和稳定性有要求的领域非常困难,nodejs 可以吃掉 PHP 的地盘,但是 Java 的地盘。。。旁边还有 Go 和.Net Core 看着呢,轮不到 js 说话
    abcbuzhiming
        16
    abcbuzhiming  
       2019-06-01 11:33:21 +08:00
    @cjh1095358798 多出去走走,看看广大的世界,不要因为自己身边用的是啥,就以为世界都是啥
    abcbuzhiming
        17
    abcbuzhiming  
       2019-06-01 11:38:07 +08:00
    @love 第一代动态语言原本想要的是类型推导和匿名函数(Lambda)。然而它们过于激进犯了一个错误,把参数,返回值的类型约束彻底去掉了,不光 js 有这个毛病,perl,asp,php,python。全都有,谁也别笑谁,这也是为啥知乎有一个专门问题——为什么 2010 年前后诞生的语言(如 Golang, Rust, Swift)都是强类型 。https://www.zhihu.com/question/31100089
    fghjghf
        18
    fghjghf  
       2019-06-01 11:43:41 +08:00
    node 是前端自己玩的,只能叫玩具。用于布局生产环境是很少的,一是毕竟 Java 从语言层面上来说性能高,二是 Java 生态好,跟 node 差别巨大。三是 Java 对系统亲和性比较高,很多 Linux api,甚至 system call 都可以用 Java 调用。
    你要是不喜欢 Java,觉得库很臃肿的话,可以试试 GO,又呆萌又易学,天生对网络友好。
    zouzou
        19
    zouzou  
       2019-06-01 11:54:11 +08:00   ❤️ 1
    web 后端,nodejs,java 没区别,你扔骰子决定。
    在后端,java 通用型比较强,每个领域都可以用。
    web-php
    大数据-java
    ai-python
    基础设施-go
    securityCoding
        20
    securityCoding  
       2019-06-01 12:07:52 +08:00
    java,生态决定了
    deepdark
        21
    deepdark  
       2019-06-01 12:10:49 +08:00 via Android
    傲慢与偏见
    airyland
        22
    airyland  
       2019-06-01 12:12:33 +08:00 via iPhone   ❤️ 2
    看上面几个同学对 node 多鄙夷的语态,动不动玩具动不动没人用,用自己来概括全世界。让人不舒服的不是你们觉得 node 不好用,而是那种自负的评价姿态。

    对不起,我用 node。

    喊句口号:

    Always bet on JS.
    gimp
        23
    gimp  
       2019-06-01 12:20:07 +08:00
    一些人对语言的偏见真是根深蒂固,上一个被说是玩具语言的叫 Python

    楼主对 Java 看起来更熟悉,选择 Java 吧,从就业角度考虑也没问题
    cjh1095358798
        24
    cjh1095358798  
    OP
       2019-06-01 12:27:09 +08:00 via Android
    @abcbuzhiming 现在我也是首选 typescript 这方面对类型约束支持的还是比较好的,确实如果你诶呦类型系统对大型项目不适合
    cjh1095358798
        25
    cjh1095358798  
    OP
       2019-06-01 12:29:02 +08:00 via Android
    @fghjghf 多谢老哥分析,我想我应该仔细想想自己要的是什么以及趋势
    love
        26
    love  
       2019-06-01 12:29:14 +08:00 via Android
    @abcbuzhiming 你不知道有个东西叫 typescript 吗,已经在前端界很火爆了。这东西的类型灵活度比 java 还高,结合了动态语言和静态语言的优点
    cjh1095358798
        27
    cjh1095358798  
    OP
       2019-06-01 12:33:13 +08:00 via Android
    @gimp 是的,我也是本来偏向 java,之前写过 node 发现很方便,就有点动摇了。想做一个独立开发者,所以我也是想越容易学易用最好
    yuanfnadi
        28
    yuanfnadi  
       2019-06-01 12:53:30 +08:00 via iPhone
    @oneisall8955 nodejs 也可以。
    封装继承,aop di。

    多态麻烦一点。
    abcbuzhiming
        29
    abcbuzhiming  
       2019-06-01 12:53:48 +08:00
    @love 我当然知道 ts 这个东西啊,甚至我自己必须用到 node 的场合我都是尽量用 TS,问题是 TS 这个东西说到底还是要把源码编译成 js 的,ts 并不是 node 原生支持的东西。也许倒是可以期待一个 node 原作者搞的 deno
    abcbuzhiming
        30
    abcbuzhiming  
       2019-06-01 12:59:25 +08:00
    @cjh1095358798 没关系啊,程序员本身就不应该只困在一门语言里,我当初就是受不了 Java 的死板,投奔到 PHP 和 Python 的世界里去呆了两年,然后又被“重构火葬场”给恶心回了静态语言的世界,年轻就应该什么都试试,你试过才知道静态语言和动态语言分别的好处在哪里,翔又在哪里。
    PS:程序员千万不要干的事情就是当狂信徒,问题是程序员又是技术工种里狂信徒特别多的行当。我还是建议你,两个都玩玩,没有你想的那么难的。等你两个都玩过,两个的翔都吃过,就会明白为啥 Java 这种简陋死板的语言能够在后端领域经久不衰了
    lihongjie0209
        31
    lihongjie0209  
       2019-06-01 13:07:46 +08:00
    nodejs 写写 js 工具链就可以了, 写后端就算了
    zqx
        32
    zqx  
       2019-06-01 13:12:40 +08:00 via Android
    大学只学过 java,c++。
    实习接触 python,发现 pip 管理依赖,秒杀 java。
    工作接触 js,发现 npm 管理依赖,秒杀 python。
    说 node 生态不行,那是没见过 npm 几百万个开源类库吧,开源社区≈node。
    java 占有率高是市场行为,不代表语言特性高级。
    zqx
        33
    zqx  
       2019-06-01 13:13:23 +08:00 via Android
    @fghjghf java 的性能只有 node(c++)的 1/10
    Takamine
        34
    Takamine  
       2019-06-01 13:17:47 +08:00 via Android
    ……我一直把 nodejs 放在前端的技术栈里,大佬们别打我。
    love
        35
    love  
       2019-06-01 13:22:15 +08:00 via Android
    @abcbuzhiming 变异成什么你又不用管,jvm 本身也不直接支持 Java 源代码
    lihongjie0209
        36
    lihongjie0209  
       2019-06-01 13:22:34 +08:00
    @zqx 你用过 maven 吗?
    abcbuzhiming
        37
    abcbuzhiming  
       2019-06-01 13:23:13 +08:00
    @zqx 你这句话的言下之意就是“市场都是白痴,看不到你说的语言特性高级”?
    fghjghf
        38
    fghjghf  
       2019-06-01 13:55:01 +08:00   ❤️ 1
    @zqx 骚年,看来你回答,觉得你工作年限并不长。市场这样选择肯定不是偶然事件。知道什么是 JIT 吗,再不然网上一大堆性能测试 demo,你可以试试看。而且 Java 直接调系统 api,缓冲区、pcb、堵塞非堵塞、文件系统、内存映射、进程线程、ipc 消息管道 /有名无名队列 /共享内存、信号量、socket 原始套接字、直接构造数据包、高并发 select/epoll/kqueue。等等等等。node 行么。对于楼主这个情况,学 Java 以后的发展可以很深。也可以基于业务站在更宏观的角度看待问题。学 node 只能学上层肤浅的东西。你觉得那个更利于职业发展?
    cjh1095358798
        39
    cjh1095358798  
    OP
       2019-06-01 15:10:21 +08:00 via Android
    @abcbuzhiming 哈哈 说的对,各种语言都有自己的信徒,多试试有自己的理解才好
    TimPeake
        40
    TimPeake  
       2019-06-01 15:16:38 +08:00
    我前端娱乐圈又炸了锅?有趣
    cjh1095358798
        41
    cjh1095358798  
    OP
       2019-06-01 15:19:14 +08:00 via Android
    @fghjghf 老哥可以的,java 性能这块没得黑,确实优势大,想想 node.js 的优势和性能结合一起来比较下
    yaphets666
        42
    yaphets666  
       2019-06-01 15:25:08 +08:00
    感觉还是 java,毕竟大厂高并发都是用这个.
    lovedebug
        43
    lovedebug  
       2019-06-01 15:33:45 +08:00 via Android
    都会搞,这两个应用场景有区别呀。node 做 io 密集的应用生成 task,java 做计算密集型应用执行 task,两门语言风格也不一样,建议都懂。
    robotdiy
        44
    robotdiy  
       2019-06-01 15:35:13 +08:00
    node.js 小打小闹还行。
    正规后端路线还是 Java、Go 吧。
    luozic
        45
    luozic  
       2019-06-01 15:38:38 +08:00 via iPhone
    Java 反正后面 Ts 以及 graalvm 都无缝互通
    loginbygoogle
        46
    loginbygoogle  
       2019-06-01 15:40:50 +08:00 via Android
    独立开发者,选 node.js 绝对没错。
    version
        47
    version  
       2019-06-01 15:42:09 +08:00
    全栈: nodejs (外包能力也秒 php) + 20 人小团队做点有意义的产品
    假高并发吹逼架构师: 走 java + 有 100 人+开发规模的企业+有问题学会丢锅 + 尽量打卡下班

    我以前是 java..16 年开始后来全转 nodejs..不过你最好是内部岗位转.不然你没工作经验是很难找 nodejs 的...
    java 可能容易点吧.培训下.吹吹跟班项目随便 15k..入职 crud 还能混些日子..不够真心有没学到东西我就不看好了..多 java 开发人员能体会到...一个类 1000 行..几百个文件. + 重构 + 还是打开下班..还是下班看看高并发的书呢.
    rockyou12
        48
    rockyou12  
       2019-06-01 16:01:27 +08:00
    java 把,生态在后端吊打 node,项目可大可小,node 除了 io 好有其他任何优势?而且后端 jvm 上有很多新语言,kotlin 这种既兼容 java 又在语法上有很多优化,写出来的东西并不重
    zqx
        49
    zqx  
       2019-06-01 16:10:07 +08:00 via Android
    @fghjghf java 是性能最差的高级语言之一,这个需要质疑吗?你所说的使用场景,只是市场的选择,这种选择不会改变语言的性能。比如,为什么不用 java 实现 nginx ?
    zqx
        50
    zqx  
       2019-06-01 16:12:05 +08:00 via Android
    @fghjghf node 相当一部分模块由 c++实现,纯执行速度比 java 快 10 倍。
    version
        51
    version  
       2019-06-01 16:19:08 +08:00
    @zqx 也不能这样多..只是分布式业务上.10 台以上的机器.java 应该算是有很大优势了..但是这部分业务企业也会考虑.如果新项目可能会直接忽略 java 语言..旧项目还一直维护而已....看场景吧..有能力的 java 开发者.其实学一天就会 nodejs.也没多大难度..设计模式 数据接口都一样..
    EPr2hh6LADQWqRVH
        52
    EPr2hh6LADQWqRVH  
       2019-06-01 16:23:31 +08:00
    Java 是软件的工业化,工业化这个事情,也是有代价得失的,不是说一家通吃。

    万一你是个打工者,那你是喜欢在工厂里工作呢,还是在工作室里工作呢?

    万一你是个创业者,你是开个工厂呢,还是开个工作室呢?
    SoVince
        53
    SoVince  
       2019-06-01 16:47:53 +08:00
    小孩子才做选择,大……
    fghjghf
        54
    fghjghf  
       2019-06-01 17:02:44 +08:00
    @zqx 1、你觉得,一个及格的后端,只需要懂增删改查?写写简单业务?还市场选择。2、万物始于 C,任何解释器都是 C 写的,在 runtime 态都要转成 C,什么是编译什么是解释读过书不用说了吧。jit/aot 只是他的编译方式,并不能改变本质。3、node 只适合内部项目,或者分布式集群的某些小模块。并不能承载复杂业务、或者私人做点小项目,追求开发时间短。一对比高下立见。
    limuyan44
        55
    limuyan44  
       2019-06-01 17:15:41 +08:00 via Android
    我好奇的是,在后端语言选择上选择 nodejs 而不是 java 的,到底是为了 lz 好,还是为了自己的私心呢??
    limuyan44
        56
    limuyan44  
       2019-06-01 17:16:45 +08:00 via Android
    我好奇的是,在后端语言选择上选择 nodejs 而不是 java 的,到底是为了 lz 好,还是为了自己的私心呢??说句难听的 java 这种生态小学生都知道选什么
    tomoya92
        57
    tomoya92  
       2019-06-01 17:26:59 +08:00 via iPhone
    @cjh1095358798 ts 写着爽?跟 java 比真心不爽。。
    Shy07
        58
    Shy07  
       2019-06-01 17:43:55 +08:00
    大厂螺丝钉、打工一辈子、某宝卖毕设,选 Java
    全栈一把梭、想尝试创业、独立开发者,选 nodejs
    zander1024
        59
    zander1024  
       2019-06-01 18:05:06 +08:00
    这年头除了本身捆绑在 node 的还有人推荐你后端搞 node 么...
    itning
        60
    itning  
       2019-06-01 18:20:40 +08:00 via Android
    分布式事务 消息队列 等等,nodejs 能胜任?
    dingyaguang117
        61
    dingyaguang117  
       2019-06-01 18:33:01 +08:00
    Python/JS/Java/C#/Go/Swift/C 都会一点,想深入一点怎么选
    vianEm
        62
    vianEm  
       2019-06-01 18:49:43 +08:00 via iPhone
    @wxsm 小厂 node 还是很吃香的,中小型应用
    poorcai
        63
    poorcai  
       2019-06-01 18:57:32 +08:00 via iPhone
    @dingyaguang117 #61 你这个过分了,能引起更多的人对骂🤣
    yamedie
        64
    yamedie  
       2019-06-01 19:04:39 +08:00 via Android
    毕竟 j2ex
    HangoX
        65
    HangoX  
       2019-06-01 20:29:59 +08:00
    node 是给前端写接口用的,核心服务还是 Java,Java 生态真的太好了,学 Java 没错
    visonme
        66
    visonme  
       2019-06-01 21:09:16 +08:00
    纯后端还是走 JAVA
    不是纯后端,以后考虑走全栈路线可以先上 nodejs
    最后不管你深入 java 还是 nodejs,最后你都不可能只止于这两门语言的~
    Foreverdxa
        67
    Foreverdxa  
       2019-06-01 21:18:18 +08:00 via Android
    我也喜欢 node,这确实是一个不错的选择,还就就是我也会选择 go,不过我一点都不喜欢 java
    charlie21
        68
    charlie21  
       2019-06-01 22:08:27 +08:00
    都不选
    cjh1095358798
        69
    cjh1095358798  
    OP
       2019-06-01 22:29:57 +08:00
    @visonme 是啊,只是现在时间精力有限,所以需要先专注一个
    impl
        70
    impl  
       2019-06-01 22:35:29 +08:00 via Android
    要修福报就选 Java
    luckylo
        71
    luckylo  
       2019-06-01 23:00:41 +08:00 via Android
    node 的作者都要放弃 node 了。。。这还用说么
    icy37785
        72
    icy37785  
       2019-06-01 23:03:12 +08:00
    @dingyaguang117 我大 php 不配拥有姓名?
    version
        73
    version  
       2019-06-01 23:07:54 +08:00
    @cjh1095358798 其实对于初学者..真心推荐 nodejs..能接 rpc.能接各种服务.消息队列啥的..数据库事务也没问题...而且对 nosql 特别爽...最主要是快学习..进步快..java 其实有点不利于初学者..一个月 ssh 搭个脚手架.各种服务加起来..虽然 spring boot 能节省很多.不过文档和配置多..而且错误修改调试麻烦...见大多数 java 开发者.30%时间是写代码 70%可能都是看控制台输出..时间都没了..还有主要就是如今都是 api 服务年代..数据定义多变真的是业务需要.静态语言就是大略...不过 js 动态语言缺点就是不能太多人员一起编写,如果分了微服务.其实可以接受.哪个写得差就劝退然后重写...如果大数据.nodejs 业务有压力的时候.可以部分业务转其他语言 go 都可以
    cjh1095358798
        74
    cjh1095358798  
    OP
       2019-06-02 00:10:31 +08:00 via Android
    @version 老哥说的在理,node.js 业务写起来快,基本业务都问题不大,java 相对繁琐一些。对大业务量的情况下,java 优势更大。这也是我现在需要权衡的情况,主要也是想看 node.js 的发展和趋势
    youngxhui
        75
    youngxhui  
       2019-06-02 09:38:12 +08:00
    @zqx 你是我见过第一个说 npm 好的
    ZehaiZhang
        76
    ZehaiZhang  
       2019-06-02 09:38:56 +08:00
    送分题,想写大规模服务就上 java,小并发,node 足够了
    StephenHe
        77
    StephenHe  
       2019-06-02 15:55:42 +08:00
    js 写业务逻辑,emmmmmmmmm
    newghost
        78
    newghost  
       2019-06-02 17:27:41 +08:00
    十多年程序员,用过 C#,Java,C/c++现在用 node.js
    wangsongyan
        79
    wangsongyan  
       2019-06-02 22:33:42 +08:00 via iPhone
    PHP 是最好语言!
    wangsongyan
        80
    wangsongyan  
       2019-06-02 22:34:18 +08:00 via iPhone
    @wangsongyan 不好意思,跑错片场了
    YuJianrong
        81
    YuJianrong  
       2019-06-03 00:32:03 +08:00 via iPhone   ❤️ 2
    几年前我也和这里大多数人一样觉得 nodejs 不堪重用只能小打小闹(我还是做前端的)。
    结果这两年下来参与了数个(公司内) startup 项目,有类 google doc 的实时文档项目管理;有做会议辅助网站;有招聘类辅助网工具;有 LBS 提供商店选址服务,后台全都是 nodejs,只能说……真香……

    有三个东西彻底改变了 nodejs 的地位,使得这东西成为我们这边的推荐选择:
    1. k8s
    2. TypeScript
    3. async/await
    yyy
        82
    yyy  
       2019-06-05 13:52:48 +08:00
    9102 年了 想不到还有人会争论这些
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1562 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 36ms · UTC 17:14 · PVG 01:14 · LAX 09:14 · JFK 12:14
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.