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

选 go 还是 Java

  •  
  •   lushiwu · 248 天前 · 6979 次点击
    这是一个创建于 248 天前的主题,其中的信息可能已经有所发展或是发生改变。

    开学大三,学了两年的 java ,现在有点想转 go

    voidmnwzp
        1
    voidmnwzp  
       248 天前 via iPhone   ❤️ 3
    两年前选 go 现在选啥也不管用了 不是 985211 找不找得到工作都难说
    17681880207
        2
    17681880207  
       248 天前   ❤️ 1
    经济再不济,Java 的机遇也要比 Golang 多。你完全可以大学期间 All in Java ,工作之后再自学 Golang 。
    voidmnwzp
        3
    voidmnwzp  
       248 天前 via iPhone
    @17681880207 还嫌 Java 不够卷吗 所有人都往 Java 涌,日后势必会远超前段的内卷程度,Java 老人实在太多了,留给新人的蛋糕实在太少,轮子都没机会写,倒不如另寻蹊径,在小众的领域做到专精来提升自己的竞争力才是性价比高的做法
    voidmnwzp
        4
    voidmnwzp  
       248 天前 via iPhone
    @17681880207 而且做 Java 久了,普遍都是精业务疏技术,毕竟 spring 都给封装好了,这就造成了很多 Java 程序员只会面向 spring ,脱离了 spring 甚至什么都不会做了
    CEBBCAT
        5
    CEBBCAT  
       248 天前
    我觉得,无论是 Java 还是 Go ,无论是 Web 开发还是 Infra ,重要的是持续进步,当然我不是说你这个问题显得你三心二意,只是给你打个预防针。

    我认为可以选 Go ,甚至是更激进的 Rust 。我就是大四时自己学习了 Go ,后来找到了 Golang 的实习,然后工作到现在(大概三年)。但我认为你的选择应该建立在深思熟虑或者坚持上。

    不过以后的以后,也许我会去写 Java 也说不定,因为这二者之间没有天堑鸿沟。
    ---

    @voidmnwzp #4 说起来业务能精通也很值得羡慕了,我就是经常在工作中遇到让人头大的系统设计问题。
    streamrx
        6
    streamrx  
       248 天前 via iPhone
    选什么都一样 , 这两年学啥都差不多。 不如去考研
    xiadong1994
        7
    xiadong1994  
       248 天前
    大学不如学 C 和 C++,真的。Go 语法比 C 还简单一些。
    voidmnwzp
        8
    voidmnwzp  
       248 天前 via iPhone
    @CEBBCAT 我说的业务其实说白了就是 crud ,你这几年是用 go 在做 crud 吗?那说实话还不如用 Java ,这样可以花更多时间专注到表结构设计上
    netabare
        9
    netabare  
       248 天前 via Android   ❤️ 2
    两个都一起弄怎么样。Java 也不是只有 Spring 和 CRUD ,vertx/quarkus/k8s 也挺有趣的,然后也会用到 go 。

    Java 可以往 Kotlin 、C#转,不是只有 Spring MVC ,也不是只有 EE ,Core Java 学好了也有很多可能性。
    just4id
        10
    just4id  
       248 天前 via iPhone
    年青人才选
    goodman111
        11
    goodman111  
       248 天前   ❤️ 3
    这有啥选的?程序员还能就会一个编程语言么?至少 3-4 个吧。
    bianhui
        12
    bianhui  
       248 天前
    实话实说,如果你把能力全部局限在语言。在未来 it 这个环境就很难。要么多学,python 也学,js 也学,rust 也学。语言都是通性的。理解了一个,其他的也就是语法和理念上区别。
    914496397
        13
    914496397  
       248 天前
    我之前也纠结过这些问题,但是我不是工作前,是工作后。
    914496397
        14
    914496397  
       248 天前
    @914496397 后来我才意料到,语言、框架都只是工具,不用过于纠结
    debuggerx
        15
    debuggerx  
       248 天前
    建议都学。
    只学、只会 java 的人即使水平再高,找工作再有优势,写出来的代码也总是充斥 java 独有的恶心感。
    MrSheng
        16
    MrSheng  
       248 天前
    如果从 golang 和 java 中选,建议 golang ;如果还能有其他选择,建议学 C ;

    语法易学,思想难得。
    lsk569937453
        17
    lsk569937453  
       248 天前   ❤️ 3
    Java 是工作,others 是生活。

    作为一个后端,先用 java 找到工作,慢慢的你就会手痒痒想学习一下其他的语言写后端。

    .net:直接把运行时打包到一起不要太爽,虽然和 java 是兄弟,但语法上要好太多。
    golang:启动速度快,跨平台编译爽,协程使用起来简单,写命令行神器,包体积小。
    rust: 学习曲线拉满(缺点)。优点是运行时没有 gc ,使用内存小,性能高,跨平台编译。
    wxw752
        18
    wxw752  
       248 天前   ❤️ 1
    嗯?为什么要选,两年时间努努力,至少这俩都会了。

    说真的,做几年开发之后,我和同事们谁都会几门语言了,要记住语言只是工具,工具掌握的越多就越不可能失业。
    CLCLCLCLCL
        19
    CLCLCLCLCL  
       248 天前
    国内选 Go, 国外选 Java
    zysuper
        20
    zysuper  
       248 天前
    小孩子才做选择,成年人都要。
    yikeshuo
        21
    yikeshuo  
       248 天前   ❤️ 1
    从最近面试的情况来看 建议 All in
    bravobest
        22
    bravobest  
       248 天前
    go 跑的越远越好
    yaott2020
        23
    yaott2020  
       248 天前 via Android
    无脑 java
    imianba2zz
        24
    imianba2zz  
       248 天前   ❤️ 2
    个人建议,如果想长久发展重心放在网络基础,操作系统,数据结构。语言是次要的,培训班 3 个月就可以量产一批 1-3 年经验的人,所以相对来说语言这些东西很简单。可以在快实习的时候抽 1-2 个月,b 站找个对应的视频跟着做就可以了。
    如果要学 GO 推荐个自己的教程: https://github.com/Zhouchaowen/golang-tutorial
    配套视频: https://www.bilibili.com/video/BV1Qm4y1t7e2/?vd_source=491c4f0dbe89eab97b35fa958fa52a1a
    最后还是建议重点学:网络基础,操作系统,数据结构
    0x0208v0
        25
    0x0208v0  
       248 天前
    那不如选 Python
    ixiaohei
        26
    ixiaohei  
       248 天前   ❤️ 4
    看楼主的学校咋样?看能否参加秋招拿 offer ,尽量拿大厂 offer 。现在还在读大学两个都可以学一下。另外校招对候选人的考察主要还是面向数据结构和算法、数据库、操作系统、计算机网络等知识。语言方面对于校招生都倾向入职后学习上手,所以对于原本会哪种语言可能不会太介意,这个容忍程序大厂可能比小厂人性化一点,建议 op 如果想不继续读研,大四就出来工作,建议多准备一下校招。

    另外学哪种语言可能会对前期职业规划有些影响,主要还是偏见多一点;如果后续找工作不挑剔两种语言都可以看看; golang 和 java 做后台开发其实差不多;我个人是从 java 转到 golang ,就个人感觉而言 golang 总体机会比 java 少;另外 golang 主要在大厂和大厂关联的创业公司(大厂直接出来创业的)需求比较多; java 是老牌工业语言,大小厂工作机会都有,特别是二三线城市占主导地位。另外就语言求职难易度讲其实 java 比 golang 难,java 现在太卷了,面试一堆无意义的八股文、很多都要深入研究源代码才能很好的理解和掌握、这对于新手求职来说是个地狱模式;反而 golang 没啥花样,主要面试还是注重前面说的算法那些基础东西。

    另外如果实在难以抉择选哪个,建议从自己感兴趣的项目考察:
    java 在安卓和大数据几乎是专属语言,从事这些项目首先 java 。
    golang 在云原生、k8s 、devops 有较强的优势。

    后台 web 方面比较可能比较复杂,
    高并发场景下:java 和 golang 都可以应对。但是都是同步编程情况下 java 可能比较差; java 要使用事件编程(异步编程)、比如使用 netty 框架才能跑过 golang ; golang 天生高并发、网络方面是长项,另外编程模式还是同步编程。
    对于 web 开发难易程度:java 如果使用原生开发网络非常复杂,需要上 spring boot 、spirng mvc 才会简单,但是这套框架想深入理解也是非常复杂的; golang 自带 http ,开发 web 比较简单,但是工业上也是使用框架较多。

    语言上:golang 就 25 个关键字、没多少特性,一周即可入门(有的人一天入门),java 语法较啰嗦,入门需要花费大量时间

    对于我而言:在面试岗位上两个语言都不挑剔,甚至面试上有巧妙的回避方式:对于 java 岗位就说 java 好多年没有干了,让面试官放弃考察 java 八股文;对于 golang 而言其实 golang 本身没多少八股文、面试喜欢考察算法等基础知识和系统设计。两个语言总体感觉 golang 会比较简单,java 太多无意义八股文,而且本人也不想在这上面浪费太多时间复习,导致本人也倾向面试 golang 岗位
    NoNewWorld
        27
    NoNewWorld  
       248 天前
    985 、211 想都不想直接选 go 。然后其余的觉得自己技术还行也直接选 go ,除非实在没办法才选 java
    ThinkStu
        28
    ThinkStu  
       248 天前
    刚转的 go ,各有优势
    yazinnnn
        29
    yazinnnn  
       248 天前
    觉得自己技术不行就选 go
    yazinnnn
        30
    yazinnnn  
       248 天前
    说点不切实际的话

    如果你家里条件还可以, 没有那么大就业压力的话, 上学时可以学一些学术性的语言, 比如 scheme racket haskell 之类

    然后在根据自己兴趣(品味)选一个工程语言, 觉得 go 好就选 go, java 好就选 java, 都不好就换别的比如 fsharp rust clojure erlang
    e7
        31
    e7  
       248 天前   ❤️ 1
    @voidmnwzp 是的,很多人什么分布式微服务、高并发一套一套的,稍微底层点的啥都不懂
    proletarius
        32
    proletarius  
       248 天前
    go 和 C++工资应该是最高的吧,java 替代性太强了
    assiadamo
        33
    assiadamo  
       248 天前
    都不如 c++
    e7
        34
    e7  
       248 天前
    你选择的是生态,而不是语言
    Leviathann
        35
    Leviathann  
       248 天前
    都不如 rust
    sunwei0325
        36
    sunwei0325  
       247 天前
    无脑 java 就对了, 去哪都有饭吃, 是最优先考虑的
    yummy007
        37
    yummy007  
       247 天前   ❤️ 1
    语言只是个工具,符合当前市场的最好,楼上很多说什么 spring 化,xxx 只有 CURD ,就觉得搞笑,一个东西没人用,不被市场认可就是一坨狗屎;要明白技术是给人服务的,无论做成什么样子都是要体现价值才行;建议学 go ,然后 python 也可以简单掌握一下,无论学那个语言计算机网络+计算机组成原理等这些基础的东西都要多看;后面你工作久了会发现语言没那么重要,意识形态形成后学那个都一样,万变不离其宗~~~
    hello2090
        38
    hello2090  
       247 天前
    @voidmnwzp 为什么要在小众领域专精?那能赚几块钱?为啥不自己创业财富自由呢?
    dog82
        39
    dog82  
       247 天前
    java 转 go 挺容易的,但是 go 转 java 难
    Navee
        40
    Navee  
       247 天前 via Android   ❤️ 1
    选 Java 吧,不用听那些 Java 笨重、繁琐的
    看看 JavaScript ,PHP 都在增加强类型、类支持
    Java 称之为笨重、繁琐的限制,在软件工程中是真管用
    wei2629
        41
    wei2629  
       247 天前   ❤️ 1
    c++ 细分领域用的多,上线也高。互联网的感觉没有太多想象力了。
    17681880207
        42
    17681880207  
       247 天前
    @bianhui
    道理理没错,但是我认为精通一个再学其他的会更好,才能一通百通。每个都学个皮毛,到时候不说别的,说不定语言的特性概念都容易混淆。
    eqing
        43
    eqing  
       247 天前
    个人认为 java 还是比 go 有优势,2c 项目可以 Java Go 兼顾,但是一些 2B ,2G 项目 java 偏多
    eqing
        44
    eqing  
       247 天前
    开学大三啊,还有时间,🐔多不压身呀
    fox0001
        45
    fox0001  
       247 天前 via Android
    成年人不做选择[狗头]

    两个都好用。个人偏向于 Go ,但还没做过大型项目,只做了几个小工具,很好用。
    darkengine
        46
    darkengine  
       247 天前
    小孩才做选择 /doge
    xubeiyou
        47
    xubeiyou  
       247 天前
    2 个都不是好选择。。。java 人路过
    dw2693734d
        48
    dw2693734d  
       247 天前
    自己做项目,选 go 。
    找工作,选 java 。
    aichidayuwan
        49
    aichidayuwan  
       247 天前
    无所谓

    一个语言随便看个一周足够干活了 业务代码能有啥难度

    再说真想学语言 也得有实际需求才好学 自己在学校里学的没多大用处
    lifespy
        50
    lifespy  
       247 天前
    我是做 jva ,推荐你选 go
    NessajCN
        51
    NessajCN  
       247 天前
    你该学的是计算机原理,线性代数,数字电路,CPU 工作流程,网络协议内容,软硬件接口,文本视频编码方式...
    而不是纠结在某个特定语言的语法啥样
    sudoy
        52
    sudoy  
       247 天前
    似乎 java 更好找工作哈哈
    passon
        53
    passon  
       247 天前
    java 进可攻退可守
    tedzhou1221
        54
    tedzhou1221  
       247 天前
    目前用 java 混饭吃,在学 Rust ,后面再学 go
    lizhisty
        55
    lizhisty  
       247 天前
    @voidmnwzp #8 你这只有 crud 啊
    hugepizza
        56
    hugepizza  
       247 天前
    建议两手抓

    java 工作好找

    学 go 的理念让你思维不那么局限在 java 的固定套路里

    不过如果有精力不如顺便搞搞 js
    wkong
        57
    wkong  
       247 天前
    go or rust
    xiaocaiji111
        58
    xiaocaiji111  
       247 天前
    如果不是从事云原生开发得话,入门选 java 。工作了前两年选一门语言深耕,后面适当学学别得语言。
    wnh3yang
        59
    wnh3yang  
       247 天前   ❤️ 1
    php 是最好的语言
    lushiwu
        60
    lushiwu  
    OP
       247 天前
    哪个就业前景更好
    lushiwu
        61
    lushiwu  
    OP
       247 天前
    java 把 Spring cloud 学完了
    robking
        62
    robking  
       247 天前
    @ixiaohei #26 大佬回复的很好,受益了,感谢!
    awanganddong
        63
    awanganddong  
       247 天前
    推荐选 java ,虽说 java 现在特别卷,但是 java 技术栈的工作岗位是最多的。
    楼主可以直接下载个 boss 直聘,自己去看看北上广深的工作岗位。那个是招人最多的。
    虽说语言是个工具,但是归根到底公司的技术栈是有侧重点的。

    我觉得你现在其实是好高骛远了。
    先把数据结构和算法这些首先掌握了,大厂必备。然后就是学习 java 框架。然后就是数据库,缓存这些中间件,一般就是 mysql,redis,es,kafka 这些。再之后就是各个微服务的理解,基本上就是网关和 rpc 这些。如果是做长连接这些的话,那就是网络协议这块。再深入可能就是 vim 虚拟机垃圾回收之类的东西。

    如果你把 java 学会之后,回过头学习 go ,基本上一个月时间就差不多了。
    go 语言的话,也是内存垃圾回收,gmp 。channel,map,sync 的底层实现,相比之教,东西会比 java 少的多。
    youmilk
        64
    youmilk  
       247 天前
    @wkong rust 没饭吃哇
    sch1111878
        65
    sch1111878  
       247 天前
    @voidmnwzp 完全不赞同, 只要有市场, 就有机会, 小众领域连面试机会都没有更别说工作了
    nicholasxuu
        66
    nicholasxuu  
       247 天前
    你想去工作的地方用什么就学什么呗。
    想自己创业开项目的话,我选 go (轻量化很多,部署的便宜)。
    反正先精通一个。学个新语言什么的几天的事。真正看的是别的东西。
    bv
        67
    bv  
       247 天前
    @dog82 #39 认同这句话
    dif
        68
    dif  
       246 天前
    学 Java ,找到一家公司,忽悠老板把架构改成 Go ,问题完美解决。
    poembre
        69
    poembre  
       246 天前
    选什么,全都要
    piscesliu0310
        70
    piscesliu0310  
       246 天前
    开学就大三了,要是不准备考研或者考公的话,明年暑假就要去找实习了,如果学校不是很好,还是建议选择 Java 。
    lushiwu
        71
    lushiwu  
    OP
       246 天前
    @piscesliu0310 只是为了恰饭,啥技术无所谓
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2542 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 02:15 · PVG 10:15 · LAX 19:15 · JFK 22:15
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.