跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 请教关于 Java 打包 exe 的问题
未分類
10 5 月 2020

请教关于 Java 打包 exe 的问题

请教关于 Java 打包 exe 的问题

資深大佬 : lasuar 8

:迫于之前发的节点曝光量太少,重新发一贴。

原贴

我了解到的 Java 是可以像 Python 提前打包成 exe 文件的,从而做到运行时不需要解释器,而且二进制文件执行速度我想也是要快于解释执行的,那么为什么这不是一种常见操作呢,而是在运行时使用 Jvm,Python 也是通过 Python 解释器启动? 这其中的根本原因是什么呢?

附:我从网上一些资料上查到简明的解释是: 直接打包 Java 或 Python 代码到 exe 文件,其实没能改变什么,得到的 exe 文件大小会非常大(相对于编写的源代码),因为它把语言的解释器部分也给打包进去了,最终运行过程和通过解释器运行没有两样(速度没有多大提升),这样还打包 exe 就没什么益处了。

也请各位回复前也稍作思考一下,谢谢~

大佬有話說 (13)

  • 資深大佬 : autoname

    https://www.v2ex.com/t/679340

  • 資深大佬 : cheng6563

    Java 可以静态编译

  • 資深大佬 : senninha

    非码农朋友让你帮忙写个小工具,丢个 jar 方便,还是直接丢一个 exe 方便呢?

  • 資深大佬 : hantsy

    可以编译成机器内码。

    比如,https://quarkus.io/blog/native-command-mode-tools/

    Quarkus 最初可能都是关注在 Web 开发,现在 Command Mode 支持后,可以直接借助它编译成 Graavl 内码。

  • 資深大佬 : monkeyWie

    一般来说 java 打成 exe 不是真正意义上的二进制文件执行,而是一个 exe 壳,里面还是有 jre,用 jre 来运行的 java,所以体积会非常大。
    现在 oracle 有一个叫 GraalVM 的东西,支持 AOT 编译,这才是真正的静态编译,可以试试看: https://www.graalvm.org/getting-started/#native-images

  • 主 資深大佬 : lasuar

    @hantsy
    @monkeyWie
    感谢回复!

  • 主 資深大佬 : lasuar

    @senninha 这算是一个很小的优势吧 🙂

  • 資深大佬 : lqw3030

    我都把 jdk 打给朋友,百来兆,让 java 在朋友电脑上发光发热

  • 資深大佬 : penguinWWY

    SubstrateVM
    一般 java 的 AOT 都是为了降低启动时间,而且打出来的 binary 会非常大

  • 資深大佬 : fanchangyong

    会损失了跨平台的特性吧

  • 主 資深大佬 : lasuar

    @fanchangyong 运行环境( jre 、jdk )也会打包进去,所以跨平台没有问题,主要的问题是即使代码打包 exe 也是包含了解释器的,整个运行速率没有提高,就如同标题所说,想来 Python 也是一样的原理,我的问题已经有答案了。

  • 資深大佬 : albertofwb

    java python 这两种语言从设计上就是通过虚拟机(解释器)运行的 所谓的编译,就是将代码翻译为解释器可以识别的格式(字节码)
    因此,所有的针对这两种语言的打包,也都是围绕着解释器展开的

  • 資深大佬 : qwerthhusn

    不知道现在比较火的 GraalVM 能不能达到效

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具