我们正在研究如何升级到Java9。JLINK的新功能是生成我们自己的JRE,它与我们的应用程序完全匹配。

我对此有一些天真的问题:

  • 在哪种情况下应该这样做?我了解微服务的好处,但是Web应用程序呢?
  • 是真正在使用它的大公司,还是他们通常使用通常的JDK?
  • 如何维护JLINK JRE?我们是否应该在每个新的Java版本中重新构建它(对于Docker镜像也是如此)
  • 如果graalVM与我们的应用程序兼容,不是总是更好/更容易吗?

  • 谢谢。

    最佳答案

    jlink旨在使Java应用程序可以轻松地移植到其他计算机,而无需期望它安装了JVM。
    无需运送jar并使用本地java命令(它们可能与编译该程序所针对的Java版本不匹配)运行它们,而是将应用程序作为一个自包含的镜像发送,该镜像不仅包含您的代码,而且还包含JVM的代码(但仅是运行应用程序所需的部分)。

    压缩后,典型的,不是那么大的jlink应用程序将只有大约50MB(再次包括JVM)。

    现在,对您的问题:



    如果您不希望指望已预先安装了兼容的JVM,并且可以在其中执行应用程序,而又无法从最小的应用程序中获得太多 yield (这只是其中的一部分), jar 您的应用程序组成)。



    我不能肯定地回答这个问题,但是由于jlink是一个相对较新的工具,所以我不希望许多大公司已经在使用它。

    这将随着时间而改变,因为正如您提到的,jlink可以提供很大帮助,这使得非常流行的Java微服务更易于部署。



    您只需选择使用哪个JDK来编译您的应用程序,然后jlink(它是JDK的一部分)将为您构建它。要升级您附带的JVM,只需升级用于构建的JDK。

    我建议您经常升级它,因为JDK通常每季度都会提供许多安全修复程序。



    使用GraalVM或其他JDK发行版的选择似乎与使用jlink正交,除非您的意思是使用GraalVM而非jlink图像构建本机图像?在这种情况下,我会说jlink在此阶段更加可靠:如果使用jlink来构建应用程序,那么一切都会按预期工作,而GraalVM的本机镜像仍处于试验阶段,许多常见的Java应用程序将无法在本机上运行到目前为止,我所做的少量实验就产生了许多图像,而无需付出很大的努力...如果您的应用程序使用本机图像,它确实具有一些好处,例如在图像大小和RAM消耗方面都较小的占用空间,以及更快的启动...但是在JVM暖机后它可能具有较低的峰值性能,因为它无法像完整的JVM一样执行JIT。

    关于java - JLINK如何使用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/61224447/

    10-16 09:47