我已经读到了关于提前编译的内容,并且有micronaut,一个java框架可以做到这一点。我只是想知道在春晚里有没有可能做到这一点。
dw1jzc5e1#
您可以使用spring native:springnative支持使用graalvmnative映像编译器将spring应用程序编译为本机可执行文件。springnative仍然是beta版,2021年4月20日的版本是0.9.2。
uqcuzwp82#
仅仅使用java和springboot,我不这么认为。由于aot编译的代码将依赖于平台,因此它将与我们目前使用java的代码相矛盾。java使用java字节码实现了平台无关性。有了aot,它将绕过生成java字节码的步骤,而有了当前的java体系结构,这是不可能的。下图中的红线显示了在java中用当前体系结构编译aot需要做什么。然而,新技术正在兴起,比如graalvm。graalvm将创建代码的本机映像,这意味着代码将直接编译为机器代码(使用graalvm的编译器),并在graalvm平台上执行。这提供了在运行时执行多种语言的机会。就像我们可以有一个应用程序,它的代码库是java和python。我们目前在这些平台上有一些限制,这使得它们有点实验性。但是,看到aot编译的java代码将来在不同的平台上运行,我不会感到惊讶。
2条答案
按热度按时间dw1jzc5e1#
您可以使用spring native:
springnative支持使用graalvmnative映像编译器将spring应用程序编译为本机可执行文件。
springnative仍然是beta版,2021年4月20日的版本是0.9.2。
uqcuzwp82#
仅仅使用java和springboot,我不这么认为。由于aot编译的代码将依赖于平台,因此它将与我们目前使用java的代码相矛盾。java使用java字节码实现了平台无关性。有了aot,它将绕过生成java字节码的步骤,而有了当前的java体系结构,这是不可能的。下图中的红线显示了在java中用当前体系结构编译aot需要做什么。
然而,新技术正在兴起,比如graalvm。graalvm将创建代码的本机映像,这意味着代码将直接编译为机器代码(使用graalvm的编译器),并在graalvm平台上执行。这提供了在运行时执行多种语言的机会。就像我们可以有一个应用程序,它的代码库是java和python。我们目前在这些平台上有一些限制,这使得它们有点实验性。但是,看到aot编译的java代码将来在不同的平台上运行,我不会感到惊讶。