我两个月来对Quarkus的了解

又一年,另一个来临,我很荣幸再次开启围绕Java,语言,生态系统和朋友的24篇精彩博客文章的统治,这些文章引导我们所有人进入一年中最安静的假期。 这已经是第五年了(我只错过了2016年),我现在真的觉得很老。但是相反的是,这些年来发生了很多事情,Java仍在努力并使我们所有人年复一年地工作。

长期从事该行业还使我向所有读者保证,一个话题是永恒的:终身学习。 当我开始开发众多的第一个企业应用程序时,有一个复杂的平台(J2EE)受到最初几个想法的支持,如何使它变得可用(Spring)。开发人员和运营。 这导致我们使用轻量级的Microprofile,容器和Kubernetes作为基础架构流程。

膨胀的规范和运行时的时代和痛苦似乎已经过去了。 但是变革带来了挑战。 意识到没有什么比经过验证和建立的API更胜一筹的了,我们已经看到许多解决方案推动了几乎合适的概念。 但并不完全。 JonasBonér创造了术语“微型”,并用它精美地描述了分布式微服务在大多数项目中的采用方式。 他们成长了,基本上变成了与同伴对接的更小的整体。 不管是否有运气,在击败成千上万个青少年服务的复杂性的同时,该概念又重新引入了启动时间挑战和扩展问题。

尽管有人一直说真正的分布式应用程序只需要其他编程模型,但作为一个行业,我们一直在竭尽全力使API知识保持活力并创建运行时,以帮助我们弥合必要与可能之间的鸿沟。 最具创新性的方法称为Quarkus 。 (是的,我仍然为他们拼错我的名字而感到愤怒;)。自从我重新加入Red Hat以来,过去两个月来我一直在不断地研究这种新颖而闪亮的东西。 这就是我学到的。 一篇博客文章中都有很多指针和链接,因此您可以同样很好地了解Quarkus。

所有世界中最好的集合在一处。

该网站将Quarkus描述为:

专为OpenJDK HotSpot和GraalVM量身定制的Kubernetes本机Java堆栈,采用最佳Java库和标准精制而成。

实际上,这已经是对其功能的很好描述。 好的,这里有两个时髦的词,但让我们从顶部开始。

从一开始,Quarkus就围绕容器优先理念进行设计。 这实际上意味着Quarkus已针对低内存使用量和快速启动时间进行了优化。 从一开始,对Graal / SubstrateVM的支持就一直是Quarkus设计的重要组成部分。 当将应用程序编译为本地映像时,它的启动速度更快,并且可以以比标准JVM小得多的堆运行。 在构建时将进行尽可能多的处理,因此您的应用程序将仅包含运行时实际需要的类。 在传统模型中,执行初始应用程序部署所需的所有类都在应用程序的生命周期内徘徊,即使它们仅使用一次。 使用Quarkus,它们甚至都不会加载到生产JVM中。 由于所有元数据处理已完成,因此这将减少内存使用量,并缩短启动时间。 所有这些以及更多使Quarkus成为容器化Java应用程序的理想选择。 您可以在Quarkus指南中快速了解如何使用Maven来构建,运行和打包应用程序 。

多年来,客户端-服务器体系结构已成为构建应用程序的实际标准。 但是发生了重大变化。 一个模型规定他们所有年龄都结束。 已经出现了一系列新的应用程序和体系结构样式,它们影响着代码的编写方式以及应用程序的部署和执行方式。 HTTP微服务,响应式应用程序,消息驱动的微服务和无服务器现在已成为现代系统中的核心角色。

Quarkus在设计时就考虑到了这个新世界,并为这些不同的范例提供了一流的支持。 Quarkus开发模型可以变形以适应您正在开发的应用程序类型。 如果要公开一个简单的RESTful端点,则可以依赖于众所周知的标准,例如JAX-RS,JPA和MicroProfile Rest Client。 如果您需要毫秒级的响应时间,100%的正常运行时间,更低的延迟,推送数据而不是拉取,更高的吞吐量和弹性,那么Quarkus也为您提供了Reactive编程的领先优势。 您可以找到更多示例, 了解有关其背后的编程范例的信息 。

最后但并非最不重要的一点是标准。 没有人希望您花时间学习新技术。 相反,Quarkus编程模型建立在成熟的标准之上。 可以是Eclipse MicroProfile等官方标准,也可以是Eclipse Vert.x等特定领域的领先框架。

依赖项注入解决方案基于CDI。 您可以使用JAX-RS批注定义REST端点。 您可以使用JPA批注来映射您的持久性实体,并可以使用JTA批注来声明事务边界。 您可以使用Eclipse MicroProfile来配置和监视您的应用程序。 您可以使用Vert.x,Apache Camel及其更多支持。 您甚至可以编写自己的扩展名 。

为了发展的喜悦

Quarkus不仅对编写Web应用程序或微服务非常有用。 它关注的不仅仅是功能集。 通过专注于简单性和预配置的默认值,它使您能够以最直观的方式完成日常工作。 开发简单的事物变得容易,而开发复杂的事物则变得容易。 Quarkus Tools for Visual Studio Code支持所有这些,它提供了Gradle支持,输入验证,属性支持等。 但是快乐仍在继续。 作为Spring Boot开发人员,您在构建Quarkus应用程序时还可以对Spring Data,Web和Dependency Injection使用众所周知的Spring批注。 使用这些API的现有知识和熟悉程度,Spring开发人员可以快速地使Quarkus变得高效。 这个15分钟的小型教程可以让您看到现场直播和实际运行。 需要明确的是,Quarkus中的Spring API兼容性并不旨在成为重新托管现有Spring应用程序的完整Spring平台。

目的是提供足够的Spring API兼容性,使使用Quarkus开发新应用程序成为自然的入门经验。 与预先优化的扩展结合使用时,Quarkus为微服务开发提供了数量惊人的功能。 综上所述 ,开发人员已成功将Spring应用程序迁移到Quarkus 。 如果您喜欢观看视频,我只能推荐Devoxx Belgium的录制,Georgios Andrianakis在Quarkus上谈论Kubernetes Native Spring应用程序 。

而且其中还有更多乐趣。 Kubernetes不仅仅是用于Docker容器的运行时平台。 可以使用特定于应用程序的自定义资源定义(CRD)扩展其API,并且您可以实现自己的控制器,以使应用程序动态地适应集群中的更改。 直到最近,大多数操作员都是用Go语言编写的,重复使用了内置Kubernetes控制器中的代码。 现在,有了Quarkus和fabric8 Kubernetes客户端,我们为在Java中实现运算符奠定了良好的基础,从而使我们能够将现有代码库与Kubernetes API扩展的功能集成在一起。 观看FabianStäbler在比利时Devoxx上谈论它 。

一个讲习班–我想要代码

有一个很棒的动手实验 ,它为参与者提供了与Quarkus的入门级动手实践,从第一行代码到提供服务,再到使用它们,最后到在一个统一的系统中组装所有内容。 它由Emmanuel Bernard,Clement Escoffier和Antonio Goncalves开发。 它以简单的逐步指导结构引导您完成所有必要的操作。 该研讨会将为您提供Quarkus的实用介绍。 您将安装所有必需的工具,然后将经典的HTTP微服务和基于事件的微服务混合在一起,以开发整个微服务体系结构。 您将通过扩展Quarkus的功能来完成,并了解有关创建本机可执行文件的更多信息。

quarkus.io上的入门指南也是了解Quarkus知识的好地方。

最后但并非最不重要的一点–它是开源的

我们可能很少再考虑这个问题了,但是自然地,作为Red Hat赞助的项目,Quarkus获得Apache 2.0许可,并在GitHub上有一个主页 。 随意加注标,分叉,贡献,提交问题,以及发送拉式请求,以帮助我们做得更好。 您也可以在Twitter上关注@QuarkusIo , 在论坛上发帖或与社区聊天 。

希望您喜欢12月的这篇第一篇文章,它缩短了您假期之前的等待时间。 祝愿您和您的亲人在一段宁静祥和的日子里来临,并非常期待与您成为更广泛的Java社区的一员,参与即将到来的2020年活动。

翻译自: https://www.javacodegeeks.com/2019/12/what-i-learned-about-quarkus-in-two-months.html

你可能感兴趣的:(我两个月来对Quarkus的了解)