首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >您能使用jlink (模块汇编程序/优化器来创建运行时映像)来使用jaotc (Java先进编译器)吗?

您能使用jlink (模块汇编程序/优化器来创建运行时映像)来使用jaotc (Java先进编译器)吗?
EN

Stack Overflow用户
提问于 2018-05-07 20:01:24
回答 1查看 1.1K关注 0票数 4

这里的目标是:

  1. 创建一个运行时映像,它有自己的简化JRE (最小化大小)--这就是jlink给我们的
  2. 创建本地可执行库,而不是使用字节代码(提高加载时间,并希望消除混淆的需要)--这就是jaotc提供给我们的

然而,没有任何好的文档将两者联系在一起。在这两个流程中,似乎有很多矛盾的方法来做事情。

是否有可能使用jlink构建一个运行时映像,它使用jaotc生成的二进制文件?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-07 21:24:16

不怎么有意思。九二九五 (jaotc)没有提到jlink九月-282 (jlink)也没有提到jaotc

但是,因为jlink只生成一个精简的JRE (但它仍然是一个JRE!)使用您的应用程序代码,可以告诉它使用您想要的AOT编辑库。

如JEP-295所述,我决定遵循为java.base模块生成本机AOT的过程,然后通过将jlink-generated启动程序设置为如下所示,在bin/my-app上更改JLINK_VM_OPTIONS启动程序:

代码语言:javascript
复制
JLINK_VM_OPTIONS=-XX:AOTLibrary=./libjava.base-coop.so

然后我使用time bin/my-app运行我的启动程序,它对本地主机上的服务器发出HTTP请求(以避免网络延迟),然后打印完整的HTTP响应。

它使用AOT大约需要410 it,没有它需要210 it!

为了确认AOT是否正确,我添加了一些诊断标志:

代码语言:javascript
复制
JLINK_VM_OPTIONS="-XX:+UnlockDiagnosticVMOptions -XX:AOTLibrary=./libjava.base-coop.so -XX:+UseAOTStrictLoading"

它没有显示任何错误或警告,因此我相信我没有犯可能扭曲结果的错误。

总之,至少在我的例子中,混合jlinkjaotc似乎并没有产生积极的影响,但请注意,在jaotc JEP中,它们确实说:

代码语言:javascript
复制
AOT compilation of any JDK modules, classes, or of user code,
is experimental and not supported in JDK 9

所以,我想说,现在(2018年5月)对此作出判断还为时过早.让我们给他们时间来完善这一机制,并希望他们能够取得更多的改进。

目前,加快应用程序速度的一个更有希望的方法可能是使用GraalVM及其native-image命令。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50221593

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档