01-Quarkus 入门

一 Quarkus 是什么?

Quarkus 是一个为 Java 虚拟机(JVM)和原生编译而设计的全堆栈 Kubernetes 原生 Java 框架,用于专门针对容器优化 Java,并使其成为无服务器、云和 Kubernetes 环境的高效平台。

Quarkus 可与常用 Java 标准、框架和库协同工作,例如 Eclipse MicroProfile、Apache Kafka、RESTEasy(JAX-RS)、Hibernate ORM(JPA)、Spring、Infinispan、Camel 等。Quarkus本身提供了对各种常用组件的支持,同时也部分提供了响应式版本来完善它的响应式生态。

Quarkus 的依赖注入解决方案基于 CDI(上下文和依赖注入),且包含一个扩展框架来扩展功能并将其配置、引导并集成到您的应用中。添加扩展就像添加依赖项一样容易;这和Spring框架非常类似。

此外也是引人注目的一个特点,它还向 GraalVM(一种通用虚拟机,用于运行以多种语言(包括 Java 和 JavaScript)编写的应用)提供正确信息,以便对应用进行原生编译。

下面是官网对Quarkus的介绍:

1 CONTAINER FIRST
Quarkus tailors your application for GraalVM and HotSpot. Amazingly fast boot time, incredibly low RSS memory (not just heap size!) offering near instant scale up and high density memory utilization in container orchestration platforms like Kubernetes. We use a technique we call compile time boot.

意思是说:Quarkus本身专为 GraalVM和HotSpot定制。在容器如K8s中有着惊人的启动速度和内存延时。下面是官网给出的两张图,展示了Quarkus的在容器中的优越表现:
Quarkus应用的启动速度
运行时延时对别
第二章图大概对比了这几点

  • 使用Quarkus+Graalvm构建的软件包明显小于普通的打包方式
  • Quarukus本地镜像(也即GraalVM)响应速度明显比JVM模式或者普通应用快

2 UNIFIES IMPERATIVE AND REACTIVE

开发时同时支持我们熟悉的开发方式和响应式的开发方式
开发方式
3 DEVELOPER JOY
就是说Quarkus是一个完整的开发平台,程序员可以尽情享受。。。

官网地址:https://quarkus.io/
官方教程:https://quarkus.io/guides/ 建议大家多看这个,官网写的还是不错的。

总结: Quarkus 是一套完整的开发平台,类似于Spring平台。Quarkus更好的支持响应式编程和云原生应用也拥有更高的性能。当然Spring也已经推出了自家的响应式Web框架WebFlux,大家也可以去学习一下。
当然对于大部分企业来说可能不需要这么极致的性能,Java领域主流的Spring完全足够。最近换了新公司,公司正面临性能瓶颈,技术老大在技术选型方面也更加激进,Quarkus的生态也已经可以满足生产需要。故最近研究下。

二 HelloWold

1 环境准备

开发环境准备:

  • Java 11
  • GraalVM
  • Maven-3.6.2

JDK安装不在赘述,这里说一下Windows GraalVM安装,其它平台的安装配置过程官网说的很清楚:https://www.graalvm.org/docs/getting-started/

下载时注意JDK和GraalVM的版本对应:
安装包

压缩包解压后放到JDK同级目录即可,不是强制要求:
压缩包位置
最重要的时配置环境变量:

  • JAVA_HOME: 配置GraalVM目录地址
    JAVA_HOME
  • PATH 中添加GraalVM目录地址
    PATH
    验证 使用 java --version
    验证结果
    其他平台的验证结果基本一致,在放一张Mac下的验证结果:
    MAC

2 创建项目

可以基于Maven命令创建,也可以通过官方提供的插件来快速创建。

  1. 插件安装创建:以Idea为例

插件
最近发现Idea中多了一些Quarkus的插件
在这里插入图片描述
装上之后,一般会自动检测quarkus项目,也可以自己配置。这个插件使得quarkus和正常的IDEA的启动和debug一样了。
在这里插入图片描述

创建项目,这里类似Spring Initalier
创建项目-01
2. Maven 创建

```xml
mvn io.quarkus:quarkus-maven-plugin:1.9.2.Final:create \
    -DprojectGroupId=org.acme \
    -DprojectArtifactId=getting-started \
    -DclassName="org.acme.getting.started.GreetingResource" \
    -Dpath="/hello"
cd getting-started
```

maven 使用阿里云镜像在拉取依赖时可能会存在某些依赖下载不了的问题,可以使用默认仓库,或者选用其他仓库使用。等待maven构建完成即可。

  1. 构建结果
    项目结构

3 启动项目

  1. 命令启动
    mvn compilie quarkus:dev
  2. 配置Idea启动
    配置启动
  3. 结果
    启动成功
  4. 由于项目启动时基于maven内置服务器,所以Debug有些麻烦,这里单独说一下,仔细看一下启动日志会发现在banner图的上面有一行日志写了监听端口5005,这其实就是默认开启了远程debug端口。我们在Idea中配置一个remote操作。一般情况下默认即可。
    Debug

4 测试

  1. 先看一下代码咋写的
    @Path("/hello")
    public class GreetingResource {
    
        @GET
        @Produces(MediaType.TEXT_PLAIN)
        public String hello() {
            return "hello";
        }
    }
    

非常简单的一段代码,这个其实就是Quarkus的接口,Resource代表了一个资源,类似Spring的Controller功能。我们此时一下是否得到hello。

  1. 测试
    测试结果
    到此 Quarkus入门基本结束。

总结

  • Quarkus 是一个新兴的Java开发平台,特点时响应式、云原生、高性能、低延时等等
  • Quarkus 已经逐步完善,可以应用于生产。
  • 后续会依据官网指导文档,完成后续文章。
  • 仅作为自己学习记录,如有错误欢迎指出。
  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Quarkus提供了多种打包方式,可以根据项目需求选择适合的方式进行打包。其中,使用-Dquarkus.package.type=uber-jar的方式可以将项目打包成uber-jar。\[1\]这种方式会将所有依赖项与jar文件一起打包。另外,可以在application.properties文件中设置quarkus.package.uber-jar=true来启用uber-jar打包方式。\[2\]除了uber-jar,Quarkus还支持快速jar打包和旧标准jar打包。快速jar打包是Quarkus的默认打包方式,而旧标准jar打包可以通过设置quarkus.package.type属性为legacy-jar来实现。\[2\]总结来说,Quarkus提供了三种打包方式:uber-jar、快速jar和旧标准jar,可以根据具体需求选择适合的方式进行打包。\[3\] #### 引用[.reference_title] - *1* *3* [quarkus 搭建与基础开发环境配置总结](https://blog.csdn.net/liuyij3430448/article/details/129366027)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [2021-11-14](https://blog.csdn.net/qq_43645280/article/details/121315200)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值