之前在一直在用JAVA开发,从JAVA的 EJB 到流行的 Spring,总体感受开发速度尚可,不用重复造轮子,启动慢,内存占用高,单机并发量低。某次需要开发一个功能简单的服务,开发过程很顺利,上线部署发现,需要先装 jre 才能运行,程序本身不大,但是所需要的运行环境太大了,不适合快速部署。2018年的某一天,偶然间看到了go语言,尝试一下,把JAVA程序,用GO实现一遍,结果是程序体积小,可以直接运行,占用内存特别低(不到JAVA的十分之一),并发量高(据说相当与nginx),编译运行速度快(开发效率高,JAVA一个项目编译运行,没个3-5分钟都启动不来,影响开发效率),相对而言,目前go的各种库相对JAVA要少,但也有很多可以直接用的库,比如我常用的Goframe 几乎包含各种需要的功能(webserver,orm,config,cache)
确实, java如果充分预热, 速度是要比go快的.这点早就被证明过了,事实上, 如果java充分优化过的运行时代码是可以和C相媲美的.加上异步框架netty之类的加成和一些特殊指令的运用, java的并发并不比go差多少的. java的劣势其实在于有商业授权问题 , 还有加上框架的发布包过于臃肿肥大, 各种依赖层层叠嶂很容易遇到版本问题, 随便一个像样的发布包就有几十M, cicd打包编译都要好久.而且如果是商业分发产品而不是自营的还有源码泄露的危险, 这些go都完美避开. 另外java的内存消耗也比go大, 配置较低的机器go能输出更高一些的产能.比较适合资金比较紧张的初创公司.
#3