百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程字典 > 正文

云原生的基于容器的开发:Quarkus改进了Java

toyiye 2024-08-24 00:18 4 浏览 0 评论

Quarkus是一个Java框架,被认为是真正的游戏规则改变者。 在IBM Developer Advocate Niklas Heidloff的帮助下满足它。

目录

· 什么是Quarkus?

· 专为开发人员设计

· 容器优先的环境

· 命令式和反应式代码

· 未来是Java驱动的!

· 探索Quarkus关键优势的资源

· IBM Cloud Kubernetes服务上的微服务

· 反应性应用的挑战

Java像其他几种编码语言一样,对编程的历史产生了重大影响,但是随着时间的流逝,Java在资源和灵活性方面都提供了不同的性能,其他框架也一直在旁观。

相比之下,基于Java的解决方案是众所周知的,并且仍然可以为基于云的应用程序(例如反应式编程,无服务器计算和基于容器的应用程序)提供一条很好的途径。

IBM Developer Advocate的Niklas Heidloff在该领域撰写了许多技术博客文章,因此,在深入研究中,我们要求他做出贡献。 Niklas与我们一样对编码和寻找新的解决方案充满热情。

"我发现这项工作非常出色,因为我们每天都在学习新技术。 我们与其他开发人员交谈以提高我们的技能。 这是世界上最好的工作!"

今天,成为一名程序员非常令人兴奋,他详细说明:"比过去更容易上手,因为您仅依靠云或其他自助服务解决方案,只需单击两次,您就可以解放代码部分。" 然后,他补充了编码生态系统的不断更新:"编程技术的新趋势是MVM,微型虚拟机",Niklas解释说,"容器方法是该领域提供的解决方案之一,关键是 将应用程序拆分为模块"。

他宣称,2020年对于Java而言是非常有趣的一年,他宣称:"该语言被宣布过早死亡!"他笑着说:" Java仍然存在,并且出于多种原因而发挥作用。 举一个例子,发烧友的数量太多了,放弃就太可惜了。"

确实,最近有许多新计划使Java焕发了生命。 尤其是Quarkus,Niklas Heidloff预测:" Quarkus效果将在未来几年内出现:它既简单又有趣,并且可以为Java提供所需的功能"。

如此说来,Quarkus似乎在构建云原生应用程序方面似乎是Java和Cloud的两全其美。 但是要理解它,有必要更多地了解它及其上下文。

什么是Quarkus?

Quarkus是一个全栈的Kubernetes本地Java框架,用于Java虚拟机和本机编译。 它专门针对容器优化了Java,并使之成为无服务器,云和Kubernetes的有效平台。

它旨在与流行的Java标准,框架和库一起使用,例如Eclipse MicroProfile,Apache Kafka,RESTEasy(JAX-RS),Hibernate ORM(JPA),Spring,Infinispan,Camel等。

Quarkus基于CDI框架。 它的依赖项注入解决方案着重于上下文和依赖项注入,并包括配置,引导框架并将其集成到您的应用程序所需的扩展框架。 简而言之,Quarkus还提供了添加扩展的工具。

另外,Quarkus还为GraalVM提供了正确的信息,以用于应用程序的本机编译。 万一您不了解它,GraalVM是一个多语言虚拟机,可使您的Java / Javascript能够与多种语言进行对话,从而为您的应用提供快速启动和较小的内存占用,通常在基于Java的环境中受欢迎 应用程序。

专为开发人员设计

Quarkus是基于容器优先的理念构建的,着眼于开发人员的乐趣。 它的设计旨在从一开始就易于使用,因为它的功能允许开发人员进行几乎没有配置问题的编码。

选择的Java框架可以在JVM模式下运行,或者在本机模式下编译并运行。 Quarkus还支持实时编码,统一的命令式和反应式编程,统一的配置以及易于生成的本机可执行文件。 因此,开发人员可以通过实时编码实时检查代码更改的效果。

容器优先的环境

快速启动和低内存消耗是独立于执行环境的重要特征。 无论您的应用程序是在公共云上运行还是在内部托管的Kubernetes集群中运行,您都需要在降低成本的同时提高执行效率。

Quarkus围绕容器优先的哲学而构建。 这意味着它已通过以下方式针对降低内存使用量和缩短启动时间进行了优化:

· 对Graal / SubstrateVM的一流支持;

· 建立时元数据处理;

· 减少反射使用;

· 本机映像预引导。

Quarkus创建的应用程序消耗的内存是传统Java的1/10,与传统Java相比,它的启动时间更快:快300倍! 显然,这大大降低了云资源的成本。

命令式和反应式代码

现在,让我们探索反应式编程及其与Java命令式编码方法的结合。 Quarkus旨在在开发应用程序时无缝结合熟悉的命令式代码和非阻塞式,反应式样式。

这对于习惯使用命令式模型并且不想切换的Java开发人员以及使用云原生/响应式方法的开发人员都非常有用。 Quarkus开发模型可以适应您正在开发的任何应用程序。

在由无服务器架构,微服务,容器,Kubernetes,功能即服务(FaaS)和云构成的新场景中,Quarkus拥有成为在Java中运行Java的真正有效的解决方案。 毕竟,它是在考虑所有这些因素的情况下创建的。

未来是Java驱动的!

尼克拉斯说:"我认为Quarkus会改变游戏规则,并将改变企业发展的格局。" 正如新的虚拟机OpenJ9所展示的那样,Java世界正在不断变革。 该版本具有低内存占用空间,但是可以完全符合JVM规范来提高性能。 " Quarkus与OpenJ9一起非常适合容器工作负载,因此具有Java技能的企业开发人员可以构建现代的云原生应用程序。"

关于容器,最好的在线资源之一是IBM Digital Dev Conference的Cloud Native轨迹。 会议会议详细讨论了诸如" IBM云上的容器化工作负载","实践中的微服务"和"动手使用Kubernetes"等主题。

尼古拉斯·海德洛夫(Niklas Heidloff)的两篇文章展示了Quarkus的最佳表现,它们是IBM Cloud Kubernetes服务和Reactive软件开发方面的Quarkus。

探索Quarkus关键优势的资源

IBM Cloud Kubernetes服务上的微服务

如今,对更高效的应用程序和更好的用户体验的需求至关重要。 这就是为什么在云原生应用程序中"反应性"变得越来越重要的原因。

让我们学习如何在IBM Cloud Kubernetes Service上部署云原生应用程序。 Niklas还提供了一份指南,详细介绍了如何使用反应式Java技术构建更高效的应用程序。

我们将使用IBM Cloud中的工具链,其中包含CD / CI管道来构建和部署所有微服务,而不是任何客户端设置。

本文使用的示例应用程序可以作为cloud-native-starter项目的一部分在GitHub上以开源形式获得,该项目详细介绍了如何开始使用基于Java的微服务。 您可以在不到一个小时(30-60分钟)的时间内自行部署样本。

反应性应用程序的好处

反应模型的优点之一是能够通过发送消息而不是请求更新来更新Web应用程序,从而改善了用户体验。 下图显示了使用REST API调用创建新对象时,如何自动更新Web应用程序:

反应系统的另一个好处是效率。 例如,反应性REST端点可以提供更快的响应时间。 尤其是在成本取决于CPU,RAM和计算持续时间的公共云中,此模型可以节省成本。 在cloud-native-starter示例中,与同步REST端点相比,响应时间减少了一半。

在IBM Cloud Kubernetes服务上部署

为了使示例应用程序的部署尽可能容易,已创建了一个工具链。 不需要客户端安装和配置。 工具链将安装以下组件:

· PostgreSQL和管理客户端

· Kafka

· 微服务:articles, authors,Web API

· Web应用程序

· Eclipse Orion Web IDE

在触发工具链之前,您需要三个前提条件,这些前提条件都是免费的:IBM id,IBM Cloud Kubernetes服务和IBM Container Registry。

满足所有先决条件后,您只需单击一个按钮即可部署该应用程序。 有关更多详细信息,Niklas已创建GitHub存储库以获取分步说明。

下一个屏幕截图显示了管道。 最后一个作业" Deploy web-app"的日志显示了访问该应用程序所需的所有URL:

工具链和管道的定义是开源的,在GitHub中也可用,您可以将其用作自己的工具链的起点。

反应性应用的挑战

一个不同的应用程序将展示如何使用命令式编码来操作同步微服务。 为了进行更深入的探讨,Niklas还撰写了《使用Quarkus开发反应性应用程序》,其中提供了更多详细信息。

术语"反应性"被过度使用和过载,并且描述了不同的方面,例如反应性编程,反应性系统,反应性宣言和反应性流。 有几个框架支持不同的功能并使用其他术语。

刚开始时,要了解具有JavaScript背景的JavaScript回调,promise和Observable对应的Java对象并不总是那么容易或显而易见。 与编写命令式代码相比,响应式编程需要不同的思维方式。

为了了解如何一起使用这些功能,它有助于查看更完整的应用程序,这些用例更接近开发人员在构建可轻松部署在Kubernetes平台上的企业应用程序时所需要的用例。

一个很好的示例提出了一个Web应用程序,该应用程序在一个简单的Web应用程序中显示指向新闻/博客文章及其作者信息的链接。 Web应用程序调用Web-api服务; 它实现了前端到后端的模式,并调用了文章和作者的服务。 文章服务将数据存储在Postgres数据库中。 消息通过Kafka在微服务之间发送。 下图描述了高级架构:

响应式REST端点可提高效率

反应性系统和反应性REST端点的另一个好处是效率。 此方案描述了如何使用反应式系统和反应式编程来实现更快的响应时间。 这在成本取决于CPU,RAM和计算持续时间的公共云中特别有用,并且该模型可以节省成本。

该项目包含两种不同版本的web-api服务的端点" / articles",一种使用命令性代码,另一种使用响应性代码。 与命令式堆栈相比,此示例的反应式堆栈提供的响应时间不到该时间的一半:

· 响应时间:793毫秒

· 势在必行:1956 ms。

您可以通过阅读《有效的反应式编程》进一步深入研究。

支持的Kubernetes环境

对于所有组件和服务,都有用于部署和配置所有内容的脚本。 例如,如果您安装了Minikube,则设置时间不会超过10分钟。

云:

· IBM Cloud Kubernetes服务

· IBM Cloud上的OpenShift 4.3

本地:

· 迷你库

· CodeReady容器/本地OpenShift 4

正如本教程演示的那样,Quarkus为开发人员提供了许多当前和将来的利益,它为Java注入了新的活力,并将更旧的技术带入了未来。

如果您想了解有关IBM Cloud的更多信息,请访问此页面以获取更多信息。

您可以在Codemotion.com上阅读本文的原始版本,在此处可以找到更多相关内容。 https://www.codemotion.com/magazine/dev-hub/cloud-manager/quarkus-cloud-native-containers-based-development-java-framework/

(本文翻译自Codemotion的文章《Cloud-native, Containers-based development: Quarkus revamps Java》,参考:https://medium.com/@codemotion/cloud-native-containers-based-development-quarkus-revamps-java-10ea0ffec5fa)

相关推荐

# Python 3 # Python 3字典Dictionary(1)

Python3字典字典是另一种可变容器模型,且可存储任意类型对象。字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中,格式如...

Python第八课:数据类型中的字典及其函数与方法

Python3字典字典是另一种可变容器模型,且可存储任意类型对象。字典的每个键值...

Python中字典详解(python 中字典)

字典是Python中使用键进行索引的重要数据结构。它们是无序的项序列(键值对),这意味着顺序不被保留。键是不可变的。与列表一样,字典的值可以保存异构数据,即整数、浮点、字符串、NaN、布尔值、列表、数...

Python3.9又更新了:dict内置新功能,正式版十月见面

机器之心报道参与:一鸣、JaminPython3.8的热乎劲还没过去,Python就又双叒叕要更新了。近日,3.9版本的第四个alpha版已经开源。从文档中,我们可以看到官方透露的对dic...

Python3 基本数据类型详解(python三种基本数据类型)

文章来源:加米谷大数据Python中的变量不需要声明。每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。在Python中,变量就是变量,它没有类型,我们所说的"类型"是变...

一文掌握Python的字典(python字典用法大全)

字典是Python中最强大、最灵活的内置数据结构之一。它们允许存储键值对,从而实现高效的数据检索、操作和组织。本文深入探讨了字典,涵盖了它们的创建、操作和高级用法,以帮助中级Python开发...

超级完整|Python字典详解(python字典的方法或操作)

一、字典概述01字典的格式Python字典是一种可变容器模型,且可存储任意类型对象,如字符串、数字、元组等其他容器模型。字典的每个键值key=>value对用冒号:分割,每个对之间用逗号,...

Python3.9版本新特性:字典合并操作的详细解读

处于测试阶段的Python3.9版本中有一个新特性:我们在使用Python字典时,将能够编写出更可读、更紧凑的代码啦!Python版本你现在使用哪种版本的Python?3.7分?3.5分?还是2.7...

python 自学,字典3(一些例子)(python字典有哪些基本操作)

例子11;如何批量复制字典里的内容2;如何批量修改字典的内容3;如何批量修改字典里某些指定的内容...

Python3.9中的字典合并和更新,几乎影响了所有Python程序员

全文共2837字,预计学习时长9分钟Python3.9正在积极开发,并计划于今年10月发布。2月26日,开发团队发布了alpha4版本。该版本引入了新的合并(|)和更新(|=)运算符,这个新特性几乎...

Python3大字典:《Python3自学速查手册.pdf》限时下载中

最近有人会想了,2022了,想学Python晚不晚,学习python有前途吗?IT行业行业薪资高,发展前景好,是很多求职群里严重的香饽饽,而要进入这个高薪行业,也不是那么轻而易举的,拿信工专业的大学生...

python学习——字典(python字典基本操作)

字典Python的字典数据类型是基于hash散列算法实现的,采用键值对(key:value)的形式,根据key的值计算value的地址,具有非常快的查取和插入速度。但它是无序的,包含的元素个数不限,值...

324页清华教授撰写【Python 3 菜鸟查询手册】火了,小白入门字典

如何入门学习python...

Python3.9中的字典合并和更新,了解一下

全文共2837字,预计学习时长9分钟Python3.9正在积极开发,并计划于今年10月发布。2月26日,开发团队发布了alpha4版本。该版本引入了新的合并(|)和更新(|=)运算符,这个新特性几乎...

python3基础之字典(python中字典的基本操作)

字典和列表一样,也是python内置的一种数据结构。字典的结构如下图:列表用中括号[]把元素包起来,而字典是用大括号{}把元素包起来,只不过字典的每一个元素都包含键和值两部分。键和值是一一对应的...

取消回复欢迎 发表评论:

请填写验证码