1.2 Quarkus 的整体优势
Quarkus 的价值主要体现在以下4个方面。
1.节省资源、节约成本
Quarkus 受追捧的一个原因是节约成本。Quarkus 和传统 Java 框架相比占用的内存更少、启动更快,甚至其性能获得了数百倍的大幅度提升。IDC 的验证报告证实了这些好处。使用Quarkus JVM(虚拟机模式)和 Quarkus Native(原生模式),可以通过降低内存消耗和缩短启动时间来节约成本,从而提高 Kubernetes Pod 的部署密度并降低内存利用率。另外,Quarkus 的定位是面向云端开发,因此其必须匹配 Serverless、高密度 Kubernetes 容器和云原生应用等新应用开发模式下对资源和速度的需求。在生产环境中使用 Quarkus 来节约成本,这是用户一致认可的 Quarkus 的第一大价值。节省计算资源和开发工时,对用户尤其对公有云用户来讲就是实实在在省钱了,这颠覆了之前引入新技术需要额外投入更多资源的观点。
Quarkus 运维成本也较低。原生模式下运行的 Quarkus——使用 GraalVM创建的,不在传统 JVM 上运行的,独立、可优化的可执行文件——的成本可以节约 64%,而在 JVM 上运行时,成本可以节约 37%。这些成本的节约还来自容器利用率,并且只在需要资源的时候使用资源。
2.较强的技术优势
Quarkus 提供了显著的运行时效率(基于 Red Hat 测试),表现在:①快速启动(几十毫秒),允许自动扩展、减少容器和Kubernetes上的微服务,以及FaaS现场执行;②低内存利用率有助于优化需要多个容器的微服务架构部署中的容器密度;③较小的应用程序和容器镜像占用空间。
开发者在使用Quarkus 时,最初可以发现它提高了内存利用率,因为Java曾被认为启动时使用了过多内存,并且与轻量级应用不兼容。研究发现,Quarkus Native 减少了 90%的启动内存使用量,Quarkus JVM减少了20%。在虚拟机和原生模式下,启动时节省的内存会在相同的内存占用情况下带来更高的吞吐量,这意味着在相同的内存量下可以完成更多的工作。由于使用Quarkus Native的开发者可以获得多8倍的Pod,而使用Quarkus JVM的开发者可以获得多1.5倍的Pod,因此通过使用Quarkus,客户可以用相同数量的资源做更多的事情,并且可以使用相同数量的内存部署更多的应用。部署密度和降低内存利用率是Quarkus 为容器优化Java的几个关键方法。
另外,Quarkus 的启动非常快——Quarkus Native比一般的 Java框架快 12倍,比 Quarkus JVM快 2倍。这使得应用对负载变化的响应更迅速,在大规模操作(如 Serverless架构)时更可靠,从而增加了创新机会,并提供了相对于竞争对手的优势。
3.全面支持云原生和Serverless
Quarkus 是容器优先的,Quarkus 为应用在 HotSpot和 GraalVM运行上做了优化和裁剪。它支持快速启动和较低的 RSS内存,并且符合 Serverless架构要求,形成了面向应用容器化的解决方案。Quarkus 还是一个完整的生态系统。Quarkus 为在 Serverless架构、微服务、容器、Kubernetes、FaaS和云这个新世界中运行Java应用提供了有效的解决方案,能够为开发者提供在云、容器和 Kubernetes 环境中编写微服务和应用程序所需的一切能力和功能。Quarkus 不仅是一个运行时,而且是一个包含丰富扩展的生态系统,目前已经拥有上百个扩展组件,并且仍然在不断壮大。
4.提高云原生开发的生产力
Quarkus 针对云原生 Java应用程序的容器优先方法统一了微服务开发的命令式和响应式编程范例,使开发者可以自由组合这两种编程选项,并可以通过允许较少的项目和源文件来缩短维护时间和减少开发者需要管理的项目数量。这样大多数 Java 开发者都熟悉命令式编程模型,并希望在采用新平台时利用这种体验。Quarkus 提供了一组可扩展的基于标准的企业 Java库和框架,以及极高的开发者生产力,有望彻底改变我们的 Java 开发方式。与此同时,开发者正在迅速采用云原生、事件驱动、异步和反应模型来满足业务需求,以构建高度并发且响应迅速的应用程序。Quarkus 旨在将两种模型无缝地集中在同一平台上,从而在组织内实现强大的杠杆作用。
IDC报告证实了Quarkus 能比一般的Java开发框架更好地简化和改善开发者的日常工作。Quarkus 的开发乐趣包括统一配置,包含单个属性文件中的所有配置;零配置,眨眼间实时重新加载;精简了 80%的常见代码,仅保留 20%的灵活代码;全自动生成没有麻烦的原生可执行程序。该报告证实,与一般的 Java开发框架相比,Quarkus 提高了开发者的生产力。这一点很重要,因为开发者生产力的提高可以加快上市时间、交付更具创新性的解决方案,从而使组织保持很强的竞争力。
同时,Quarkus 学起来很容易,一方面它是创新技术,另一方面它对于 Java程序员来说具有较平滑的学习曲线,也拥有大量优秀的参考文档。Quarkus 可以加快应用程序的启动速度,让 Java 程序员用较少的时间排除故障,减少分析堆栈转储日志的情况,通过准确的错误信息直接定位错误,这意味着它解放了 Java 程序员的生产力。因此,企业也能快速拥有新技术能力,通过业务实现和交付的速度优势来确保自己在商业竞争中领先。
另外,社区提供了应用脚手架在线生成工具。这个工具可以帮助用户引导 Quarkus 应用程序并探索其可扩展的生态系统。它可以将 Quarkus 扩展组件作为项目依赖;把扩展配置、启动和框架或技术融入 Quarkus 应用程序;它还为 GraalVM 提供了正确的配置信息以负担应用程序进行本地编译的所有繁重工作。
Quarkus 减少了更新应用程序所需的操作步骤,因此可以更有效地进行更新。具体而言,IDC报告指出,使用 Quarkus 对源码进行更改和测试的开发者一般只需要执行两个步骤:更改代码和保存。Quarkus 的两步操作不仅提高了开发者的生产力,而且使代码编译更容易和高效。另外,Quarkus 可以实时编码,对应用所做的更新可以立即被看到,提高了开发者的操作效率,同时有助于快速排除故障,并能够跟踪、显示最有修改价值的错误。