corboy
V2EX  ›  问与答

Java vs go? 你们怎么看?

  •  
  •   corboy · May 2, 2017 · 17312 views
    This topic created in 3476 days ago, the information mentioned may be changed or developed.

    如果一个新人学一门语言,你们推荐学什么?

    Supplement 1  ·  May 3, 2017
    谢谢各位的回答。

    忘了说明了,我是个两年的 php。
    问这个问题的目的是为了比较 java 和 go 的将来,想听听大家的看法。

    我个人是看好 java
    1. 历史沉淀原因,各种解决方案齐全
    2. 工程化能力强,当项目复杂度上升后,这点极为重要
    65 replies  •  2017-05-03 17:04:37 +08:00
    zhujinliang
    zhujinliang
    May 2, 2017
    1
    golang
    jarlyyn
    jarlyyn
    May 2, 2017
    2
    go
    jkneedout
    jkneedout
    May 2, 2017 via iPhone
    3
    那么问题来了,Go 看什么书好呢!
    @jarlyyn
    @zhujinliang
    Cbdy
    Cbdy
    May 2, 2017 via Android
    4
    这年头还在 vs 编程语言?当然是选择都学😄
    corboy
    corboy
    OP
    May 2, 2017
    5
    @zhujinliang
    @jarlyyn
    麻烦能列举几个原因吗
    jarlyyn
    jarlyyn
    May 2, 2017
    6
    @corboy

    简单易上手……
    jarlyyn
    jarlyyn
    May 2, 2017
    7
    @jkneedout

    看什么书,操起 vsc 就是干
    zhujinliang
    zhujinliang
    May 2, 2017❤️2
    8
    赚钱,还是 java 吧,golang 目前还有点远

    golang 语法简单,语言要素少,易学易用
    直接编译为可执行文件,不需环境,不需其它依赖,单文件方便携带,常见平台都可编译
    自带效率靠谱的 goroutine,自带多线程通信机制 channel,多线程编程很容易
    有需要的话还可以混合 C 语言,直接 include C 的库
    内存占用不大,执行效率不错,不需 JVM 预热,目前没反编译工具

    @corboy
    mortonnex
    mortonnex
    May 2, 2017
    9
    都挺好的
    gouchaoer
    gouchaoer
    May 2, 2017 via Android❤️1
    10
    java 吧,go 设计有问题,用途有限,库不成熟
    maemual
    maemual
    May 2, 2017
    11
    新人有多新,如果是没学过编程的建议 Java
    Srar
    Srar
    May 2, 2017❤️2
    12
    其实我想说新手建议学 C# (
    jarlyyn
    jarlyyn
    May 2, 2017❤️1
    13
    @gouchaoer

    115 天前还在问

    “对于 POST 的数据,为什么要发明一个 application/json 类型“

    今天已经能对各个语言的设计和用途指点江山了。

    这个升级速度容本菜鸟膜拜一个。
    gouchaoer
    gouchaoer
    May 2, 2017 via Android❤️1
    14
    @jarlynn
    我是高级爬虫开发工程师,你不要小看我哦,我还是比较厉害的
    sagaxu
    sagaxu
    May 2, 2017
    15
    Java 和 Go 冲突吗?我的建议是两个都学
    murmur
    murmur
    May 2, 2017
    16
    java java 添砖加瓦 说明 java 才是大型应用的基石

    j2ee 捷途易易 说明使用 java 开发 web 会让你收到事半功倍的效果

    语言可以学 信仰不能丢
    whatisnew
    whatisnew
    May 2, 2017
    17
    明显要学 java
    wwqgtxx
    wwqgtxx
    May 2, 2017❤️4
    18
    @gouchaoer 我还是共产主义接班人呢,看看谁厉害
    colincat
    colincat
    May 2, 2017 via iPhone
    19
    明显 Java
    gouchaoer
    gouchaoer
    May 2, 2017 via Android
    20
    @wwqgtxx
    你不要小看高级爬虫工程师哦,就算是爬虫这种入门级别的工作,要做好还是很不容易的呢
    0915240
    0915240
    May 2, 2017 via iPhone
    21
    java 码农 一直在学 go
    互补不足吧
    WildCat
    WildCat
    May 2, 2017❤️1
    22
    @jkneedout Golang 只有一本书值得看:The Go Programming Language: https://www.amazon.cn/s?_encoding=UTF8&field-keywords=The%20Go%20Programming%20Language&search-alias=books

    其他都不要看,几乎都是垃圾
    fox0001
    fox0001
    May 2, 2017 via Android
    23
    Java 吧,非常成熟,而且找工作容易一些
    sillyousu
    sillyousu
    May 2, 2017❤️1
    24
    @gouchaoer
    围观大神把谷歌的弱鸡按在地上磨擦
    tongyuelong
    tongyuelong
    May 2, 2017
    25
    学 java 入门,再学 GO,因为学 GO 很简单。
    scnace
    scnace
    May 2, 2017 via Android
    26
    不看
    answeryou
    answeryou
    May 2, 2017
    27
    PHP 是世界上最好的语言
    levn
    levn
    May 2, 2017
    28
    听说该学 elixir 了?
    lwbjing
    lwbjing
    May 2, 2017
    29
    翻到 27#才看到我要的答案,现在整个 V 站是怎么了。。
    xrlin
    xrlin
    May 2, 2017 via iPhone❤️1
    30
    以前一直觉得 java 繁琐,但现在不得不说 java 真的适合大工程,包含了很多设计理念,而且工具类库多,虽然近两年没写过 java 了,但学 java 加深了我对设计、面向对象的理解,所以要选的话就 java 吧。
    sagaxu
    sagaxu
    May 2, 2017
    31
    @gouchaoer 你司还有爬虫 title 的,威武
    hpeng
    hpeng
    May 3, 2017 via iPhone
    32
    一起学很难吗?手动滑稽
    libook
    libook
    May 3, 2017
    33
    学 C
    maomo
    maomo
    May 3, 2017
    34
    新人为什么不学 Python ?
    gouchaoer
    gouchaoer
    May 3, 2017❤️1
    35
    @sagaxu 是的,我是国内少有的高级爬虫开发工程师,看我 offer:
    issues
    issues
    May 3, 2017
    36
    工作用 java 业余用 golang
    golang 写的一个小工具,配合 crontab 实现定时生成 vultr 快照
    package main

    import (
    "os/exec"
    "encoding/json"
    "time"
    "os"
    "log"
    "fmt"
    )

    const (
    CMD = "curl"
    // Api 密钥
    API_KEY = "API-Key:xxx"
    SNAPSHOT_LIST_URL = "https://api.vultr.com/v1/snapshot/list"
    SNAPSHOT_DESTROY_URL= "https://api.vultr.com/v1/snapshot/destroy"
    SNAPSHOT_CREATE_URL = "https://api.vultr.com/v1/snapshot/create"
    // 实例 id
    SUB_ID = "xxx"
    H_ARG = "-H"
    DATA_ARG = "--data"
    )


    type Snapshot struct {
    ID string `json:"SNAPSHOTID"`
    CreateDate string `json:"date_created"`
    Description string `json:"description"`
    Size string `json:"size"`
    Status string `json:"status"`

    }

    func main() {
    // 日志记录到文件
    var fileName string
    fileName = time.Now().Format("2006-01-02") + ".txt"
    logFile,err := os.Create(fileName)
    defer logFile.Close()

    if err != nil {
    log.Fatalln("open file error !")
    }

    log.SetOutput(logFile)
    log.Println(time.Now().Format("2006-01-02 15:04:05"), "task start...")

    // 获取快照列表
    var needDestory bool = true
    snapshotsCmd := exec.Command(CMD, H_ARG , API_KEY, SNAPSHOT_LIST_URL)
    snapshotsResponse, _ := snapshotsCmd.Output()
    var snapshots map[string]Snapshot
    json.Unmarshal(snapshotsResponse, &snapshots)


    // 快照数量
    if len(snapshots) < 11 {
    needDestory = false
    }
    log.Println(time.Now().Format("2006-01-02 15:04:05"), "snapshot number ", len(snapshots))

    // 如果快照数量超过最大限制 11 时,则删除最早的那个快照
    if needDestory {
    var destroyID string
    var theEarliestDate= time.Now()

    for _, value := range snapshots {
    tempDate, _ := time.Parse("2006-01-02 15:04:05", value.CreateDate)

    if tempDate.Before(theEarliestDate) {
    theEarliestDate = tempDate
    destroyID = value.ID
    }

    }

    log.Println(time.Now().Format("2006-01-02 15:04:05"), "destroy snapshot ", destroyID)
    destroySnapshotCmd := exec.Command(CMD, H_ARG, API_KEY, SNAPSHOT_DESTROY_URL, DATA_ARG, fmt.Sprintf("SNAPSHOTID=%v", destroyID))
    destroySnapshotCmd.Output()
    // 延时 30 秒,防止删除快照时,出现未知错误
    time.Sleep(time.Second * 10)
    }


    // 创建一个快照
    createSnapshotCmd := exec.Command(CMD, H_ARG, API_KEY, SNAPSHOT_CREATE_URL, DATA_ARG, fmt.Sprintf("SUBID=%v", SUB_ID))
    createSnapshotResponse, _ := createSnapshotCmd.Output()
    var createSnapshot map[string]string
    json.Unmarshal(createSnapshotResponse, &createSnapshot)
    createSnapshotID := createSnapshot["SNAPSHOTID"]

    log.Println(time.Now().Format("2006-01-02 15:04:05"), "create snapshot", createSnapshotID)
    log.Println(time.Now().Format("2006-01-02 15:04:05"), "task end")

    }
    Muninn
    Muninn
    May 3, 2017
    37
    你去你目标工作的城市搜一下 golang 的职位。 一般都是偏创业的,喜欢这些公司的话就学 go 吧。

    不过能来问这种问题,一般推荐学 java,至少好找工作。

    那些 go 很厉害的,都不是靠 go 找到工作的。。。
    buru
    buru
    PRO
    May 3, 2017
    38
    先学 php 找工作,再学 go 当第二门语言
    M4ster
    M4ster
    May 3, 2017❤️1
    39
    写 Java 是不可能写 Java 的,这辈子都不可能写 Java。Golang 又不会写,就是写 Python 这种东西,才能维持得了生活这样子。在家里面一个人日站又很无聊,都没有友仔友女玩,写 JS 的个个都是人才,说话又好听,超喜欢在里面的。
    bk201
    bk201
    May 3, 2017
    40
    go 只是玩具,压根不能和 java 放一个台面上讲。
    ikaros
    ikaros
    May 3, 2017❤️1
    41
    看到某楼简直要笑哭。。。。。。。。。。。。。。。。
    bugmenot3
    bugmenot3
    May 3, 2017
    42
    看不出来有什么理由选择 Java 不选择 C# 。
    agtc
    agtc
    May 3, 2017
    43
    大数据方面还是要用 java,生态太强大了
    agtc
    agtc
    May 3, 2017
    44
    写写接口,go 很方便
    BoiledEgg
    BoiledEgg
    May 3, 2017
    45
    学着玩用 go,找工作用 java。

    go 的生态其实现在已经很不错了,只是没有一套标准用法,初学的话得查不少资料,比如 benchmark 之类的去做对比,大量的新轮子需要被大浪淘沙。这一点很可怕,新轮子太多,而且不少是个人维护,可能一不小心就有一个轮子停止维护了。

    java 生态就不说了,成熟到可怕,基本上就那三板斧就能解决大多问题,满大街都是教程。

    另外,其实语法层面我也没觉得 go 有多大优势,java 不爽了那么改用 kotlin 就好,而且 kotlin 现在也有支持 coroutine 了。
    性能上的话,go 的垃圾回收现在跟 java 还是有差距的。

    以上是一个 java 开发,正在学 go 玩的感受。
    RqPS6rhmP3Nyn3Tm
    RqPS6rhmP3Nyn3Tm
    May 3, 2017 via iPhone
    46
    Go 编译出的是单个二进制文件,交叉编译非常之方便,就算是 arm 也可以用得很爽且效率高。
    我不会 go,但是前几天的经历让我被圈粉了
    znood
    znood
    May 3, 2017
    47
    可能要看你领域了,如果是大数据领域、安卓开发那就 Java 了
    如果是 DevOps、Docker 容器、微服务就学 Golang

    总之不管怎么说都学也没坏处,我用 Golang 开发(原来用 C++)开发效率快很多,Java 代码也能看懂能改,但是要写就有点困难。
    语言只是工具,解决问题才是根本。
    unity0703
    unity0703
    May 3, 2017
    48
    非要选一个的话,那就 java 吧,就业好很多

    @issues 这代码不如 python 简洁,golang 其实就是个 better c,不过对于 c 和 c++来说,go 还是非常爽的
    @levn elixir 不错,强烈推荐
    corboy
    corboy
    OP
    May 3, 2017
    49
    @znood 是否简单可以总结为,Java 偏宏观,Golang 偏微观 ?
    znood
    znood
    May 3, 2017
    50
    @corboy #49 不能,因为一些历史原因大数据领域尤其是 Apache 家族使用 Java 实现的很多,而 Docker 使用 Golang 带动了容器领域用 Golang 的多
    chunshuai
    chunshuai
    May 3, 2017
    51
    go 吧
    phrack
    phrack
    May 3, 2017 via Android
    52
    我能推荐 javascript 么。。。
    sagaxu
    sagaxu
    May 3, 2017 via Android
    53
    @BoiledEgg go 的 gc 目标是 low latency 不是 high throughput,jvm 是提供四种主要 gc 和十几个参数你自己定目标
    naver1
    naver1
    May 3, 2017
    54
    C# !!!
    Lpl
    Lpl
    May 3, 2017
    55
    目前两个都是主要语言在用。

    Java 的话市场容量会大不少,Go 的市场容量比 Java 的小很多;
    使用场景不一样,Go 一般会用来偏向做基础服务,Java 一般会用来做应用;
    Java 走 Web 的话入门还有到熟练需要的时间长,Go 会简单很多。

    要是推荐的话就推荐 Java 了,我是从 Java 入的 Go。毕竟 Java 的市场占有量比较大。但是..要是有另外一个选择的话,我推荐 Node,不是所有公司的岗位都要 Java/Go,但是每个公司都需要前端工程师。
    WytheHuang
    WytheHuang
    May 3, 2017 via Android
    56
    某楼感觉像孩子,说话语气幼稚不行
    btjoker
    btjoker
    May 3, 2017
    57
    自己喜欢, 两种语言侧重不同
    想稳就是 java
    Immortal
    Immortal
    May 3, 2017
    58
    个人偏向 golang
    也写了 1 年多了 至少目前来说挺不错
    longbye0
    longbye0
    May 3, 2017 via Android
    59
    @WytheHuang 别人是故意的哦
    TangMonk
    TangMonk
    May 3, 2017 via Android
    60
    java 靠谱
    Kaho
    Kaho
    May 3, 2017
    61
    PHP 是世界上最好的语言
    solee
    solee
    May 3, 2017
    62
    @phrack 用 node 的飘过
    solee
    solee
    May 3, 2017
    63
    java 转到 node 很久了,go 也会写一点....
    个人觉得微服务喜欢用 node,有 pm2 这种管理工具。
    密集计算的喜欢用 go,但是觉得 go 的管理和 orm 实在不方便。
    Java 很久没写过了记得当时在用 Spring boot 了,觉得写起 restful 的服务还是没有 node 那种爽快感。
    twor2
    twor2
    May 3, 2017
    64
    @longbye0 想给他点个赞
    WytheHuang
    WytheHuang
    May 3, 2017
    65
    @longbye0 看来我智商捉急
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1723 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 142ms · UTC 12:32 · PVG 20:32 · LAX 04:32 · JFK 07:32
    ♥ Do have faith in what you're doing.