ixiaohei
2023-06-14 09:57:57 +08:00
不知道你这个上位机软件是放到什么环境运行,如果是放到上位机里面,可以从 cpu 、内存和硬盘资源利用对比一下估计有些意义。以前也有过 php 开发的 web 放到上位机里面的经历,对我来说可能如下几点对比有点意思。
1. 上位机内存一般都比较小,java 因为 jvm 原因内存消耗较大,如果使用 spring 生态源那这个消耗更加恐怖。这个 golang 就比较有优势
2. 另外对于硬盘,或者软件安装需要的体积,完整版的 jvm 不算小、更小的体积需要使用模块化自行裁剪;另外对于 web 开发,看基于 servlet 那套搞,还是用 netty 撸;基于 servlet 那套需要使用 servlet 容器,tomcat 这套就比较重和大、jetty 那套比较小,但是方案不是很多。用 netty 撸又太原始,而且异步编程掌握难度比较高
3. java 的部署也是比 golang 复杂,除非使用 spring boot ,或者类似的单体框架,打成一个包直接 java 命令就可以启动会比较方便。golang 是直接编成 native exec 程序,而且无任何依赖(有些版本依赖 glibc ),丢进上位机就可以运行了。
4. 对于网络这块、golang 和 java 都擅长网络开发。但是对于网络高并发这块,还是 golang 比较有优势,java 可能要使用 netty 这种事件驱动编程吞吐率才好; golang 是天生支持高并发,底层是协程+epoll 实现,对于开发来说还是同步编程,比较易溶理解和掌握。
5. 另外对于生态:java 这块确实是最好的,但是还是要看应用场景、有些场景 golang 都有可替代的解决方案。