今天有个帖子是说 Java 笨重、Spring 框架笨重,看完了总结了“笨重”的几点
- 内存占用多
- JRE 很大
- 配置很复杂
- 依赖很多包,打包出来很大( Srping/SpringBoot )
内存占用多
这个无可厚非,毕竟运行在虚拟机上。但是之前看过一篇博客对比了 Quarkus (印象中) JIT 和 AOT 两种模式下运行内存的占用,启动初期 AOT 完胜 JIT ,但是高负载情况下两者差不多,所以我想了解下是如果同等高负载的情况下,C++/Go 这类的服务端程序的内存占用跟 Java (最新) 比差距大不大呢。
JRE 很大
这个如果在最新 Java 下面用 jlink 并且压缩一下应该 50MB (包含 JavaFX 了,不包含的没试过) 左右,一个带 JRE 的 Java 应用 50MB 应该还可以接受吧。其实我疑惑的是很多人吐槽 JRE 大,没人吐槽 NodeJS 或者 Python 大么
配置很复杂
估计指的是 Servlet 那套 web.xml 配置以及远古时代 Spring 的 context.xml ,这个我也想吐槽,不过 SpringBoot 应该缓解了这个问题
打出来的包很大
Srping/SpringBoot 为了方便开发提供了很多大而全的东西所以很大,如果你的程序就简单的接口,业务代码也很简单,什么依赖注入、切面、请求体转换、参数校验等等功能都用不到,那也没必要用 Spring 框架。顺便问一句有什么好 Java Web 框架脱离 Servlet 体系又很瘦小的
其实对于我这个 Java 菜鸡来说上面问题都不是让我郁闷的,真正让我郁闷的是 Java 为什么这么多规范!这么多规范真的好吗?
- Servlet 规范,大环境下啥时候可以脱离这玩意啊
- Getter 、Setter 方法,我见了很多类的 Getter 、Setter 根本就没什么逻辑在里面,为什么不直接 Public 呢?
- 面向接口编程,特别 Spring 开发模式,很多 xxxService/xxxServiceImpl ,经常要改变实现类?我没见过要改的。这种规范搞到一个简单的请求处理分了好几层,写得贼难受,但是公司项目就这样必须做到统一