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

因为团队调整,面临换语言的问题, go -> Java

  •  
  •   Gea · 2020-12-17 20:46:58 +08:00 · 6701 次点击
    这是一个创建于 1471 天前的主题,其中的信息可能已经有所发展或是发生改变。

    先说自己的情况,16 年大学毕业,这四年多基本上前两年多写 node 后两年写 go,天赋有限,学艺不精,两种语言写的感觉都一般。。

    最近因为项目组解散,并入另外一个组了,要求一定要写 java 了,而且毫无回转的可能。

    换语言的问题还是那些,要从头开始,尽管有之前语言的基础,上手写的问题可能不大,但是 golang 还没学太好,换成 java 又是学一些皮毛,感觉沉淀不足。

    就语言本身来讲,我挺喜欢 golang 的,主要是轻巧,现在项目用 k8s+docker (这俩学的也不是很深入),搞起来十分舒服,除了没有范型写代码挺难受的,启动快编译快部署快,还是挺爽的。handling errors 我倒是觉得还能接受,有点像特别早年 node 的 callback,都要返回一个 err 。

    java 呢,我就觉得太重了,写法、启动、编译和部署这些方面,启动个 ide,小破 mac 动不动就风扇狂飙的,可能学的不多,所以觉得写起来还有些麻烦。

    换语言这个问题我想过很久,现在临近年底,我感觉现在最好的选择应该是在新团队写 java,学习学习,如果觉得不好,明年立马走人,就当多了点经验,继续找个写 go 的。

    但是如果觉得还行,我就不知道怎么选择了,我只是一个普通的打工仔,首要还是面向工资编程,最好能兼顾写的开心

    想了不少天,不知道大家有什么好的想法,希望给我一点输入,先谢谢大家了

    49 条回复    2021-08-13 16:51:18 +08:00
    Jooooooooo
        1
    Jooooooooo  
       2020-12-17 20:47:52 +08:00   ❤️ 5
    java 这么傻的语言你 21 天绝对学会
    yannxia
        2
    yannxia  
       2020-12-17 20:50:28 +08:00
    讲真,Java 除了虚拟机太吃性能,我现在另可写 Java 也不想去写 Go,也复杂点的系统,Go 就好难啊
    chenqh
        3
    chenqh  
       2020-12-17 20:55:04 +08:00
    能内部转 Java 很好呀,java 找工作比 golang 好多了
    hoyixi
        4
    hoyixi  
       2020-12-17 20:55:34 +08:00
    真不好说,个人偏好不同。

    反正 Java 是常青树,需求一直都在,天花板也高; Go 集中在云,基础系统、区块 L 之类,感觉都是热点,但是偏基础设施的系统开发需求能不能长久就不好说了

    不如你去招聘网站,看看 Java 和 go 的薪水,以及公司的质量,对比下再自己选择。
    sagaxu
        5
    sagaxu  
       2020-12-17 20:57:51 +08:00 via Android   ❤️ 4
    java 招聘需求大,但是卷的也厉害,各种面试八股文,恨不得从 jdk6 一路问到 11,把 4 种 gc 实现细节问个底朝天
    chippai
        6
    chippai  
       2020-12-17 21:01:25 +08:00   ❤️ 1
    好巧,我们 java 转 go
    wellsc
        7
    wellsc  
       2020-12-17 21:01:30 +08:00
    求之不得的好机会,golang 这种零抽象的语言写起业务来不要太难受,Java 就业市场还好,很多东西都有现成的解决方案,背背八股文就好了
    crclz
        8
    crclz  
       2020-12-17 21:03:28 +08:00
    java 我个人认为不重,没它的某个特性就浑身难受。
    SpringBoot,Asp.NetCore 非常相似,就证明了语言的形态和框架的形态都几乎收敛到现在的最优状态。
    f6x
        9
    f6x  
       2020-12-17 21:06:01 +08:00
    就说一句:
    go 弄个略懂要 7 分力, java70 分力也不敢说略懂吧.

    当然,只写业务什么语言都没区别.
    skypyb
        10
    skypyb  
       2020-12-17 21:06:33 +08:00
    Java 求职应该是最卷的。。 如果想跳到 Java 得做好准备
    xuanbg
        11
    xuanbg  
       2020-12-17 21:14:15 +08:00
    Java 一样 k8s+docker 。写 Java 代码,找个人给你指点下 spring boot 怎么用就完了。语法什么的看看项目代码,会百度抄作业就行。一开始遇到疑难问题多问就是,半个月绝对能正常开展工作。
    qfdk
        12
    qfdk  
       2020-12-17 22:47:11 +08:00 via iPhone
    我们 java 转 nodejs
    syrupofplum
        13
    syrupofplum  
       2020-12-17 22:54:38 +08:00
    主要是看业务是否喜欢吧,语言顶多算实现功能的工具。学会一门新语言,写出符合这个语言味的代码,掌握这门语言的生态,这不也是挺让人兴奋的事情嘛。
    skydiver
        14
    skydiver  
       2020-12-17 23:15:54 +08:00
    多工作几年就什么语言都会了…没必要纠结这种问题
    ZRS
        15
    ZRS  
       2020-12-17 23:18:08 +08:00   ❤️ 1
    语言就是工具而已
    Kirsk
        16
    Kirsk  
       2020-12-17 23:24:10 +08:00 via Android
    看来 Java 在鄙视链最底层
    djoiwhud
        17
    djoiwhud  
       2020-12-17 23:31:40 +08:00 via Android   ❤️ 1
    骑驴找马。

    或者猫着做 java 。

    我个人建议如果公司或者业务有前景,就留下做 java 算了。

    我 9 年多后端经验,做过八九种语言的开发。我需要什么用什么,不讲任何借口。我们是软件工程领域,工程,这两个字多想想。
    wangyzj
        18
    wangyzj  
       2020-12-18 08:05:31 +08:00 via iPhone
    各有优缺点
    如楼上所说
    语言只是工具
    我们做的是软件工程
    v2orz
        19
    v2orz  
       2020-12-18 08:59:17 +08:00
    两个都不难

    最近我们业务需要嵌入式 C/C++,这个才是让人头大好吧
    xx6412223
        20
    xx6412223  
       2020-12-18 09:25:32 +08:00
    说 Java 重的其实就是 jvm 耗内存问题。但对开发者没太大啥影响,而且 Java 的生态完全成熟,学起来目标更明确。
    Java 语法啰嗦,但是读起来很清晰,当然不要乱用继承。面向对象的特性也比 golang 更彻底。
    虚拟机给开发者带来很多好处,比如运行时可编辑字节码,更多的调试分析手段
    ren2881971
        21
    ren2881971  
       2020-12-18 09:46:28 +08:00
    逆流而上。。
    walkOnly
        22
    walkOnly  
       2020-12-18 09:46:45 +08:00
    LZ 可以建议 TeamLeader 考虑下 Kotlin,比较成熟了
    HerrDu
        23
    HerrDu  
       2020-12-18 09:48:02 +08:00
    @yannxia go 的出现就是为了应对大型的开发项目,你说大型项目难,是不是打开的姿势不对
    seanxx
        24
    seanxx  
       2020-12-18 10:26:03 +08:00
    发错节点了,你应该发 go 开发者,不应该发程序员
    raaaaaar
        25
    raaaaaar  
       2020-12-18 10:34:56 +08:00 via Android
    java 语法挺丑
    yingo
        26
    yingo  
       2020-12-18 10:40:38 +08:00
    建议学一点 Java,这是个好机会.
    qwzhang01
        27
    qwzhang01  
       2020-12-18 10:48:59 +08:00
    跟着项目换语言,简直不要太容易,一周上手,半个月就熟联了。
    多花精力在基础、底层以及业务上。
    GopherDaily
        28
    GopherDaily  
       2020-12-18 10:49:31 +08:00
    @HerrDu 是像 google 那么大,还是像 XX 那么大,这点会有区别。
    语言自己的味道也很重要,按 Java 的思路去写 Golang,或者按 Golang 的方式去写 Java,都会导致一些主观的评价。
    Rwing
        29
    Rwing  
       2020-12-18 10:51:59 +08:00
    C#/.NET 欢迎你
    mamahaha
        30
    mamahaha  
       2020-12-18 10:53:43 +08:00
    你们老板可能是看上 java 的哪个库了,随便换语言证明老板对你们的实力信心不够。只敢让你们搞调库调参这套。
    shuizhengqi
        31
    shuizhengqi  
       2020-12-18 10:54:48 +08:00
    java 也还行吧,做时间长了,就知道语言这些区别不大了,只是 java 可能面试的东西稍微多一点。例如 jvm,数据结构,线程安全,常用一些 api 的源码,像 hashmap,线程池,concurrentHashmap 什么的看一下就行,gc 基本就会问两种,cms 和 g1 。然后就是其他的东西了,mysql 最多吧,主要就是索引,锁,mvcc,引擎的区别,然后还有 dubbo,redis,zk 等中间件的一些常用的知识。基本看一段时间就能应付面试了
    echo1937
        32
    echo1937  
       2020-12-18 10:54:50 +08:00
    如果你的一套业务可以用 SpringBoot 全家桶解决,Java 不要太爽。
    tcfenix
        33
    tcfenix  
       2020-12-18 11:00:47 +08:00
    工作五年多, 在之前的工作中写过 Js, Python, PHP, Ruby, C++ , Golang, Java, Scala

    其实我也很喜欢写 Golang, 历史包袱少, 语义简单, 设计的很工程化, 可以说写代码就是一个享受

    但是在你找到下一份工作之前, java 还是值得你花时间投入进去学习的, 整个生态里面很多实现都还挺有学习的意义的

    加油吧
    coderxy
        34
    coderxy  
       2020-12-18 11:02:17 +08:00
    我原来也是 node,现在转 go 了。 打算一直干 go 了,还是要在某个语言尽量深入,不然这儿几年 那儿几年,不太好。 如果你是大佬,建议 Java,毕竟市场大。 如果你不是,建议不要贸然,内卷太严重了,岗位虽多,竞争者更多。
    subpo
        35
    subpo  
       2020-12-18 11:02:40 +08:00
    在工作两年就知道语言和框架都是浮云,看个 2 3 天就能写了
    cloverzrg2
        36
    cloverzrg2  
       2020-12-18 11:20:03 +08:00   ❤️ 1
    我公司业务里写过 node,go,java,只要基础好,换语言没多大问题,但是团队里要有该领域的大牛,不然项目容易变得很乱
    seven123
        37
    seven123  
       2020-12-18 11:21:09 +08:00
    语言只是工具,每个语言都是自己的特点,在合适的场景使用合适的语言。但是在我看来 java 不失为一个不错的选择,可以让你对编程有个系统的认知,当你学习源码时你可能会慢慢理解会什么要这么做,不由感叹设计的精妙,当然前面说的 java70 分力也不敢说略懂吧...这是一条任重而道远的路... 互勉
    kios
        38
    kios  
       2020-12-18 11:31:37 +08:00
    语言都是相通的,学起来很容易
    bk201
        39
    bk201  
       2020-12-18 11:36:08 +08:00
    java 的天花板太高了,东西巨多。
    zhangdawei
        40
    zhangdawei  
       2020-12-18 11:38:27 +08:00
    Java 和 go 都挺好的,其实国内主要看业务,做久了一定是某个方向的技术+业务专家,
    zarte
        41
    zarte  
       2020-12-18 11:41:21 +08:00
    好跳槽,是好事。
    gowk
        42
    gowk  
       2020-12-18 11:56:22 +08:00 via Android   ❤️ 1
    Java 语言规范 1000 多页,Go 顶多 200 页。说实在的,写 Java 我不抵触,抵触的是他概念太多,心累,尤其是现在 Spring 一统天下的情况下,能写 Go 我绝不写 Java,Go 泛型发布后它几乎是新项目的唯一选择
    wysnylc
        43
    wysnylc  
       2020-12-18 12:00:43 +08:00
    @sagaxu #5 现在要问到 jdk14 了
    xcstream
        44
    xcstream  
       2020-12-18 13:26:35 +08:00
    混就是了
    Rob007
        45
    Rob007  
       2020-12-18 14:31:49 +08:00
    语言是为业务服务的
    Leigg
        46
    Leigg  
       2020-12-18 15:52:42 +08:00 via iPhone
    Java 面试机会多,竞争也非常激烈,也就是"卷",go 在发展上还是一门年轻化的语言,前途一片光明,你要考虑好。个人建议,不要随大流,趁年轻,定个方向深耕。
    securityCoding
        47
    securityCoding  
       2020-12-18 15:58:06 +08:00
    @gowk 同意,go 的泛型+错误处理上了后 应该可以大规模上业务项目了
    Jiers
        48
    Jiers  
       2020-12-19 11:38:36 +08:00
    python--->go
    xmsz
        49
    xmsz  
       2021-08-13 16:51:18 +08:00
    我现在的看法就是

    php:如果是小公司(不管规模大不大),或者是个人网站编程爱好者,那非常的合适,简单生态丰富,就是你去捡垃圾拼起来也能跑

    nodejs:前端必备,因为以前很多情况下后端同学是不乐意去做一些非『重要业务』的事情。加上现在 serverless 解决了运维的问题,那对于前端来说简直不要太爽。
    后端呢?性能和线程是大问题,所以大公司肯定是不会用,还是只能拿来个人自己玩玩

    go:还没开始实践之前,我的想法是 go 因为是新语言没有历史包袱,而且很多特性都是非常符合未来发展的。
    当我实践以后,发现这玩意根本满足不了期望
    你说想要简单,你和 java 比,其实其他语言也很简单。语法简单,大家都差不多,方法简单,其他语言封装一下也差不多。所以这个真没什么特别大作用
    你说想要性能,JAVA 肯定更好
    最重要的是生态,Java 一套 Spring 干趴所有人,特别是大公司的需求
    然后 php 有国内无敌的生态,nodejs 有无数造轮子的人,基本上生态也很好
    而 go 生态真的太烂了
    除了 b 站七牛在硬推,真的差强人意。

    详细的说
    对于单体应用
    最重要就 2 个东西,web 框架和 orm 工具
    web 框架就是简易
    orm 工具都不能说简易,gorm 和 xorm 真的都称不上 orm 工具


    对于什么微服务、云原生
    rpc 通信,大家都有啊

    所以 go 的场景真的很尴尬,我觉得很噱头还不如其他语言(各种非主流语言)










    总之,如果你想要当一辈子的程序员,或者想去大厂混几年,那选 Java 肯定没错,毫无疑问

    其他情况的,随便了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2831 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 03:09 · PVG 11:09 · LAX 19:09 · JFK 22:09
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.