之前在一直在用JAVA开发,从JAVA的 EJB 到流行的 Spring,总体感受开发速度尚可,不用重复造轮子,启动慢,内存占用高,单机并发量低。某次需要开发一个功能简单的服务,开发过程很顺利,上线部署发现,需要先装 jre 才能运行,程序本身不大,但是所需要的运行环境太大了,不适合快速部署。2018年的某一天,偶然间看到了go语言,尝试一下,把JAVA程序,用GO实现一遍,结果是程序体积小,可以直接运行,占用内存特别低(不到JAVA的十分之一),并发量高(据说相当与nginx),编译运行速度快(开发效率高,JAVA一个项目编译运行,没个3-5分钟都启动不来,影响开发效率),相对而言,目前go的各种库相对JAVA要少,但也有很多可以直接用的库,比如我常用的Goframe 几乎包含各种需要的功能(webserver,orm,config,cache)
这个其实没啥不好理解的, 你百度一下答案一大堆, java有hotspot JIT技术, 可以把热代码直接编译成本地机器码运行, 而且还是那种充分优化过的. 因为java热好的熟代码已经充分知道怎么优化达到最大的效能. 这点不必惊讶, 其他有JIT技术的虚拟机也有同样的特性, 比如现在奋起直追的php8也要引入JIT了.以前做过类似的测试, 结果确实很让人吃惊java快得吓人, 所以所谓的编译型语言编译出来的可执行文件执行效率一定高于快于解释型的语言是不正确的, 起码在一定的前提下是不能这么说的(比如阅后即焚不给java充足的时间加热代码).
#8