使用互联网了解的两个月里_我两个月来对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

使用互联网了解的两个月里

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/331486.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

javah导出类的头文件抛出异常——java.lang.IllegalArgumentException: Not a valid class name(原因及解决方法)

【0】README 0.1) 本文旨在给出 java.lang.IllegalArgumentException 异常的原因 和 处理方法, 该异常和 javah 没有半毛钱关系 ; 0.2) 本文附带地给出了 javah 的作用 和 java 调用本地代码(如 C语言)的…

使用阿里巴巴json映射_使用JSON模式验证来映射稀疏JSON

使用阿里巴巴json映射在本文中,我们将探讨在创建和共享API时出现的问题。 特别是,需要: 表达数据的结构 提供对该数据的验证 允许将来改变主意 通过您拥有的部分数据与客户进行沟通 缺少数据时填写空白 人们通常使用版本编号的API解决此…

本地方法(JNI)——从java 程序中调用C函数

【0】README 1) 本文部分文字描述 转自 core java volume 2 , 旨在理解 本地方法——从java 程序中调用C函数 的基础知识 ; 2) for source code, please visit https://github.com/pacosonTang/core-java-volume/tree/master/co…

Hadoop入门(一)概念与单机安装

一、hadoop的概念 (1)什么是大数据 大数据是不能用传统的计算技术处理的大型数据集的集合。它不是一个单一的技术或工具,而是涉及的业务和技术的许多领域。 (2)hadoop的定义 Hadoop是一个由Apache基金会所开发的分布式…

螺旋测微器 flash_使用测微计收集应用程序指标

螺旋测微器 flash什么是Micrometer? Micrometer是一个简单的外观,用于以供应商中立的方式收集Java应用程序中的指标。 您可以考虑使用SLF4J作为指标。 Micrometer内置了对许多不同指标后端的内置支持,包括Atlas,Datadog&#xff0…

java JNI调用C语言动态链接库(java.lang.UnsatisfiedLinkError: no yourClassName in java.library.path 异常的解决方法)

转自: http://watershitter.iteye.com/blog/477615今天花了至少3个小时跑这个java调c的动态链接库的Hello,native world的程序。 把所有犯的错误和要点总结一下! 1 java 中 c语言函数的声明 public native static void greeting(); //就像是接口声明一样…

Hadoop入门(二)集群安装

一、集群安装条件前置 在虚拟机上先准备一个机子 按用前面【安装单机hadoop】 已完成安装jdk,hadoop和ssh、网络等配置环境等。 虚拟机和操作系统 环境:ubuntu14 hadoop2.6jdk1.7ssh 虚拟机:(vmware10) 二、集群安装环境设置…

poj doubles_余数运算符在Java中用于Doubles

poj doubles我在OSU任教已近两年了,这总是令我惊讶,我从学生那里学到了多少。 例如,过去, 我让学生写一些我不理解的奇怪代码 。 在这一点上,即使经过300多个博客文章, 几个YouTube视频 ,甚至还…

面向对象与面向过程

一、面向过程编程 面向过程编程是一种以过程为中心的编程思想,分析出解决问题的步骤,然后用函数把这些步骤一步一步实现。面向过程编程,数据和对数据的操作是分离的。二、面向对象编程 面向对象编程是将事物对象化,通过对象通信来解决问题。面…

本地方法(JNI)——数值参数与返回值

【0】README 1) 本文部分文字描述 转自 core java volume 2 , 旨在理解 本地方法(JNI)——数值参数与返回值 的基础知识 ; 2) for source code, please visit https://github.com/pacosonTang/core-java…

class employe_Java 8 –集合sort()方法–按Employe对象(Id,名称,年龄)列出自定义排序示例

class employe有关在Java中对自定义对象进行排序的完整指南。 Collections.sort()方法基于Comparable或Comparator实现进行排序。 用于对Employee对象进行排序的示例自定义排序 1.简介 在本教程中,您将学习如何在java中对Custom对象进行排序…

Spring入门(一)之简介

一、Spring定义 Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson创建。 简单来说,Spring是一个分层的JavaSE/javaEE full-stack(全栈的) 轻量级开源框架。 二、Spring框架特征 (1&#xff…

本地方法(JNI)——访问域+字符串参数

【0】README 1) 本文部分文字描述 转自 core java volume 2 , 旨在理解 本地方法(JNI)——访问域字符串参数 的基础知识 ; 2) for source code, please visit https://github.com/pacosonTang/core-java…

aws上负载均衡器标组端口_AWS CloudFormation:目标组没有关联的负载均衡器

aws上负载均衡器标组端口昨天,我使用AWS CloudFormation模板最终创建了ECS服务(Fargate类型),还创建了包括应用程序负载均衡器,目标组和IAM角色的资源。 创建堆栈时,出现以下错误: 具有target…

Spring入门(二)之下载与安装

一、Spring下载 参考其他博客:http://www.cnblogs.com/yjmyzz/p/3847364.html或http://blog.csdn.net/xinzhujin/article/details/54319043 Spring下载地址为:http://repo.spring.io/release/org/springframework/spring/ 二、压缩包下的SpringFramewo…

HttpClient 4 API –获取状态代码-getStatusLine()。getStatusCode()示例

在HttpClient API中获取状态代码的快速指南。 getStatusLine()。getStatusCode()示例和相关的错误。 1.简介 在这个非常快速的教程中,我将展示如何使用HttpClient 4获取和验证HTTP响应的StatusCode。 2. Maven依赖 要…

Spring入门(三)之IoC

一、IoC定义IoC,即控制反转。开发者在使用类的实例之前,需要先创建对象的实例。但是IoC将创建实例的任务交给IoC容器,这样开发应用代码时只需要直接使用类的实例,这就是IoC。在讨论控制反转这个概念的过程中,Martin Fo…

云服务器的优点和缺点_为什么要使用云计算? 的优点和缺点

云服务器的优点和缺点在过去的几年中,云计算一直是IT界的热门话题。 像许多事物一样,当它第一次出现时,很多人都将其视为下一件大事,但是云计算确实达到了期望,并真正改变了当今信息技术业务部门的运作方式。 云计算由…

本地方法(JNI)——编码签名

【0】README 1) 本文部分文字描述 转自 core java volume 2 , 旨在理解 本地方法(JNI)——编码签名 的基础知识 ; 【1】编码签名相关 1) 混编规则:为了访问实例域和调用用 java 定义的方法&a…

Shell入门(一)之简介

一、Shell 定义 (1)Shell Shell是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。 (2)Shell 脚本(shell script) Shell 脚本…