我了解到的 Java 是可以像 Python 提前打包成 exe 文件的,从而做到运行时不需要解释器,而且二进制文件执行速度我想也是要快于解释执行的,那么为什么这不是一种常见操作呢,而是在运行时使用 Jvm,Python 也是通过 Python 解释器启动? 这其中的根本原因是什么呢?各位回复前也稍作思考一下,谢谢
1
CNife 2020-06-09 09:21:39 +08:00
R 大在知乎回答过很多类似的问题,建议翻翻他的回答。
为什么 JVM 不用 JIT 全程编译? - RednaxelaFX 的回答 - 知乎 https://www.zhihu.com/question/37389356/answer/73820511 |
3
lasuar OP 我从网上一些资料上查到简明的解释是:
直接打包 Java 或 Python 代码到 exe 文件,其实没能改变什么,得到的 exe 文件大小会非常大(相对于编写的源代码),因为它把语言的解释器部分也给打包进去了,最终运行过程和通过解释器运行没有两样(速度没有多大提升),这样还打包 exe 就没什么益处了。 |
5
woscaizi 2020-06-09 10:44:13 +08:00
> 直接打包 Java 或 Python 代码到 exe 文件,其实没能改变什么,得到的 exe 文件大小会非常大(相对于编写的源代码),因为它把语言的解释器部分也给打包进去了,最终运行过程和通过解释器运行没有两样(速度没有多大提升),这样还打包 exe 就没什么益处了。
这个解释是对的,相当于套了一层壳,只是将运行环境打包进去了。 至于为什么还是需要这层环境,更深的原因就不知道了。 |