在 VS Code 中使用 Quarkus 编写 Java

在本教程中,我将引导您了解如何使用 Quarkus 自动重建、打包和部署云原生应用程序。
91 位读者喜欢这篇文章。

在我之前关于云原生 Java 应用程序的系列文章中,我分享了 云原生软件的 6 个要求云原生 Java 必须提供的 4 件事。但现在您可能希望在本地机器上实现这些高级 Java 应用程序,而无需陡峭的学习曲线。在本文中,我将介绍如何使用开源技术 QuarkusVisual Studio Code (VS Code) 来加速传统云原生 Java 堆栈以及无服务器、反应式应用程序的开发,并采用更简单、更熟悉的方法。

Quarkus 是一个 Kubernetes 原生 Java 堆栈,专为 GraalVM 和 OpenJDK HotSpot 量身定制。它由一流的 Java 库和标准打造,具有实时编码、统一配置、超快启动、小内存占用以及统一的命令式和反应式开发。VS Code 是一个用于编辑代码的开源集成开发环境 (IDE)。

生成 Quarkus 项目

首先导航到 Quarkus 的 开始编码 页面,以生成包含 RESTful 端点的 Quarkus 项目。将所有变量(即 Group、Artifact、Build Tool、Extensions)保留为默认设置,然后单击页面右上角的生成您的应用程序。请注意,RESTEasy JAX-RS 扩展已预先选择为默认值。

 

Quarkus Generate application button

ZIP 文件将自动下载到您的本地机器上。使用以下命令解压文件

$ unzip code-with-quarkus.zip
Archive: code-with-quarkus.zip
    creating: code-with-quarkus/
   inflating: code-with-quarkus/pom.xml
   ...

安装 VS Code

以您喜欢的方式下载并安装 VS Code,无论是从网站下载 还是通过您的软件包管理器(dnf、apt、brew 等)。完成后,使用 VS Code 的命令行工具打开解压后的 Quarkus 项目

$ cd code-with-quarkus/
$ code .

您将看到 Apache Maven 项目结构,其中包含

  • /hello 上公开的 ExampleResource
  • 关联的 JUnit 测试
  • 可通过 https://#:8080 访问的着陆页
  • 用于 本地编译 和 JVM HotSpot 的 Dockerfile
  • 统一的应用程序配置文件

通过 VS Code 的扩展功能将 Quarkus 工具添加到您的 IDE。

 

Add Quarkus tools to VS Code IDE

开始编码

使用 Quarkus 开发模式运行应用程序。要运行应用程序,您需要

  • 安装 JDK 1.8+ 并正确配置 JAVA_HOME
  • Apache Maven 3.6.3+

移动到 code-with-quarkus 目录,然后在 VS Code 的终端中键入 mvn compile quarkus:dev

 

Run application

您将看到 Java 应用程序运行良好,具有

  • 大约一秒钟启动
  • 实时编码已激活
  • 启用 CDI 和 RESTEASY 功能

当您通过 Web 浏览器访问端点时,您将看到返回代码 hello

 

"Hello" return

现在,您已准备好更改代码!返回 VS Code,然后打开 src/main/java/org/acme 中的 ExampleResource.java 文件。将返回代码替换为“Welcome, Cloud-Native Java with Quarkus!”。不要忘记保存文件。

 

Editing the return

返回 Web 浏览器并重新加载页面。

 

New return

这就像魔法一样! 在幕后,Quarkus 为您自动重建、打包和部署了应用程序,并且只花了半秒钟。这是提高开发效率的基本云原生 Java 运行时功能之一。

 

Quarkus output

继续在 Quarkus 中运行您的云原生 Java 应用程序。

通过 Quakrus Tool 集成数据事务

要添加内存数据库 (H2) 事务功能,请按 F1,然后单击 Quarkus: Add extensions to the current project

 

Adding extensions in Quarkus

在搜索栏中输入 h2,然后在结果中双击 JDBC Driver - H2 Data

 

JDBC Driver - H2 Data extension

选择以下三个扩展,这将简化您的持久性代码并返回 JSON 格式的数据

  • Hibernate ORM with Panache Data
  • JDBC Driver - H2
  • RESTEasy JSON-B Web

Enter 添加这些依赖项。

 

Add Quarkus extensions

您应该在新的 VS Code 终端中看到以下内容

 

VS Code adding extensions

您还应该在 POM.xml 中找到以下拉取的依赖项

 

dependencies in POM.xml

创建 Inventory 实体

项目就位后,您可以开始定义业务逻辑。

第一步是定义 Inventory 对象的模型(实体)。由于 Quarkus 使用 Hibernate ORM Panache,因此在 src.main.java.org.acme 目录中创建一个 Inventory.java 文件,并将以下代码粘贴到其中

package org.acme;

import javax.persistence.Cacheable;
import javax.persistence.Entity;

import io.quarkus.hibernate.orm.panache.PanacheEntity;

@Entity
@Cacheable
public class Inventory extends PanacheEntity {
    
    public String itemId;
    public String location;
    public int quantity;
    public String link

    public Inventory() {

    }
    
}

定义 Inventory 的 RESTful 端点

接下来,镜像服务的抽象,以便将来您可以将 Inventory 服务注入到各个位置(如 RESTful 资源端点)。在 src.main.java.org.acme 目录中创建一个 InventoryResource.java 文件,并将以下代码添加到其中

package org.acme;

import java.util.List;
import javax.enterprise.context.ApplicationScoped;
import javax.ws.rs.Consumes;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;

@Path("/services/inventory")
@ApplicationScoped
@Produces("application/json")
@Consumes("application/json")
public class InventoryResource {

    @GET
    https://#:8080/services/inventory
    public List<Inventory> getAll() {
        return Inventory.listAll();
    }
}

不要忘记保存这些文件。返回您的 Web 浏览器并访问新端点 https://#:8080/services/inventory。您将看到

 

Inventory endpoint

总结

如果您在实施过程中遇到问题或错误,您可以在我的 GitHub 存储库中的代码中找到并重用。

如果您想了解更多信息,Quarkus 提供了一些 实用且有用的指南,展示了如何使用 Quarkus 扩展以及事件驱动编程、无服务器开发和 Kubernetes 部署来开发高级云原生 Java 应用程序。

接下来阅读什么
标签
danieloh
技术营销, 开发者倡导, CNCF 大使, 公开演讲者, 出版作者, Quarkus, 红帽运行时

评论已关闭。

© . All rights reserved.