夸克代码
Quarkus,新的“超音速,亚原子” Java框架目前正受到广泛关注。 对于企业Java的未来而言,此构建和运行时工具背后的思想确实比我们感兴趣。 使用Quarkus有什么好处和缺点?
摆脱动力
Quarkus认为,在容器化的世界中,企业Java运行时的大多数动态并不是真正需要的。 将应用程序构建到容器映像后,通常不应更改其功能。 企业容器带来的所有动态都允许使用功能强大且灵活的编程和部署模型,但是一旦我们的应用程序在容器中启动后,它们通常将不再更改。
Quarkus采取的方法是定制仅包含应用程序所需内容的运行时,并简化企业运行时的大部分动态。 企业Java代码在很大程度上依赖于控制反转(IoC),也就是“不给我们打电话,我们给您打电话”。 想依赖注入的ALA @Inject
,HTTP与资源@Path
和@GET
,或与事件观察家@Observes
。 我们的开发人员以声明方式指定应该发生什么,并且实现可以确保实现。 这允许非常高效的编程模型,但在运行时也会带来繁重的工作,因为有人必须将所有这些松散的末端放在一起。 现在,我们的想法是,如果我们的应用程序不应该在运行时发生变异,那么大多数这些动态因素都可以在构建时解决。 然后,生成的代码主要可以包括直接调用。 所有的魔法都被烧掉了。
现在,这与过去(从今天看来)不支持IoC且需要直接调用代码中功能的笨重的企业框架所实现的结果相同吗? 从开发人员的角度来看,一点也不。 在我们的代码中,我们仍然使用相同的有效声明式方法,相同的注释。 构建过程负责将动态重新带回现实。
Quarkus还支持使用GraalVM构建本机可执行文件。 通过这种方法,我们使用提前(AOT)编译将应用程序预先构建并编译为本机可执行文件,而这些本机可执行文件无需动态扫描所有类并将其加载到JVM中。 与常规JVM相比,生成的可执行文件启动速度非常快,并且资源消耗较低。
标准的力量
在Quarkus上,我发现最吸引人的是它基于已知的企业标准构建,例如CDI,JAX-RS等。 我们可以通过本机可执行文件或使用Java运行时,在优化的运行时中运行应用程序,而不是使用成熟的应用程序服务器。
许多起义企业框架要求开发人员再次