前言
PREFACE

Spring框架及其全家桶系列是一个庞大的生态体系。在国内,Java开发者几乎都会使用Spring框架。Spring框架似乎成了国内Java开发事实上的标准。离开了Spring框架,很多Java开发者甚至都不会编写程序了。事实上,Java的世界很大,Spring框架虽然在其领域名列前茅,但也只是众多Java编程框架中的一种。

现在已经进入了云原生时代,应用程序可使用微服务架构快速、高效地响应请求,以便在虚拟机或容器等不稳定的环境中运行,并支持快速开发。Java以及流行的Java运行时框架有时被认为不如Node.js和Go等语言中的运行时框架,使Java这门开发语言受到了挑战。在这种情况下,Java语言必须进行革新。

Quarkus框架就是Java语言革新的产物,是一个天生就基于云原生Java的开发框架。目前,Quarkus已经风靡Java社区。Quarkus把Node.js开发的生产力与Go开发的速度和性能相结合,使Java开发人员能够构建针对云原生平台和体系结构的解决方案。

许多Java开发人员已经将Quarkus框架视为Spring框架的替代品,所以本书将展示Quarkus框架和Spring框架之间关键的区别,同时也强调相似之处。这些差异使Quarkus成为面向云原生平台和架构[如微服务架构、事件驱动架构、Serverless(无服务器)、FaaS(功能即服务)、边缘计算和物联网]的Java应用程序的理想运行时框架。

本书定位

本书是一本培训手册,简单而言,就是让Spring开发者快速、高效和精准地掌握Quarkus框架的开发。本书以理论结合实践的方式来撰写,其中实践占九成。所以,本书是一本实践和可操作性较强的书籍,可以作为Spring开发者学习Quarkus框架的教材。

本书以Spring框架和Quarkus框架编程案例的对比为基础,对案例进行讲解和说明。对于各个Quarkus案例,作者通过将图片、文字说明等相结合来进行解析。其中,图片能很好地体现作者的总体思路,文字能准确说明作者的意图。

为什么作者会选择Web开发、数据访问开发、消息应用开发、安全应用开发、整合、微服务架构等案例并进行对比?这源于作者在一线实践工作中的经验。试想一下,要开发一个云原生微服务应用,首先需要Web支持,然后是数据支持,最后就是不可或缺的安全框架。有这些组件,基本上就完成了一个云原生微服务系统的大部分功能。如果涉及异步处理或事件处理,就需要再加上一个消息组件或流组件。上述内容基本上都被作者精选的案例所囊括。作者还整合了几个基于Quarkus框架的Spring框架微服务架构解决方案。这些案例,对于通常意义上的云原生微服务应用,基本上可以达到80%~90%的覆盖。

如何使用本书

书中每个Spring框架和Quarkus框架的对比都有两个应用案例,一个是Spring程序案例,另一个是Quarkus程序案例。Spring程序案例讲解时会简单一些,Quarkus程序案例的讲解比较详细。介绍Quarkus程序案例的总体思路是这样的:首先概述目的、组成、环境(上下文);其次重点分析要点及其如何实现;最后给出验证的实现,读者花费非常少的时间和精力就能进行具体的验证。

本书是一本关于软件编程的书籍。编程是一项实践性非常强的技能。本书的每个案例都有验证环节,目的就是让读者去实践操作。针对这些操作环节,作者还准备了一些验证代码,读者可查看实操的结果是否与当初的设想一致。作者也笃信:纸上得来终觉浅,绝知此事要躬行。这也是编程的真谛。

在开始具体的案例旅程之前,强烈建议读者首先阅读2.7节“具体比较案例的说明”,这是各个具体案例的总体说明,对所有案例的应用场景、原则和规则进行了说明。读者明白了这些指导和原则,就能更轻松、方便、高效地理解各个案例讲述的核心含义,从而达到事半功倍的效果。

读者对象

本书适合对Quarkus感兴趣,并且想获得更多Quarkus知识或者实现更多想法的IT工作者。

Spring初级读者,可以依据自己在Web、Data和Message方面的开发经验,迅速了解Quarkus如何实现这方面的开发。

Spring中级读者,如具有丰富开发经验的Spring软件开发工程师等,可以在本书中获得更宽广和更全面的Quarkus认识,然后构建安全、集成、伸缩性强和高容错的微服务架构应用。

Spring高级读者,如具有丰富经验的Spring架构师和分析师,可以基于Quarkus的云原生特性,构建响应式、高可靠、高可用、维护性强的云原生架构体系。

Spring开发者几乎可以零成本地掌握一套Java上的云原生开发工具。Quarkus上手容易,对于一些具有Spring开发工作经验的人来说,可以非常快地掌握Quarkus的使用。作者认为,“不重复发明轮子”这句话同样也适合Quarkus。

勘误和支持

由于篇幅原因,本书所列的代码都进行了格式处理,要正式运行程序,应以本书附带的源码文件为准,读者可参考封底说明的方式获取。

在撰写本书的过程中参考了很多资料和文献。书中所列出的软件平台和规范,其参考资料来源都为该平台或规范的官网,本书的重点资料来源是Quarkus官网。

由于作者水平有限,而且书中所介绍的技术也在快速发展,因此纰漏和错误在所难免,希望读者批评和指正。作者的联系方式:rengang66@sina.com。

作者