数据采集、数据融合、平台能力构建、AI算法支持等方面最新技术实践分享>> 了解详情
写点什么

Quarkus:一个 Kubernetes 原生 Java 框架

  • 2019-03-29
  • 本文字数:1232 字

    阅读完需:约 4 分钟

Quarkus:一个Kubernetes原生Java框架

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


Quarkus 利用 Java 开发人员使用的一系列库,如 Eclipse MicroProfile 和 Vert.x,带来了一个全栈框架。Quarkus 依赖注入基于 CDI,允许开发人员使用 JPA/Hibernate、JAX-RS/RESTEasy 等。此外,Quarkus 还包含一个扩展框架,第三方框架作者可以利用该框架对其进行扩展;这个扩展框架同时还编译成了一个 GraalVM 原生二进制文件。


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



(图片来自: https://quarkus.io/


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


命令式风格:


@InjectSayService say;
@GET@Produces(MediaType.TEXT_PLAIN)public String hello() { return say.hello();}
复制代码


反应式风格:


@Inject @Stream("kafka")Publisher reactiveSay;
@GET@Produces(MediaType.SERVER_SENT_EVENTS)public Publisher stream() { return reactiveSay;}
复制代码


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


public class HelloLambda implements RequestHandler {
@Inject HelloGreeter greeter;
@Override public String handleRequest(HelloRequest request, Context context) { return greeter.greet(request.firstName, request.lastName); }}
复制代码


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


2019-03-29 06:4020836
用户头像

发布了 537 篇内容, 共 245.5 次阅读, 收获喜欢 1280 次。

关注

评论

发布
暂无评论
发现更多内容

1分钟解密:博睿大数据核心引擎Bonree Zeus六大优势

博睿数据

javascript开发后端程序的神器nodejs

程序那些事

Java 后端 nodejs koa 程序那些事

腾讯大牛整合Java+spring5系统学习架构,神乎其技

小Q

Java 学习 编程 面试 spring 5

AOT慈善币系统软件开发|AOT慈善币APP开发

系统开发 现成系统

英特尔神经拟态生态系统发展和研究的最新进展

新闻科技资讯

面试无忧:源码+实践,讲到MySQL调优的底层算法实现

996小迁

Java 架构 面试

JVM调优不知道怎么回答,阿里总结四大模块,学不会就背过来

996小迁

Java 架构 面试 调优

《穿越数据的迷宫》笔记:第 3 章 DAMA的数据管理原则

方志

数据治理

极客大学 - 架构师训练营 第十一周总结

9527

重点人员管控系统开发,可视化数据分析搭建

t13823115967

重点人员管控系统开发 智慧公安 可视化数据分析搭建

英特尔推动集成光电的发展,用于数据中心

新闻科技资讯

加码线下,新荣耀“破题”场景经济

脑极体

智慧公安扫码一键定位报警系统搭建

t13823115967

智慧公安 智慧公安扫码 一键定位报警系统搭建

架构师训练营第 1 期 -week11

习习

《技术男征服美女HR》—Fiber、Coroutine和多线程那些事

太白上仙

Java 程序员 面试 后端 多线程

国产电子表格Luckysheet后台也开源了!支持在线协作,一键docker私有部署

奇异石榴果

Java Excel SpreadJS 表格控件

甲方日常 62

句子

工作 随笔杂谈 日常

谁能阻止世纪互联星光?2020年第11期北京机房网络质量评测数据排行榜发布

博睿数据

英特尔发布第二代Horse Ridge低温量子控制芯片

新闻科技资讯

IntelliJ IDEA 2020.3正式发布,年度最后一个版本很讲武德

YourBatman

IDEA 新特性 2020.3

关于binlog,这个参数能不能用?

Simon

MySQL Binlog

Spring 源码学习 05:BeanDefinition 概念及其实现

程序员小航

spring 源码 源码阅读 BeanDefinition

架构设计之路-1

Dnnn

架构师 代码规范

跨架构编程不再难,英特尔机器编程工具迎来重磅更新

新闻科技资讯

微软最强 Python 自动化工具开源了!不用写一行代码!

星安果

Python 微软 自动化 自动化测试 playwright

【技术分享】浅谈RTC及Agora RTC SDK集成介绍

Hanson

给你一个亿的keys,Redis如何统计?

不才陈某

redis

我理解的信息化、数字化、数智化

boshi

数字化 数据智能 信息化

Linux平台中调试C/C++内存泄漏方法 (腾讯和MTK面试的时候问到的)

linux大本营

c++ Linux 后台开发 架构师

Spock单元测试框架实战指南一Spock是什么?它和JUnit有什么区别?

Java老k

Java 单元测试 JUnit Mock spock

架构师训练营第 11 周课后练习

叶纪想

极客大学架构师训练营

Quarkus:一个Kubernetes原生Java框架_语言 & 开发_Diogo Carleto_InfoQ精选文章