go web 和 Java spring 比优势在哪里?

2021-09-11 13:12:11 +08:00
 whatisnew

最近接手一个 go 的项目,gin 框架写的,main.go 各种 init 手工拼接日志、路由、orm 、grpc 等,c *context 之类的指针满天飞,日志都得自己定义,还定义的乱七八糟,相比 spring 一把梭一点都不顺滑啊,所以,很多项目转 go 是为了个啥?就为了省那么点内存?

12083 次点击
所在节点    Go 编程语言
98 条回复
tulongtou
2021-09-12 07:10:26 +08:00
@wanguorui123 这有点牵强了,openjdk 不收费的
wanguorui123
2021-09-12 09:04:13 +08:00
@zorui
@tulongtou
OpenJDK 虽说免费,但开源协议没 Go 友好,两者的宽松度不一样。
wanguorui123
2021-09-12 09:15:02 +08:00
@zorui
@tulongtou
OpenJDK 的免费是有开源协议限制的,大公司想搞点闭源私货是不太友好的,这个免费是有代价的。
powerman
2021-09-12 09:29:31 +08:00
@iseki 问题出在工程规模上,当需要大量人合作的时候,肯定是重量级框架来得合适,做监控 日志 权限 等横切业务支撑的人专门做这些,做业务的专门做业务,大部分人只是一个程序员的视角去看待工程问题,所以觉得 golang 简单一把梭来得合适,但是这种工具怎么说呢,你要是 3-5 个人,我觉得用原始一点的工具并没有什么不好,甚至你用 c 语言自己去撸 HTTP 然后配合宏 自己写一套 Server 框架都行,但是你要招上百号人来做项目,那么这就麻烦了,很显然刀耕火种的工具并不适合大团队生产。
tairan2006
2021-09-12 09:38:13 +08:00
目前在写 web 上毫无优势,当然默认性能上可以捶 springboot

当然等 1.18 加了泛型,就变成 Java 毫无优势了
abcbuzhiming
2021-09-12 09:57:30 +08:00
@LukeEuler 你的意思无非就是 go 历史比较短暂时没有历史包袱吗?那将来 go 如果也有了历史包袱咋办?
yangyaofei
2021-09-12 10:13:03 +08:00
@iseki 特性和库简陋这个不是很认同,java11 是可以愉快的使用的,spring 很多东西也很适合无脑怼,虽然我才做 java spring 半年多,但是这东西可不算简陋。

但是确实不如原来用的 python,python 两三行,java 要写很多甚至魔改(相信 go 也一样)

即使是简陋的,也要考虑在大家都是半吊子的前提下,那些 go 有之 java 没有的异常强大的不要不要的天神一般的新特性和库带来的收益和我提及的带来的麻烦的大小吧

而且半吊子有时候是超出人的想象的,纯 windows 部署,java 甚至还在用 jsp,jason 数据甚至在用 map 拼……所以 java11 springboot 最新 前后端分离 这些已经精疲力竭了,又不需要日均千万访问什么的
wdlth
2021-09-12 12:05:04 +08:00
我觉得如果单纯比 Web 开发的话,Go 和大多数时候围绕 Servlet 的 Java Web 相比是没有什么意义的,毕竟 Java 的是 JSR,是一种标准规范,而 GIN, Beego, Echo 的是民间开发的开源项目,所以你会觉得不同的实现有差异。

但如果你换成与基于 Reactor 的 Spring Cloud Gateway 比较,你也会发现和传统的 Java Web 不一样。
LukeEuler
2021-09-12 13:24:52 +08:00
@abcbuzhiming 那就继续换。(还是仅代表个人观点)。生产工具还是当下顺手比较好,没有什么永远最好的工具。但是,事倍功半的人,永远都会有。
mmdsun
2021-09-12 13:25:01 +08:00
转一个大佬点评 go:

go 这个语言在做企业应用时连个备胎都算不上,如果用不了 jvm 系的语言,我跑去抱微软的大腿使用 c# 都不会用 go,当然 node.js 比 go 还辣鸡。

就算想做个能处理高并发的中间件,你发现基于 netty 这种最土的异步事件循环的方案搞出来的东西依然好于吹上天的 goroutine 。

所以,go 这种语言最适合哪种人用呢?适合那种觉得 java 土但是连个 netty 都用不好的跑去二流互联网企业整天吹那点高并发的三流码农。
iseki
2021-09-12 13:25:38 +08:00
@yangyaofei 我没说 Java 简陋,我说 go 简陋,等反省能用了,勉强也就和 Java 同台竞技而已。和 Kotlin/Python 比就不用比了
ihciah
2021-09-12 14:20:38 +08:00
我觉得最难学的语言一个是 java,一个是 javascript 。。。
cnbattle
2021-09-12 14:30:49 +08:00
个人理解 轻量 适合容器化 k8s 友好
gaigechunfeng
2021-09-12 14:33:04 +08:00
@dhssingle 安装 visual studio,然后选择开发素材包。 勾选了 web,就要下 8,9 个 G 的东西啊。
cnbattle
2021-09-12 14:35:32 +08:00
慢慢都在面向 k8s 多语言 架构,spring 成熟的东西只能 java 玩才舒服,当然两者各有利弊,我使用多种语言开发,前者能更好的架构及融合
SorcererXW
2021-09-12 17:15:11 +08:00
云原生环境下,很多基础工作都可以下沉到基础设施来做,不需要和 Spring 一样在进程内把所用事情都做掉
okampfer
2021-09-12 17:46:21 +08:00
@gaigechunfeng #74
那是 visual studio 的问题,不是.net core 的问题啊。我在官网( https://dotnet.microsoft.com/download/dotnet/5.0 )下载的.net core for linux,解压缩了也才 405MB 。
cmdOptionKana
2021-09-12 18:21:04 +08:00
@gaigechunfeng 这个锅 .net 还真不背,我去官方网站看了教程,完全没有说需要 visual studio
cuebyte
2021-09-12 18:24:42 +08:00
@mmdsun 字节跳动和 B 站用 Go 多少年了,市值百亿美金,看来你说的大佬也没有那么牛。。
EIJAM
2021-09-12 18:58:58 +08:00
@mmdsun 这年头什么玩意都能算大佬啊。字节,逼站,知乎用 go 开发也没听说啥问题吧

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://tanronggui.xyz/t/801212

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX