Java vs go? 你们怎么看? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
65 条回复    2017-05-03 17:04:37 +08:00
zhujinliang
    1
zhujinliang  
   2017 年 5 月 2 日
golang
jarlyyn
    2
jarlyyn  
   2017 年 5 月 2 日
go
jkneedout
    3
jkneedout  
   2017 年 5 月 2 日 via iPhone
那么问题来了,Go 看什么书好呢!
@jarlyyn
@zhujinliang
Cbdy
    4
Cbdy  
   2017 年 5 月 2 日 via Android
这年头还在 vs 编程语言?当然是选择都学
corboy
    5
corboy  
OP
   2017 年 5 月 2 日
@zhujinliang
@jarlyyn
麻烦能列举几个原因吗
jarlyyn
    6
jarlyyn  
   2017 年 5 月 2 日
@corboy

简单易上手……
jarlyyn
    7
jarlyyn  
   2017 年 5 月 2 日
@jkneedout

看什么书,操起 vsc 就是干
zhujinliang
    8
zhujinliang  
   2017 年 5 月 2 日   2
赚钱,还是 java 吧,golang 目前还有点远

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

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

115 天前还在问

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

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

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

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

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

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

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
    37
Muninn  
   2017 年 5 月 3 日
你去你目标工作的城市搜一下 golang 的职位。 一般都是偏创业的,喜欢这些公司的话就学 go 吧。

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

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

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

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

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

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

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

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

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

要是推荐的话就推荐 Java 了,我是从 Java 入的 Go。毕竟 Java 的市场占有量比较大。但是..要是有另外一个选择的话,我推荐 Node,不是所有公司的岗位都要 Java/Go,但是每个公司都需要前端工程师。
WytheHuang
    56
WytheHuang  
   2017 年 5 月 3 日 via Android
某楼感觉像孩子,说话语气幼稚不行
btjoker
    57
btjoker  
   2017 年 5 月 3 日
自己喜欢, 两种语言侧重不同
想稳就是 java
Immortal
    58
Immortal  
   2017 年 5 月 3 日
个人偏向 golang
也写了 1 年多了 至少目前来说挺不错
longbye0
    59
longbye0  
   2017 年 5 月 3 日 via Android
@WytheHuang 别人是故意的哦
TangMonk
    60
TangMonk  
   2017 年 5 月 3 日 via Android
java 靠谱
Kaho
    61
Kaho  
   2017 年 5 月 3 日
PHP 是世界上最好的语言
solee
    62
solee  
   2017 年 5 月 3 日
@phrack 用 node 的飘过
solee
    63
solee  
   2017 年 5 月 3 日
java 转到 node 很久了,go 也会写一点....
个人觉得微服务喜欢用 node,有 pm2 这种管理工具。
密集计算的喜欢用 go,但是觉得 go 的管理和 orm 实在不方便。
Java 很久没写过了记得当时在用 Spring boot 了,觉得写起 restful 的服务还是没有 node 那种爽快感。
twor2
    64
twor2  
   2017 年 5 月 3 日
@longbye0 想给他点个赞
WytheHuang
    65
WytheHuang  
   2017 年 5 月 3 日
@longbye0 看来我智商捉急
关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2803 人在线   最高记录 6679       Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 30ms UTC 15:17 PVG 23:17 LAX 08:17 JFK 11:17
Do have faith in what you're doing.
ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86