编程语言和框架不断发展,以帮助希望以更快的速度、更好的性能和更低的占用空间开发和部署应用程序的开发人员。工程师推动自己开发“下一件大事”,以满足开发人员对更快部署的需求。

Quarkus是 Java 世界的最新成员,被认为是 Kubernetes 原生 Java 的后起之秀。它于 2019 年出现,旨在优化 Java 和云原生环境的常用开源框架。借助 Quarkus 框架,您可以轻松地使用 Java 实现无服务器。这篇文章解释了为什么这个开源框架最近引起了很多关注,以及如何创建你的第一个 Quarkus 应用程序。

探索开源云

免费在线课程:使用微服务开发云原生应用

电子书:使用托管云服务实现 IT 现代化

试用 60 天:Red Hat OpenShift Dedicated

免费在线课程:容器、Kubernetes 和 Red Hat OpenShift

什么是Kubernetes?

理解边缘计算

IT 架构师最新文章

什么是 Quarkus?

Quarkus 重新构想了 Java 堆栈,以提供创建高效、高速应用程序所需的性能特征和开发人员体验。它是用于编写 Java 应用程序的容器优先和云原生框架。

您可以使用现有技能通过 Quarkus 以新的方式进行编码。它还有助于减轻迁移到以 Kubernetes 为中心的环境的技术负担。像 Kubernetes 这样的高密度部署平台需要具有更快启动时间和更低内存使用率的应用程序。 Java 仍然是一种流行的软件开发语言,但它以牺牲 RAM 和 CPU 为代价关注生产力。

在虚拟化、无服务器和云领域,许多开发人员发现 Java 并不是开发云原生应用程序的最佳选择。但是,Quarkus(也称为“超音速和亚原子 Java”)的引入有助于解决这些问题。

Quarkus有什么好处?

Quarkus 的好处

图片来源:

(Saumya Singh,CC BY-SA 4.0)

Quarkus 提高了启动时间、执行成本和生产力。其主要目标是减少应用程序的启动时间和内存占用,同时提供“开发人员的乐趣”。它通过本机编译和热重载功能实现了这些目标。

运行时优势

Quarkus 如何使用内存

图片来源:

(Saumya Singh,CC BY-SA 4.0)

  • 降低内存占用

  • 减少 RSS 内存,使用传统云原生堆栈所需内存的 10%

  • 提供非常快速的启动

  • 提供一个容器优先的框架,因为它被设计为在容器+Kubernetes环境中运行。

  • 专注于让事情在 Kubernetes 中运行

开发效益

开发者喜爱 Quarkus

图片来源:

(Saumya Singh,CC BY-SA 4.0)

  • 在开发和编码期间提供非常快速的实时重新加载

  • 使用“同类最佳”库和标准

  • 带来规格和大力支持

  • 统一并支持命令式和响应式(非阻塞)样式

10分钟创建一个Quarkus应用

现在您已经知道为什么要尝试 Quarkus,我将向您展示如何使用它。

首先,确保您具备创建 Quarkus 应用程序的先决条件

  • 像 Eclipse、IntelliJ IDEA、VS Code 或 Vim 这样的 IDE

  • JDK 8 或 11+ 已正确配置 JAVA_HOME

  • Apache Maven 3.6.2+

您可以使用 Maven 命令或使用 code.quarkus.io 创建项目。

使用 Maven 命令:

创建新 Quarkus 项目的最简单方法之一是打开终端并运行以下命令,如入门指南中所述。

Linux 和 macOS 用户:

mvn io.quarkus:quarkus-maven-plugin:1.13.2.Final:create\

-DprojectGroupId\u003dorg.acme \

-DprojectArtifactId\u003dgetting-started\

-DclassName\u003d"org.acme.getting.started.GreetingResource" \

-Dpath\u003d"/你好"

cd 开始-开始

Windows 用户:

  • 如果您使用的是cmd,请不要使用反斜杠(\):

mvn io.quarkus:quarkus-maven-plugin:1.13.2.Final:create -DprojectGroupId=org.acme -DprojectArtifactId=getting-started -DclassName="org.acme.getting.started.GreetingResource" -Dpath="/hello"

  • 如果您使用的是 PowerShell,请将-D参数用双引号括起来:

mvn io.quarkus:quarkus-maven-plugin:1.13.2.Final:create "-DprojectGroupId=org.acme" "-DprojectArtifactId=getting-started" "-DclassName=org.acme.getting.started.GreetingResource" "-Dpath=/hello"

使用code.quarkus.io

首先,去code.quarkus.io快速创建Quarkus项目。此页面将帮助您引导您的 Quarkus 应用程序并发现其扩展生态系统。

接下来,选择您需要的任何扩展名。将 Quarkus 扩展视为项目依赖项。扩展通过配置、启动框架或技术并将其集成到您的 Quarkus 应用程序中来提供帮助。他们还完成了为GraalVMJava 运行时提供正确信息的所有繁重工作,以便您的应用程序进行本机编译。

Quarkus 提供了一个不断增长的列表,其中包含 50 多个开发人员喜爱和使用的同类最佳库。

预期结果

无论您以哪种方式创建 Quarkus 项目,它都会在./getting-started中生成以下内容:

  • Maven结构

  • /hello上暴露的org.acme.getting.started.GreetingResource资源

  • 关联的单元测试

  • 启动应用后在http://localhost:8080上可访问的登陆页面

  • 示例 Dockerfile 文件

  • 应用程序配置文件

项目详情

在项目创建期间,它会生成一个src/main/java/org/acme/getting/started/GreetingResource.java文件,其内容如下:

包 org.acme.getting.started;

导入 javax.ws.rs.GET;

导入 javax.ws.rs.Path;

导入 javax.ws.rs.Produces;

导入 javax.ws.rs.core.MediaType;

@Path("/你好")

公共类 GreetingResource {

@得到

@Produces(MediaType.TEXT_PLAIN)

公共字符串hello() {

返回“你好”;

}

}

这是一个非常简单的 REST 端点,它向/hello端点上的请求返回“Hello”。

运行应用程序

现在一切都准备好运行您的应用程序了。

为此,请输入./mvnw compile quarkus:dev:

运行 Quarkus 应用程序的输出

图片来源:

(Saumya Singh,CC BY-SA 4.0)

启动后,您可以请求提供的端点:

Quarkus 端点

图片来源:

(Saumya Singh,CC BY-SA 4.0)

使用 Ctrl+C 停止应用程序,或保持其运行并享受超快的热重载。

使用开发模式

要在开发模式下运行 Quarkus,请输入quarkus:dev

该命令启用热部署。这意味着每当您更改 Java 或资源文件并刷新浏览器时,您将自动看到所有更改。这也适用于资源文件,例如配置属性文件。刷新浏览器会触发对工作区的扫描;如果发现任何更改,它会重新编译 Java 文件,重新部署应用程序,并通过重新部署的应用程序为您的请求提供服务。如果有任何编译问题,错误 404 页面将立即为您提供反馈并帮助解决问题。

打包并运行应用程序

要打包应用程序,请使用./mvnw package。它在/target中生成几个输出:

  • 一个是quarkus-app目录,其中包含quarkus-run.jar文件作为可执行 .jar。确保它不是“über-jar”,因为依赖项被复制到quarkus-app/lib/的子目录中。

  • 另一个是getting-started-1.0.0-SNAPSHOT.jar,它只包含你项目的类和资源。它是 Maven 构建生成的常规工件,而不是可运行的 .jar。

使用以下命令运行您的应用程序:

java -jar target/quarkus-app/quarkus-run.jar

是的,就是这么简单、轻松、有趣。

了解更多

Quarkus 提供了几个官方资源,您可以在其中了解更多信息:

  • YouTube 频道

  • 博客

  • 推特

  • 网站

  • 入门指南

  • 其他文档

点击阅读全文
Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐