Quarkus中的本机编译-为什么重要

大家好!这是Quarkus系列的第二篇文章-今天我们将讨论本机编译。 (顺便说一下,注册并进入我们的网络研讨会“ 这是Quarkus-Kubernetes本机Java框架 ”,该会议将于5月27日举行。我们将展示如何从头开始或转移现成的解决方案。)



Quarkus是为Kubernetes量身定制的Java堆栈。尽管当然这里还有很多工作要做,但我们已经在很多方面做了很好的设计,包括优化JVM和许多框架。 Quarkus的功能之一引起了开发人员的兴趣,这是一种全面的无缝方法,可以将Java代码转换为特定操作系统的可执行文件(所谓的“本机编译”),类似于C和C ++,通常在这种情况下进行编译在组装,测试和部署周期结束时。

尽管本机编译很重要,如下文所示,但由于我们已在整个堆栈中实现了性能改进,因此Quarkus在最常见的OpenJDK Hotspot Java机器上确实可以很好地工作。因此,应将本机编译视为可以随意使用或需要使用的额外好处。实际上,关于本机映像,Quarkus严重依赖于OpenJDK。由于在Hotspot中实现了动态代码执行的发达功能,开发人员深受开发人员欢迎的开发模式几乎可以立即进行更改测试。另外,在创建本地GraalVM映像时,将使用OpenJDK类库和HotSpot功能。

那么,如果一切都已经完美优化,那么为什么还需要本机编译呢?我们将在下面尝试回答这个问题。

让我们从显而易见的地方开始:Red Hat在JBoss项目的开发过程中具有优化JVM,堆栈和框架的丰富经验,包括:


多年来,我们一直在处理在云中以及在资源有限(读取,IoT)有限的设备上运行Java应用程序的问题,并且学会了在性能和内存优化方面最大限度地利用JVM。像许多其他公司一样,我们长期以来一直通过GCJAvianExcelsior JET甚至Dalvik进行Java应用程序的本机编译,并且深知这种方法的优缺点(例如,在多功能性“一次构建-随处运行”与“编译的应用程序较小并且运行速度更快)。

为什么考虑这些优点和缺点很重要?因为在某些情况下,它们的比例变得至关重要:

  • , serverless/ , ( ) , . , . JVM , , , 5 . , Java- ( , , OpenWhisk Knative), JVM . , , .
  • , , . , JVM , , Linux’ – . Java-. , JVM, . , .
  • , - , . 12 , Kubernetes Java- . , , , , . , dead-code elimination, ( JDK), . Quarkus .

实际上,上述论点已经足以从Quarkus项目参与者的角度理解本机编译的理由。但是,还有一个原因,而不是技术问题,也是重要原因:近年来,许多程序员和开发公司都放弃了Java,转而使用新的编程语言,他们认为Java及其JVM,堆栈和框架在内存方面变得过于繁琐,太慢等

但是,使用相同工具解决任何问题的习惯并不总是正确的有时最好退后一步,寻找其他东西。如果Quarkus让人们停下来思考,这对整个Java生态系统都是有益的。Quarkus在如何创建更高效​​的应用程序方面体现了创新的观点,使Java与诸如无服务器之类的新应用程序体系结构更加相关。此外,由于其可扩展性,我们希望Quarkus将获得整个Java扩展生态系统,从而显着增加现成的将支持本机编译作为应用程序一部分的框架的数量。

All Articles