![](/style/images/good.png)
![](/style/images/bad.png)
go web 和 Java spring 比优势在哪里?
source link: https://www.v2ex.com/t/801212
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
最近接手一个 go 的项目,gin 框架写的,main.go 各种 init 手工拼接日志、路由、orm 、grpc 等,c *context 之类的指针满天飞,日志都得自己定义,还定义的乱七八糟,相比 spring 一把梭一点都不顺滑啊,所以,很多项目转 go 是为了个啥?就为了省那么点内存?
yeqizhang 1 天前 via Android
使用过一些项目就是引用 github 的依赖包比较烦……
wangxn 1 天前 2
内建 goroutine,有 GC
无运行时,直接一个可执行文件走起,部署极其简单
现代化,内建包管理
现代化,官方提供 laguange server/lint/formater 等一系列用来写 IDE 和编辑器的工具
语法简单,作者也是 C 的作者,爹是 Google
ChrisFreeMan 1 天前 3
UserNameisNull 1 天前
优势劣势,你说的很清楚了,很赞同。
你见过 java 项目转 go 吗?肯定没有的。
要么是 python 项目转 go,php 转 go,c 转 go,这群人对于 java 不了解,甚至鄙视,那就只能选择 go 了,运行效率高,开发效率极差。
charlie21 1 天前
给你一种用 xxx 就是王道的幻觉。若几年之后 xxx 人才饱和了,你是不是已经赚够五百万了还要转回 java 阿?
其实根本就是 java 太卷了,卷到让创建岗位的人能开出的好岗位太少了,奔个人少钱多所以转行去写 xxx,沧海桑田赚个快钱而已。
同样的情况,让写 delphi 也会有人去,让写什么 foolang 或 COBOL 也会有人去,只不过写 COBOL 的那群人不上网而已
岗位多钱也多,这就是风头,这不可持续。这是一个真空球形鸡的猜想,上文的 xxx 可以是 golang 也可以是 iOS,可 golang 创造的岗位不会比 iOS 更多吧?参考当年的 iOS 大牛的故事
贵站搜 iOS 离婚
iyaozhen 1 天前
但 go web 和 spring 完全不能比,项目做多了就喜欢标准化的(不需要纠结选啥库,更多精力做业务),spring 写的再差也中规中矩,go web 的话能写出花,还是希望框架统一点(事实上公司内部是统一的,用起来还是很舒服)。
cuebyte 23 小时 2 分钟前 2
Java 的 Collections,并发,JVM,代码风格都要考... 没有个 2 年经验都不敢要。公司招人的时候自己也够喝一壶的。
Go 的话相对没那么卷,并发相对简单,任何背景的程序员都可以转 Go 。 招人的时候可以把更多的经历放在架构设计、业务能力和软技能上。
LukeEuler 21 小时 26 分钟前 1
简单说明一下:python 2 3 共存了很长时间,阵痛了很长时间。看看现在的 java,简直就是一个无解的 2 3 4 5 6 7 8 。。。版本共存。解决不了这个问题,就是人的问题。
josephok 21 小时 10 分钟前 via Android
FrankAdler 20 小时 48 分钟前
Java 的各种语法糖全用上效果是可以隐藏起来很多细节,这有太多性能损耗和工程复杂性,所以选择能看懂代码都算牛逼的了,结果就是 Java 编程成本不在 Java 上,而是在各种这些东西了,挺奇妙的。
josephok 20 小时 41 分钟前 via Android
cmdOptionKana 20 小时 35 分钟前 1
比如小明数学考试 99 分,英语考试 59 分,对标小明的意思就不可能看小明的英语能力。
另外,golang 官方也从未号称“网络时代的 c 语言”,不负责任的媒体瞎写或网友戏言不可当真。
yangyaofei 20 小时 17 分钟前 via Android
一个语言或者框架好不好,并不是只看他的性能和是否容易实现之类的,而也要考虑不同的开发人员实现的效果是否比较一直。
都是理查德曼怎么写都行,甚至我自己写在我更愿意用 python,但是人多了水平不能保证的时候,我肯定不会选 python 。
shuimugan 15 小时 38 分钟前 1
在 serverless 架构上,以阿里云为例,允许使用自定义 docker 镜像运行,如果你的镜像体积(压缩后) 100MB 以内,冷启动的时候拉取->解压->运行->就绪的整体消耗在 1~3s,同时单个实例在 1 核 128MB 内存下可以承受 1000 并发(阿里云这点很垃圾,8 核 32G 内存和 1 核 128MB 内存最高的并发都是 100 ),那么服务器(无状态的应用部分)费用会变得及其低(完全按量付费),部署及其无脑,弹性伸缩非常方便。
并发模型简单高效也是一个优势,很多 java web 项目在线上跑,当代码会请求另一个可能耗时的接口时,整体应用稳定性基本处于玄学状态(比如启动分配 200 线程来处理请求,单一接口依赖了一个耗时不稳定的接口,可能要等 5s 才有返回,当这个接口被狂刷时,线程池被打满,其他接口请求进不来,表现就是整个服务都凉了),各种线程池大小配到傻对整体的 QPS 提升也不大,这时就会想各种蹩脚方案了,还不如一个异步模型来得爽快。于是这时候又要进之前关于 java 全异步解决方案里面的帖子里吵了,不如直接换语言。
iseki 15 小时 12 分钟前
连 Min Max 都要我自己造的“现代语言”,一项目造一份自己的各种混乱的 utils 这个,工程角度上看离 Java 还有一定的距离。
明明好多地方都卡死了使用方式,连 GoroutineID 和对标 Java 上 ThreadLocal 的东西都没有;结果这些基本的函数反倒自由了。
wanguorui123 10 小时 53 分钟前 via iPhone
powerman 10 小时 38 分钟前
yangyaofei 9 小时 55 分钟前 via Android
但是确实不如原来用的 python,python 两三行,java 要写很多甚至魔改(相信 go 也一样)
即使是简陋的,也要考虑在大家都是半吊子的前提下,那些 go 有之 java 没有的异常强大的不要不要的天神一般的新特性和库带来的收益和我提及的带来的麻烦的大小吧
而且半吊子有时候是超出人的想象的,纯 windows 部署,java 甚至还在用 jsp,jason 数据甚至在用 map 拼……所以 java11 springboot 最新 前后端分离 这些已经精疲力竭了,又不需要日均千万访问什么的
wdlth 8 小时 3 分钟前
但如果你换成与基于 Reactor 的 Spring Cloud Gateway 比较,你也会发现和传统的 Java Web 不一样。
mmdsun 6 小时 43 分钟前 via Android
go 这个语言在做企业应用时连个备胎都算不上,如果用不了 jvm 系的语言,我跑去抱微软的大腿使用 c# 都不会用 go,当然 node.js 比 go 还辣鸡。
就算想做个能处理高并发的中间件,你发现基于 netty 这种最土的异步事件循环的方案搞出来的东西依然好于吹上天的 goroutine 。
所以,go 这种语言最适合哪种人用呢?适合那种觉得 java 土但是连个 netty 都用不好的跑去二流互联网企业整天吹那点高并发的三流码农。
iseki 6 小时 42 分钟前 via Android
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK