[Quarkus]云原生时代的高性能Web Framework简单入门

什么是 Quarkus?

image.png

简单介绍

传统的 Java 技术堆栈是在一个没有云、容器和 Kubernetes 的世界中存在的,并且是为启动时间长、内存需求大的单体应用程序而设计的。Java 框架需要不断发展以满足这个新世界的需求。

Quarkus 的产生是为了使 Java 开发人员能够为现代的云原生世界创建应用程序。Quarkus 是为 GraalVM 和HotSpot 量身定制的 kubernetes 原生 Java 框架,由最好的 Java 库和标准精心打造。其目标是使 Java 成为 Kubernetes 和无服务器环境中的领先平台,同时为开发人员提供一个框架来处理更广泛的分布式应用程序架构。

绝对开源

Quarkus 是一个基于 Apache 许可证 2.0 版本的开源项目。首先,它是一个开放的社区,在这里,贡献、想法和讨论都是公开的贡献者是极受欢迎的。

与众不同

  1. Developer Joy

开发人员对几乎每个组织的成功都至关重要,他们需要快速有效地构建云原生应用程序的工具。Quarkus 通过组合工具、库、扩展等提供无摩擦的开发体验。Quarkus 使开发人员在开发模式下更高效地使用工具来改进内部循环开发周期。

  1. Kubernetes-native

Quarkus 是为 Kubernetes 从头开始构建的,这使得部署应用程序变得容易,而不必了解平台的所有复杂性。Quarkus 允许开发人员自动生成 Kubernetes 资源,包括构建和部署容器映像,而无需手动创建 YAML 文件。

  1. Best of Breed Libraries and Standards

Quarkus 通过利用您喜欢和使用的数百个最佳库的不断增长的列表,提供了一个内聚的、有趣的全栈框架。全部都是在标准主干上连接的。

  1. Imperative and reactive code

Quarkus 的设计目的是在开发应用程序时无缝地结合熟悉的命令式风格代码和非阻塞、响应式风格。这对于习惯使用命令式模型而不想改变的 Java 开发人员和使用云原生/响应式方法的开发人员都很有帮助。Quarkus 开发模式可以适应你开发的任何应用。

快速开始

现在我们来搭建一个 Quarkus 应用程序。首先需要你安装 IDEA,新版的 IDEA 都会内置 Quarkus 脚手架,如果使用官网的命令行初始化的话有些麻烦。还有最重要的一点,使用 Quarkus 之前需要你安装 JDK 11 才行!我们这里用的是 Quarkus 2.16.7

打开 IDEA,选择 NEW Project,再选择 Quarkus:

image.png

选择最简单的两个依赖即可:

image.png

点击 create 完成创建,等待下载依赖和配置。

初始化的结构如下:

image.png

application.properties 文件和 SpringBoot 的配置文件类似,也可以改成 yml 格式文件 ,里面可以配置应用程序的信息。初始的 Quarkus 应用程序结构内置了一个欢迎页面。

整个工程没有引导类和主方法,这点和 SpringBoot 有很大区别,它是以另一种方式启动的,通过 Maven 插件启动。

image.png

找到 IDEA 侧边栏的 Maven 插件,找到 quarkus:dev,双击然后启动,然后 Quarkus 开始编译启动,第一次启动时间较长。控制台打印如下,默认是 8080 端口访问应用程序:

image.png

欢迎页面如下:

image.png

踩坑

在启动 Quarkus 的时候,可能会出现错误不支持发行版 17 的情况,你需要修改 IDEA 的默认 JDK 的版本,这边用的是 11,所有都要修改为 11。还有一处也需要修改,那就是 pom.xml 文件 maven.compiler.release 这一项,默认是 17 需要改为 11:

image.png

热更新特性

因为 Quarkus 底层使用 GraalVM 的 AOT(Ahead-of-Time Compilation) 技术,所以它天生可以支持热更新,而且比 JRebel 这个热部署插件快得多。测试一下看看:访问 /hello 接口如下

image.png

现在修改一下返回的内容为 Hello World 看看,然后再次访问,可以看到热更新只花了 1.244s,比传统的 JRebel 要快很多(又可以省点银子了 doge),只要刷新浏览就可以触发热更新:

image.png

Quarkus 详细内容请参考官方文档:https://quarkus.io/guides/

猜你喜欢

转载自blog.csdn.net/weixin_45254062/article/details/131105479