Golang Go语言中web和Java spring比优势在哪里?
Golang Go语言中web和Java spring比优势在哪里?
最近接手一个 go 的项目,gin 框架写的,main.go 各种 init 手工拼接日志、路由、orm 、grpc 等,c *context 之类的指针满天飞,日志都得自己定义,还定义的乱七八糟,相比 spring 一把梭一点都不顺滑啊,所以,很多项目转 go 是为了个啥?就为了省那么点内存?
启动速度也是优势
更多关于Golang Go语言中web和Java spring比优势在哪里?的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
用 go 的第一件事,开骂,很正常
启动速度
内存占用
打包体积
交叉编译
框架简洁
点 netcore 现在结合了两者的优点,还是没人用
个人比较喜欢的是 go 打包成单个执行文件,交叉编译。
使用过一些项目就是引用 github 的依赖包比较烦……
原生语言,直接编译到机器码
内建 goroutine,有 GC
无运行时,直接一个可执行文件走起,部署极其简单
现代化,内建包管理
现代化,官方提供 laguange server/lint/formater 等一系列用来写 IDE 和编辑器的工具
语法简单,作者也是 C 的作者,爹是 Google
目的可能是提高门槛
我个人喜欢的 go 语言的点,特性简单,对比其他的编译型语言,没有那么多杂七杂八让人难懂的东西,工程目录对比 C#项目简洁太多。跨平台兼容性非常棒,对比 Pyhton 简直好太多,又快兼容性又好。能做的东西很多,后端,前端,游戏开发,脚本。运行简单,编译简单。我真的找不到比这个更适合拿来做个人开发更好的语言了
go 是有运行时的,打包在程序里
是的,开发 web 应用没有 Java spring 来的舒服
Go 简单,编译快,部署方便。如果项目实在太乱,最好先考虑考虑是不是写代码的人需要提升
刚刚切换语言、项目会有一段阵痛期,捱一捱就好了
我很迷惑,init 拼接就比 xml 差?
起码你一个 java 开发者,拿到这个项目之后,没有说看不懂。反过来没写过 java 的人去接手一个 spring 项目,能直接吐出来。
除了编译快,好像也没什么了,大家都用 docker 了,部署都是一样的,管你单文件还是多文件,至于内存占用,这个不能只看刚启动的内存,得看使用过程的内存占用
CRUD 用 Go 写就是为难自己,但是写中间件,写一个工具就很方便。
个人对 编译成 native 天生有好感
历史的轮回罢了,老东西大家就想换新,😅
你这也不能全怪 go 啊,这明明是框架约束性不同导致的;当然你也可以说 go 生态不行、没有个 spring 一样的框架
没用过 go,但你提的这些问题,我觉得是生态问题,没有好用的轮子,所以自由发挥
Go 免费、JAVA 收费
确实是轮子不给力
第二件事,继续开骂,
然后不得不接受公司的现实。
对中大型企业级应用来说,go web 目前毫无优势。
没有一个在做真正的对比,感觉都是从 C 转到 Go 的。
优势劣势,你说的很清楚了,很赞同。
你见过 java 项目转 go 吗?肯定没有的。
要么是 python 项目转 go,php 转 go,c 转 go,这群人对于 java 不了解,甚至鄙视,那就只能选择 go 了,运行效率高,开发效率极差。
虽然我没用过 go,但是你说的我很支持。
赞同
代码简洁和语法概念少,这两个是矛盾的呀
Go 神教就可以语法简单,代码也简洁。狗头保命 :)
一个猜想,不一定对:
给你一种用 xxx 就是王道的幻觉。若几年之后 xxx 人才饱和了,你是不是已经赚够五百万了还要转回 java 阿?
其实根本就是 java 太卷了,卷到让创建岗位的人能开出的好岗位太少了,奔个人少钱多所以转行去写 xxx,沧海桑田赚个快钱而已。
同样的情况,让写 delphi 也会有人去,让写什么 foolang 或 COBOL 也会有人去,只不过写 COBOL 的那群人不上网而已
岗位多钱也多,这就是风头,这不可持续。这是一个真空球形鸡的猜想,上文的 xxx 可以是 golang 也可以是 iOS,可 golang 创造的岗位不会比 iOS 更多吧?参考当年的 iOS 大牛的故事
贵站搜 iOS 离婚
没在点上。。open jdk 也很香。
如果原来的系统不是 Go 写的,可以用 Go 重构
go 对 java 有优势
但 go web 和 spring 完全不能比,项目做多了就喜欢标准化的(不需要纠结选啥库,更多精力做业务),spring 写的再差也中规中矩,go web 的话能写出花,还是希望框架统一点(事实上公司内部是统一的,用起来还是很舒服)。
go web 和 spring 咋比。。要说也是说 go 的生态还不太完善,没有类似 spring 的重量级框架
Java 转 Go 本来就不多吧?反而 Python 、PHP 转 Go 比较多。
.net 也能打包单文件
.net core 我倒是尝试过一段时间。一开始就下载安装 10 个 g 的素材包,有点劝退。
Java spring 是工业级的
go web 是个人级的
我搞 java 的,没用过 go 写 web,刚开始学,写了个和公司手环交互的通信代理,感觉可以,用起来比 java 简单,轻量
我爱 php,php 天下第一
那期待有人来给 go 来个 Summer 框架(对标 Java Spring )吧 🐶️
golang 在工程领域称王称霸已经是趋势了
昨天看了,b 站泄漏的 go 后端代码确实朴实无华,单感觉这么弄也很稳。
https://www.cnblogs.com/zjsxwc/p/15253790.html
那种文件直接过去不要依赖的感觉是真他妈爽。
go 在 web 方向确实缺少一个全栈的框架,基本上都得自己再攒点东西进去,好处就是简单易懂,门槛低。
一把梭 Spring Boot 没话说,然而 Go 的优势在于招人不用卷在语言上:
Java 的 Collections,并发,JVM,代码风格都要考… 没有个 2 年经验都不敢要。公司招人的时候自己也够喝一壶的。
Go 的话相对没那么卷,并发相对简单,任何背景的程序员都可以转 Go 。 招人的时候可以把更多的经历放在架构设计、业务能力和软技能上。
java 农,表示啥时候 go 也有个全家桶的框架再去玩
巧了,我就是 java 转的 go 。从语言和生态上,java 都比 go 强。但是,转 go 的理由也是有的,仅个人理解:写 java 的人不行。没有一个例外,全都不行。这些人成了 java 最大的短板。
简单说明一下:python 2 3 共存了很长时间,阵痛了很长时间。看看现在的 java,简直就是一个无解的 2 3 4 5 6 7 8 。。。版本共存。解决不了这个问题,就是人的问题。
怎么老有人拿 Golang 与 Java 比较? Golang 诞生之初就没有拿 Java 当目标,而是对标 c, c++,语法也更类似 c 语言,号称是“网络时代的 c 语言”。Golang 更适合写一些系统级的应用,而 Java 更适合写业务代码,二者没有可比性。
想什么呢?对标 c c++?就 golang 那性能?
graalvm,micronaut,quarkus,kotlin 在运原生时代让 go 毫无优势,至少在业务代码方面。
#36 你这是哪的 .net core,要 10 个 G 。
你说的这些,只是因为没有一个 spring 这样的框架而已,main 里面拼 init 啥的,也完全可以像 spring 那样隐藏起来,只暴露一个 application run,但是何必呢,为了这些发明各种范式,各种设计模式。
Java 的各种语法糖全用上效果是可以隐藏起来很多细节,这有太多性能损耗和工程复杂性,所以选择能看懂代码都算牛逼的了,结果就是 Java 编程成本不在 Java 上,而是在各种这些东西了,挺奇妙的。
单拿性能说事?既然是对标,那就是全方位的对标,Golang 在简洁性、编译速度、开发效率、包管理机制上是全面碾压 c++的。
有 GC 的语言不可能对标 c/c++,对标对标 c/c++就必须强调性能,“简洁性、编译速度、开发效率、包管理”本来就不是 c/c++的强项。
比如小明数学考试 99 分,英语考试 59 分,对标小明的意思就不可能看小明的英语能力。
另外,golang 官方也从未号称“网络时代的 c 语言”,不负责任的媒体瞎写或网友戏言不可当真。
目前为止,还没有那么多培训班捣乱。
其实 web 相关的主要矛盾不是项目的性能之类的,而是在怎么让参差不齐的开发人员能共同完成一个项目……
一个语言或者框架好不好,并不是只看他的性能和是否容易实现之类的,而也要考虑不同的开发人员实现的效果是否比较一直。
都是理查德曼怎么写都行,甚至我自己写在我更愿意用 python,但是人多了水平不能保证的时候,我肯定不会选 python 。
rust 才是对标 c c++的,golang 就算了吧
Go 唯一的优势大概就是编译快了,大道至简在 Go 上说好听了是简洁,说难听了就是简陋。
连 Min Max 都要我自己造的“现代语言”,一项目造一份自己的各种混乱的 utils 这个,工程角度上看离 Java 还有一定的距离。
明明好多地方都卡死了使用方式,连 GoroutineID 和对标 Java 上 ThreadLocal 的东西都没有;结果这些基本的函数反倒自由了。
总觉得这个问题得从两头看,太复杂强大的语言特性必然给水平参差不齐的团队带来麻烦,可是特性和库异常简陋也绝对不会给这种场合带来什么好处
这有点牵强了,openjdk 不收费的
OpenJDK 虽说免费,但开源协议没 Go 友好,两者的宽松度不一样。
OpenJDK 的免费是有开源协议限制的,大公司想搞点闭源私货是不太友好的,这个免费是有代价的。
问题出在工程规模上,当需要大量人合作的时候,肯定是重量级框架来得合适,做监控 日志 权限 等横切业务支撑的人专门做这些,做业务的专门做业务,大部分人只是一个程序员的视角去看待工程问题,所以觉得 golang 简单一把梭来得合适,但是这种工具怎么说呢,你要是 3-5 个人,我觉得用原始一点的工具并没有什么不好,甚至你用 c 语言自己去撸 HTTP 然后配合宏 自己写一套 Server 框架都行,但是你要招上百号人来做项目,那么这就麻烦了,很显然刀耕火种的工具并不适合大团队生产。
目前在写 web 上毫无优势,当然默认性能上可以捶 springboot
当然等 1.18 加了泛型,就变成 Java 毫无优势了
你的意思无非就是 go 历史比较短暂时没有历史包袱吗?那将来 go 如果也有了历史包袱咋办?
特性和库简陋这个不是很认同,java11 是可以愉快的使用的,spring 很多东西也很适合无脑怼,虽然我才做 java spring 半年多,但是这东西可不算简陋。
但是确实不如原来用的 python,python 两三行,java 要写很多甚至魔改(相信 go 也一样)
即使是简陋的,也要考虑在大家都是半吊子的前提下,那些 go 有之 java 没有的异常强大的不要不要的天神一般的新特性和库带来的收益和我提及的带来的麻烦的大小吧
而且半吊子有时候是超出人的想象的,纯 windows 部署,java 甚至还在用 jsp,jason 数据甚至在用 map 拼……所以 java11 springboot 最新 前后端分离 这些已经精疲力竭了,又不需要日均千万访问什么的
我觉得如果单纯比 Web 开发的话,Go 和大多数时候围绕 Servlet 的 Java Web 相比是没有什么意义的,毕竟 Java 的是 JSR,是一种标准规范,而 GIN, Beego, Echo 的是民间开发的开源项目,所以你会觉得不同的实现有差异。
但如果你换成与基于 Reactor 的 Spring Cloud Gateway 比较,你也会发现和传统的 Java Web 不一样。
那就继续换。(还是仅代表个人观点)。生产工具还是当下顺手比较好,没有什么永远最好的工具。但是,事倍功半的人,永远都会有。
转一个大佬点评 go:
go 这个语言在做企业应用时连个备胎都算不上,如果用不了 jvm 系的语言,我跑去抱微软的大腿使用 c# 都不会用 go,当然 node.js 比 go 还辣鸡。
就算想做个能处理高并发的中间件,你发现基于 netty 这种最土的异步事件循环的方案搞出来的东西依然好于吹上天的 goroutine 。
所以,go 这种语言最适合哪种人用呢?适合那种觉得 java 土但是连个 netty 都用不好的跑去二流互联网企业整天吹那点高并发的三流码农。
我没说 Java 简陋,我说 go 简陋,等反省能用了,勉强也就和 Java 同台竞技而已。和 Kotlin/Python 比就不用比了
我觉得最难学的语言一个是 java,一个是 javascript 。。。
个人理解 轻量 适合容器化 k8s 友好
安装 visual studio,然后选择开发素材包。 勾选了 web,就要下 8,9 个 G 的东西啊。
慢慢都在面向 k8s 多语言 架构,spring 成熟的东西只能 java 玩才舒服,当然两者各有利弊,我使用多种语言开发,前者能更好的架构及融合
云原生环境下,很多基础工作都可以下沉到基础设施来做,不需要和 Spring 一样在进程内把所用事情都做掉
#74
那是 visual studio 的问题,不是.net core 的问题啊。我在官网( https://dotnet.microsoft.com/download/dotnet/5.0 )下载的.net core for linux,解压缩了也才 405MB 。
这个锅 .net 还真不背,我去官方网站看了教程,完全没有说需要 visual studio
字节跳动和 B 站用 Go 多少年了,市值百亿美金,看来你说的大佬也没有那么牛。。
这年头什么玩意都能算大佬啊。字节,逼站,知乎用 go 开发也没听说啥问题吧
go 又不是只能 goroutine,自己实现的异步事件循环都不少了,goroutine 本来就是为了方便易用的权衡,才采用当前方案,
Java 吹得再好,也没看到取代 k8s 这一套生态的作品来啊,好像 spring cloud 那一套反而有被取代的趋势,
这种大佬论调也不过是无脑吹而已
在云原生都快被吹爆的时代,你们还在强调超大型项目,简直自寻死路
又一吵架帖,这是服了。一个公司选什么语言难道不是得考虑公司团队技术栈?主要技术栈是 java 的团队你去选个 go web 框架那估计能把公司干黄
因为这种原因小公司被技术人员搞死的不少。多数见于大厂垃圾去小公司,还觉得自己了不起完了。用大厂那套瞎搞。小公司被搞死了,老大还觉得是自己问题。笑死
企业级应用 != 大企业开发的应用,这个领域核心系统在 IOE 上绑的死死的,开源替代率很低
这番说辞不像大佬,比较像三流码农。
我用了一段时间,然后退了,go 写 web,个人感觉是自找没趣,耗费自己的身体,web 还是 PHP 有大优势,然性能瓶颈基本不在语言上,最近发现 dotnet core web 开发也很强,但感觉国内用的好少。
开机即用 不用装 jdk
文件小
golang 本想做 21 世纪的 c 语言,却做了 21 世纪的 php
这个语言风格有点像微博上自己开发数据库的 4k 哥
我也是这种感觉, 大多 web 开发者拿到 go 项目感觉能看看 7788, 但是直接让他去撸 spring 我感觉启动都费劲
所以有人用么, 17 都要发布了, 大家还在守着 8.
这个大佬不会是你自己吧
标题已经说明一些问题了,go web 和 Java spring 。
数据证明 Java 离开 spring 的话 63%的应用场景就没了。
从语言看,我觉得.net 力压所有其他,只可惜微软爸爸不给力。剩下的矬子里拔高个,就是 Java 了。
Java 最大的特点是下限很高,一群水平一般的人,写出来的东西,凑合也能用,虽然上不了高并发,但满足个百人、千人的访问是问题不大的。
而企业最需要的就是这样的东西,牛人是少数,平庸的才是大多数。而其他语言的上限比 Java 高很多,可下限也很低,非常依赖开发人员水平。
楼里有头条的朋友吗
想请教 linux kernel 用的什么 重量级框架
编程语言的江山已经划定了;下一次群雄纷争,割鹿中原的时候必然是 整个 行业发生了巨大的变化,才会产生新的需求,新的英雄,新的王国。
web 开发领域:java,别的可以用,但这个最多最稳;
数据科学领域:python,语法简单,高性能交给底层的 c/c++ fortran
高性能领域:c/c++,所有需要变态性能的地方,优先考虑; rust 行不行,rust 还没有太成气候;
交互界面领域:javascript,不要什么 qt 劳什子,交互就是 js 一把梭,天生就是干这个的;
需要思考的领域 未来 vr/ar 需要大量调用 图形库的时候,我估摸着还是 js ;
go 适合 非 web 中间件方向,这也是 字节使用场景吧
作为IT领域Go语言方面的专家,对于Golang在Web开发中与Java Spring的比较,我认为Golang具有以下优势:
- 高性能:Golang是编译型语言,执行效率高,特别适合构建高性能的Web服务。其内存管理机制和垃圾回收技术使得应用程序在处理大量请求时性能优异。
- 并发处理强大:Golang的并发模型基于goroutine和channel,可以轻松实现高并发编程。相比传统的线程,goroutine更加轻量级,能够在同一时间内创建大量goroutine,而不会占用大量系统资源。
- 易于部署:Golang的编译结果是一个单一的二进制文件,部署简单,且包含了所有所需的依赖库,无需额外安装其他运行时环境。
- 生态系统丰富:虽然不如Java成熟,但Golang的生态系统也在不断发展,拥有多个优秀的Web框架,如Gin、Echo等,帮助开发者快速构建Web应用程序。
- 语法简洁:Golang设计简洁,上手快,适合快速开发。其简单而一致的标准库,以及丰富的第三方库,使得开发Web应用程序变得更加轻松和高效。
综上所述,Golang在Web开发中相较于Java Spring具有高性能、强并发处理、易于部署、生态系统丰富和语法简洁等优势。