(纯主观)一个 javaver 用 go 语言的初步体验
以下观点纯属个人主观感受
1.协程体验完美 无需内核态的上下文切换吊打 jvm 的线程,语法层面也是完爆 一个关键字就完事 go func 吊打 new thread(啰嗦一大堆).start ()
2.类型推断也不要太爽 := 和 var 用的不亦乐乎 jdk10 的 var 不知猴年马月才能用到
3.自定义类型也很香 type Unixtimestamp int64 type Timestamp int64 规范又优雅,结构体可以当值用也可以 new 一个当对象用,关键是再也不用定义恶心的包装类型了以及得注意拆箱的空指针了
4.自带的轮子少但够用,日期处理一个 time 包就够了,date 、calendar 、localdate 、localtime 、sdf 一边去吧,线程安全 mutex 就够用了、异步转同步 channel 也够了
5.Gin 使用体验下来也是简洁程度吊打 mvc+springboot ,启动速度更是完爆之,直接交叉编译一个可执行文件丢到服务器上,远离 jar 包
6.多返回值和函数传参很赞,闭包就更不用提了
写小项目是爽,大项目主要还是看生态,Go 的 web 框架要把各种功能凑齐到 spring 的程度也要一番折腾。
Go 在大规模工程和高并发工程下的表现如何?有了解的吗
呵呵,各种吊打
Java 等 Loom
写 go 得的就很馋 java 增加了那一系列函数式特性,太香了
蜜月期总是好的
楼下解释了,各种吊打
不急,你的想法很快就会发生变化
有人会写 new thread. start?
同 Java 接触 go ,最不适宜的无非是 err!=nil 和分包的方式,一个目录下所有的文件都算一个包...
还有人 new Thread 的么?至少我们这边大多用 reactor 了。
啊对对对
虽然用了很多年 Go ,但是 2022 年了,C++ 都有原生无栈协程了,第一条不能打了
盲猜楼主工资 1 万 5 以下?
像事务的东西能不能像 Java 加一个注解就可以?
楼主说的这些点 C# 早就做到了而且做的更好, 建议体验一把.
我原以为是来喷的,没想到是来夸的,趁这机会我高低得开 10 个箱子
你怎么敢在这喷 Java 的?难道想被喷到哭吗
lombok 也可以用 val 和 var 的
我看这次吵不吵得起来
无语,你这样的工资多少都白瞎
不不不,我的意思是,我感觉纠结于这些的,一般都。。
支持,java 届的人间清醒。
ps:总有很多巨婴程序员觉得 go 没有这不行、没有那不行,其实都是常年写逻辑的你自己不行
都不如 kotlin
#22 也就写习惯了 CURD 简单逻辑的不太纠结这些。如果真都不用纠结,世间岂不早就被 c/cpp 一统江湖了
用 GO 做项目的时候会发现这个要改那个要加 无意中造了好几个轮子。。。 不知道你们有没有这个感觉
scala
有没有可能是你自己不会用 Java ?不会一些最佳实践?
代码写太少了。
了解!
说一下做 java 多长时间了,做了些什么项目?
用 go 多长时间了,做了些什么项目?
给大家一个参考
我感受的最大爽点在编译后的单文件大小,以及在低端设备( arm )上的运行的低配置要求
路由器、机顶盒这种设备,用 C/C++太难写,还大概率没有 gcc ,用 javaSE 几乎不可能,J2ME 也不好用
不如 c#
虽然我用 go ,但是堆业务,exception 还是比 if err != nil 来得舒服的
我只要看标题就知道这个帖子能上百楼
我只要看标题就知道这个帖子能上百楼
私人项目我用 Go 是因为自己的 vps 内存太小,用 Java 跑起来费劲,又不想花钱买贵的,公司项目我推荐用 Go 是因为以前的业务是 PHP ,这帮 PHPer 转 Go 都有点吃力(而且只有一小半的人愿意尝试),Java 更不用想。
所以如果有得选,企业项目我更愿意用 Java ,因为你说的这些爽点,和 Java 下完善的生态、轮子、方案等对比,我愿意舍弃这些爽点。
如果是高并发服务的话,go 确实香,跑在老 i5 Mac 笔记本单机 QPS 20w+,内存占用 50M 可能还不到,静态编译体积几 M ,Docker 镜像只需要 from scratch 或 busybox/alpine ,也就是 jiM 到十几 M 大小( hello world 应用 json 返回,fiber 框架)。
同样的服务用大家最熟悉的 Java Spring Boot ,可能只能几百一千 QPS 吧,内存占用几🐔,镜像体积至少小几百 M (即使只有 JRE+应用也挺大了)。
当然肯定会有人说,用 Spring Boot 比不公平,应该用 Vertx 之类的异步框架。不过现在主流 Java 版本写异步可能还是没那么顺手的,至少不像 go 那么顺手和自然。不然的话,可能 QPS 几 w 单机也还是行的,内存占用稍多些,JVM 本身启动开销大点。
如果不是高并发服务,而是业务复杂些的 2B 应用,go 因为设计比较简洁,写起来可能会非常啰嗦,语法糖各种没 JVM 系的 Spring 框架及 Kotlin 语言那么顺手。收益反而也比较小。( go 开发难度增加很多,部署和运行时带来的收益可忽略不计)
#26 单是文件结构就容易每个项目一种,Go 的最佳实践方案还是不够
Gin 对标 SpringBoot ?甚至连 SpringMVC 都没法对标...
javaers in v2ex: 我们中出 了一个二五仔
kotlin 教做人
又 tm 一个引战贴,😊
go 语言属实是 v 站的流量密码了😆
你掌握了 v 站流量密码
圣战开启!
前几天 C fork 调用 golang 编译的库 结果卡死了....
官方 BUG,没有修复
比 hello world ,PHP 都可以将近 40 万 QPS , workerman.net/doc/webman/ 测试结果在这
PHP 还是强啊👍
跟我大学时刚接触的 PHP 相比,应该已经不是一个概念了
————
看了下,排名里你贴的这个 PHP 框架跟 fiber-prefork 的 QPS 基本一样了。确实很强。
Java 的好多异步框架名列前茅,后续 Java 17 (还是多少来着)的类协程语法支持好了后,应该真的大有可为了。
好多 PHP 的框架也都在 30w QPS 以上,这在以前真的很难想象,感觉在好几年前,就算是 php-fpm 也很难达到单机十几 w 的并发。时代进步真快。
你要写 php 会吹出神了。。。
java 唯一缺点就是太啰嗦
go 的时间库设计成那个样子不一定是好事,有些场景无法很好的处理。
协程的话,建议你看下 Kotlin 的,和 Go 的轻量级线程不是一类东西,各有各的好处。
typealias 这个确实不错,等泛型实装应该更好一点。
Gin 和 Spring 全家桶不是一种东西啊。
使用多返回值表达错误这从根本上就是裂开的,不比状态码强。(本条个人观点,勿喷)
仅仅说下协程,kotlin 的 coroutine 优点是结构化并发,缺点是异步函数具有传染性。
goroutine 刚好相反。
reactor 本质还是异步,甚至比异步更恶心,写习惯应该还能顶住。
因为本质是低端语言的(手动狗头)。从语法上来说我觉得 go 比 nodejs 还要低端,不过 nodejs 也是经常造轮子。
以前我也觉得 nodejs 很方便,比写 java 方便多了。不过也就是那样,在大型的工程,nodejs 还是要在旁边呆着,不好搞。觉得 java 不好,去看看 C#,应该是= java 20 版。
别的不说,单就看到 date 、calendar 、localdate 、localtime 、sdf 这几个词就一把辛酸泪。
非常不理解,语言这种东西为什么要站队,都会不香吗?
适合做中间件,高并发相关的后端
个人项目用 go 写非常爽
特别是小型的服务
果然只是初步体验。。
虽然我现在也主要用 Go ,但是总还是觉得 Go 缺的东西太多了。。
你说的这几点除了 1 协程更方便,5 Go 更轻量以外,其他应该没有一个是 Go 比 Java 好的,最多只是各有千秋。。
有
其实 Go 协程也是有传染性的,就是大家都要用 Go 。以前用 C / CPP 写的都要重写。
啊?这算啥传染性 [狗头]
那用 rust 不是更爽,连 GC 都不用🤣
C#不考虑 async 和 loom 不同的话,应该是 java26+
那你年薪有 60 万以上吗?
Java 也能自己封装一个线程池啊,方便不方便还不是自己说了算。。。
个人项目还行,主要是用于替代 python 了,稍微严谨的项目还是用 Java,至少我喜欢这样
难道就没有体验过 var a := int(math.Max(float(b), float(c)) 吗
比 60 高一些。。
看了你的代码,感觉整个人都脏了,这可能就是我们理解不了的指导思想,引入泛型以后是不是就能解决这个问题了。
感觉好像理解错了,应该是人家就不想实现这样的东西
只是单纯地因为讨厌其语法而不想学 GO 。
你 java 还在用 new Thread 那自然会觉得别的语言不错...
线程池 submit 就舒服了?
体验过了,很难受,又没办法😂
说到这个我就情不自禁的提起,常年写 C++的人偶尔写一下 python 是多么神清气爽,心旷神怡了
666😂
用 go 写一个类似 spring 的东西也不难吧,,,
17 年开始写 c ,go ,后来一直是 go ,,,,这些年,明显感觉 go 的人越来越多了,17 年时候只记得 jd 已经开始招聘 golang 工程师了,但当时招聘 go 的还是太少,,,
go 语言,慢慢的就会凑够包管理、泛型、异常处理了,别急,会越来越像 c#的
jd 的 go 也很少
现在海外的 nextjs 教程不是有很多吗,质量也很棒。 国内的不多,但我就想搬过来免费给中国的程序员使用观看。 用 ai 来翻译字幕,加上中国的语音,这样就是全中文的教程。 …
多:做很多项目,看到市面上有什么新东西就跟着做什么快:不给足够的时间考虑细节和测试,典型的口头禅是:“这个很简单应该很快就能做出来吧”好:好用,没 bug ,一次开发,稳定长期…
题外话:剑桥大学出版社很有意思,允许作者把书的全部内容放在网上,例如:Christopher D. Manning, Prabhakar Raghavan and Hinric…