本命 Java 。
要是写脚本,Java 那肯定是比不上 Nodejs 、Python 这种动态语言的,写起来真的轻松很多。但要是写服务器上正经的应用,那 Java 属实是强的一批。
1 、就资源占用问题来说,带了 vm 肯定比不上 C 和 C++这种,不适合低性能、低功耗的设备。但 vm 的好处也很大,平台无关性、自动内存管理等等,最主要是省了程序员开发的时间(很值钱的)。(我写过 C 和 C++,内存管理确实不是一件很省心的事)
以前 Java 的 web 程序是打成 war 包放在 Tomcat 里,现在则是直接和 Tomcat 融合成一个 jar 。近年来还出现了各种容器化、虚拟化技术。大厂在资源占用和开发效率中的选择已经很明显了。同时 jvm 极其优秀,虽然资源占用大了点,但性能也不算差,支持多线程,在带 vm 的语言里就是 top class 。
我认为 Java 作为一种偏高级的语言其实在资源、性能、开发效率上做到了一种相当好的平衡。
2 、JRE 很大这个我也觉得很迷惑。搞得好像 js 和 python 不用运行时一样的。.net 倒是好搞,操作系统带了,但非 windows 就比较尴尬。
@msg7086 你这个说法是想得很美,但实际并没什么卵用。想象中我改一下内部逻辑,保持接口不变,别人调用者就不用改。但实际上呢?你要是返回数据都不改那约等于没改,你要是返回数据改了,而人家调用者就是基于你的数据来写逻辑的呢? getID(), 开始是返回一个不会重复的 ID ,后来改成返回一个会重复的 ID ,你接口形式是没变哦,但这样的改动不得通知一下所有调用者吗?