网站首页 > java教程 正文
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)
猜你喜欢
- 2025-01-04 详解docker容器的资源监控方案
- 2025-01-04 为什么建议一个容器中只运行一个进程
- 2025-01-04 JAVA网络编程基本功之Servlet与Servlet容器
- 2025-01-04 Java容器化参数配置最佳实践
- 2025-01-04 为啥Java应用迁移到容器后会出现OOM?
- 2025-01-04 Java并发容器及使用场景
- 2025-01-04 知识整理——Java 并发容器
- 2025-01-04 用项目案例彻底理解Spring IOC容器
- 2025-01-04 Java面试题:Spring容器启动流程是怎样的?
- 2025-01-04 Java 服务 Docker 容器化最佳实践
你 发表评论:
欢迎- 04-24Java Collections 工具类集合框架中常用算法解析
- 04-24桶排序的简单理解
- 04-24Java集合框架底层实现原理大揭秘
- 04-24Java 集合框架全面解析:选对数据结构,提升开发效率
- 04-24c#集合排序
- 04-24Java面试中常被问到的集合类深度解读
- 04-24VBA技术资料MF278:对集合进行排序
- 04-24Spring 最常用的 7 大类注解,史上最强整理
- 最近发表
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)