笔者最近因为有个需求,二次开发了微信三方管理平台的go项目,也是借此机会聊一下使用go后的一些感受
性能对比
Java | Go | 优势 | |
---|---|---|---|
最低运行内存 | 70M | 20M | Java面向对象语言就注定一个实例的内存成本大于GO |
打包大小 | 70M | 28M | 流水线持续部署时省下的存储非常可观 |
接口性能 | 100% | 110% | Gin属于轻量级框架,必然是快于Spring |
开发效率
从根本来说,二者开发效率没有什么区别,但在考虑到java的隐性要求,如大家都默认MVC
模式架构开发以及面向对象语言的编程想法,想以最快时间完成接口开发是慢于go语言的
企业开发
得益于Spring框架,Java的企业应用开发是毋庸置疑强于GO的,动态字节码、反射、Agent等等。使得JAVA在架构设计、解耦、代码入侵持续集成上都是毋庸置疑的优秀
社区
在Java服务端开发时,因为拥有杀手级框架Spring,几乎所有用到的中间件或关键组件都拥有Spring-Starter版本,且社区维护上十分活跃。而GO还为在服务端开发上虽然性能极高但终究还是没有杀手级的Web框架,后续的集成几乎全靠自己装配。且已有很多Java开发的中间,这无疑使Java在技术栈选择上更加有优势。
结论
Go更适合中间件开发 , Java更适合Web开发
引路PinPoint
GO入侵式的引入
Java使用Agent,只需要在启动命令上引入