• 云原生时代---带你了解火爆的Quarkus技术


    目录

    官网描述

    Quarkus - Supersonic Subatomic Java

    简介

    优势

    🌰

    参考资料


    官网描述

    Quarkus - Supersonic Subatomic Java

    看一下官网的概述 超音速亚原子-java 超音速就能够说明quarkus的速度相比当前流行的springboot框架是非常快的。quarkus是Red hat红帽公司开源的云原生框架。

    这是github上对quarkus的描述

    翻译过来就是

    Quarkus 是用于编写 Java 应用程序的云原生 (Linux) 容器优先框架。

    容器优先:最小的占用空间 Java 应用程序最适合在容器中运行。
    云原生:在 Kubernetes 等环境中采用 12 要素架构。
    统一命令式和响应式:将非阻塞式和命令式开发风格引入一种编程模型。
    基于标准:基于您喜欢和使用的标准和框架(RESTEasy 和 JAX-RS、Hibernate ORM 和 JPA、Netty、Eclipse Vert.x、Eclipse MicroProfile、Apache Camel...)。
    微服务优先:为 Java 应用程序带来闪电般的快速启动时间和代码周转。
    开发者喜悦:以开发为中心的体验,毫不妥协,让您的惊人应用立即变为现实。

    为 Java 应用程序带来闪电般的快速启动时间和代码周转应该是对quarkus的速度描写。

    简介

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

    Quarkus 可与常用 Java 标准、框架和库协同工作,例如 Eclipse MicroProfile、Spring(作为 2020 年红帽全球峰会追踪的一个环节一起演示)、Apache Kafka、RESTEasy (JAX-RS)、Hibernate ORM (JPA)、Spring、Infinispan、Camel 等。

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

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

    优势

    Red Hat 发布了 Quarkus,这是一个为 GraalVM 和 OpenJDK HotSpot 量身定制的 Kubernetes 原生 Java 框架。Quarkus 的目标是使 Java 成为 Kubernetes 和无服务器环境中的领先平台,为开发人员提供统一的反应式和命令式编程模型

    RedHat 表示,Quarkus 提供了可观的运行时效率,比如快速启动,支持在容器和 Kubernetes 上自动伸缩微服务,而低内存利用率有助于优化微服务体系结构部署中的容器密度。同时,它还提供了更小的应用程序和容器镜像空间占用。

    由上图可见无论在内存占有还是在响应速度上 quarkus+ GraalVM都用明显的优势,这么大的优势还是很有吸引力的。

    按照设计,Quarkus 完美地引入了命令式和反应式模型,旨在让熟悉命令式模型但不想学习新范式的 Java 开发人员以及采用云原生/反应式模型方法的开发人员快速采用。

    🌰

    下面举几个例子:

    1)打包成native方式

    1. $ mvn package -Pnative
    2. # Or
    3. $ ./gradlew buildNative

    2)命令式 

      

    1. @Inject
    2. SayService say;
    3. @GET
    4. @Produces(MediaType.TEXT_PLAIN)
    5. public String hello() {
    6. return say.hello();
    7. }

    3)反应式

    1. @Inject @Stream("kafka")
    2. Publisher reactiveSay;
    3. @GET
    4. @Produces(MediaType.SERVER_SENT_EVENTS)
    5. public Publisher stream() {
    6. return reactiveSay;
    7. }

     也可以使用 Quarkus 实现在无服务器环境中使用的函数,比如,下面是一个 AWS Lambda 的例子

    1. public class HelloLambda implements RequestHandler {
    2. @Inject
    3. HelloGreeter greeter;
    4. @Override
    5. public String handleRequest(HelloRequest request, Context context) {
    6. return greeter.greet(request.firstName, request.lastName);
    7. }
    8. }

    Quarkus 被设计成少配置或无配置,其工作方式很直观。为此,开发人员可以用以下工具构建一个新项目:

    mvn io.quarkus:quarkus-maven-plugin:0.12.0:create \
        -DprojectGroupId=my-groupId \
        -DprojectArtifactId=my-artifactId \
        -DprojectVersion=my-version \
        -DclassName="org.my.group.MyResource"
    

     

    Quarkus 还提供了“在线编码(Live Coding)”功能,使开发人员避免了编写代码→编译→部署→刷新浏览器→重复的枯燥过程。运行 mvn compile quarkus:dev,Quarkus 将在开发模式下启动。当它接收到 HTTP 请求时,它将保存该请求并检查是否更改了任何应用程序源文件。如果有,它将透明地编译更改的文件,重新部署应用程序,然后将 HTTP 请求发送给重新部署的应用程序。

    Quarkus 似乎至少是云时代一个有趣的替代方案。在这个时代,容器、Kubernetes、微服务、函数即服务(FaaS)和云原生应用程序正在提供更高级别的生产力和效率。

    参考资料

    要了解关于 Quarkus 的更多细节,请访问 quarkus.io。想要开始使用 Quarkus 的开发人员可以查看入门指南或其他可用的指南。

    查看英文原文:Quarkus, a Kubernetes Native Java Framework

    如果觉得本文对你有帮助,欢迎点赞,欢迎关注我,如果有补充欢迎评论交流,我将努力创作更多更好的文章。

  • 相关阅读:
    (附源码)aap火车抢票 毕业设计 081827
    Latex语法学习09:如何编写一本书
    【Spring Cloud】Gateway服务网关
    ffplay源码分析—数据结构
    文件上传漏洞详解
    汽车行驶性能的主观评价方法(1)-底盘校准方法
    使用Github.io创建自己的博客
    URDF+Gazebo+Rviz仿真
    文章列表的显示 以及创建文章 还有文章详情的基本
    清除el-form表单验证
  • 原文地址:https://blog.csdn.net/qq_29235677/article/details/125632322