Quarkus框架是一个来自Red Hat公司的Kubernetes Native Java框架平台。本书主要介绍Spring开发者如何在Quarkus框架上进行开发。全书通过比较Quarkus框架和Spring框架,介绍两者在原理、设计、开发、扩展和部署上的差异,并分别通过源码案例来讲解两者在Web开发、数据访问开发、消息应用开发、安全应用开发、响应式开发和集成第三方框架开发的差别,整理出Quarkus整合Spring Cloud、Consul和Dubbo等微服务架构的方案和实现。*后讲述Spring应用如何迁移至Quarkus框架的策略和步骤。
《Spring开发者的Quarkus实战》是一本开发指南,原理结合实践,基本覆盖了现有云原生开发的大部分应用场景,共有50多个源码案例(1万多行代码),并以图片、源码、文字说明相结合的方式详细讲解。
《Spring开发者的Quarkus实战》难度为中级,但对初级和高级层次读者也有一定启发作用,尤其适合希望在云原生领域继续探索的Spring开发者阅读。
1.案例丰富。包含覆盖云原生大部分应用场景的50余个实战案例。
2.操作性强。附赠1万多行的代码,可拿来即用。
3.作者权威。作者系教授级高工,国家认证架构设计师、系统分析师和信息项目管理师。
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应用程序的理想运行时框架。
1. 本书定位
《Spring开发者的Quarkus实战》是一本培训手册,简单而言,就是让Spring开发者快速、高效和精准地掌握Quarkus框架的开发。本书以理论结合实践的方式来撰写,其中实践占九成。所以,本书是一本实践和可操作性较强的书籍,可以作为Spring开发者学习Quarkus框架的教材。
《Spring开发者的Quarkus实战》以Spring框架和Quarkus框架编程案例的对比为基础,对案例进行讲解和说明。对于各个Quarkus案例,作者通过将图片、文字说明等相结合来进行解析。其中,图片能很好地体现作者的总体思路,文字能准确说明作者的意图。
为什么作者会选择Web开发、数据访问开发、消息应用开发、安全应用开发、整合、微服务架构等案例并进行对比?这源于作者在一线实践工作中的经验。试想一下,要开发一个云原生微服务应用,首先需要Web支持,然后是数据支持,最后就是不可或缺的安全框架。有这些组件,基本上就完成了一个云原生微服务系统的大部分功能。如果涉及异步处理或事件处理,就需要再加上一个消息组件或流组件。上述内容基本上都被作者精选的案例所囊括。作者还整合了几个基于Quarkus框架的Spring框架微服务架构解决方案。这些案例,对于通常意义上的云原生微服务应用,基本上可以达到80%~90%的覆盖。前言
Spring开发者的Quarkus实战
2. 如何使用本书
《Spring开发者的Quarkus实战》中每个Spring框架和Quarkus框架的对比都有两个应用案例,一个是Spring程序案例,另一个是Quarkus程序案例。Spring程序案例讲解时会简单一些,Quarkus程序案例的讲解比较详细。介绍Quarkus程序案例的总体思路是这样的:首先概述目的、组成、环境(上下文);其次重点分析要点及其如何实现;最后给出验证的实现,读者花费非常少的时间和精力就能进行具体的验证。
《Spring开发者的Quarkus实战》是一本关于软件编程的书籍。编程是一项实践性非常强的技能。本书的每个案例都有验证环节,目的就是让读者去实践操作。针对这些操作环节,作者还准备了一些验证代码,读者可查看实操的结果是否与当初的设想一致。作者也笃信:纸上得来终觉浅,绝知此事要躬行。这也是编程的真谛。
在开始具体的案例旅程之前,强烈建议读者首先阅读2.7节具体比较案例的说明,这是各个具体案例的总体说明,对所有案例的应用场景、原则和规则进行了说明。读者明白了这些指导和原则,就能更轻松、方便、高效地理解各个案例讲述的核心含义,从而达到事半功倍的效果。
3. 读者对象
《Spring开发者的Quarkus实战》适合对Quarkus感兴趣,并且想获得更多Quarkus知识或者实现更多想法的IT工作者。
1)Spring初级读者,可以依据自己在Web、Data和Message方面的开发经验,迅速了解Quarkus如何实现这方面的开发。
2)Spring中级读者,如具有丰富开发经验的Spring软件开发工程师等,可以在本书中获得更宽广和更全面的Quarkus认识,然后构建安全、集成、伸缩性强和高容错的微服务架构应用。
3)Spring高级读者,如具有丰富经验的Spring架构师和分析师,可以基于Quarkus的云原生特性,构建响应式、高可靠、高可用、维护性强的云原生架构体系。
Spring开发者几乎可以零成本地掌握一套Java上的云原生开发工具。Quarkus上手容易,对于一些具有Spring开发工作经验的人来说,可以非常快地掌握Quarkus的使用。作者认为,不重复发明轮子这句话同样也适合Quarkus。
4. 勘误和支持
由于篇幅原因,本书所列的代码都进行了格式处理,要正式运行程序,应以本书附带的源码文件为准,读者可参考封底说明的方式获取。
在撰写《Spring开发者的Quarkus实战》的过程中参考了很多资料和文献。书中所列出的软件平台和规范,其参
任钢,教授级高工,国家认证的架构设计师、系统分析师和信息项目管理师。有20余年的软件和架构经验,承担过上百个软件项目的规划、设计、开发和交付。现在某互联科技公司担任首席架构师,主要业务方向是提供企业数字化转型、行业互联网(物联网)、云原生体系、微服务架构等咨询服务。
前言
第1章 云原生、Spring框架和Quarkus框架概述/
1.1 Java的历史/
1.2 云原生基本概念/
1.3 Spring框架介绍/
1.4 Quarkus框架概述/
1.5 Quarkus框架给Java开发者带来的便捷和实惠/
1.6 本章小结/
第2章 Quarkus框架和Spring框架比较初探/
2.1 两种框架的设计和理念比较/
2.1.1 Spring框架的架构和核心概念/
2.1.2 Quarkus框架的架构和核心概念/
2.2 两种框架的性能比较/
2.3 两种框架的应用比较/
2.3.1 两种框架的依赖注入(DI)和AOP比较/
2.3.2 两种框架的脚手架工程比较/
2.3.3 两种框架整合第三方框架比较/
2.3.4 两种框架的响应式编程比较/
2.4 两种框架的程序启动过程比较/
2.4.1 Spring框架的程序启动模式/
2.4.2 Quarkus框架的程序启动模式/
2.5 两种框架的开发过程模式比较/
2.5.1 Spring框架开发过程模式/
2.5.2 Quarkus框架的实时编码功能/
2.6 两种框架的云原生部署步骤/
2.6.1 Spring框架云原生部署步骤/
2.6.2 Quarkus框架云原生部署步骤/
2.7 具体比较案例的说明/
2.7.1 应用案例简要介绍/
2.7.2 应用案例相关的软件安装和需遵循的标准规范/
2.7.3 应用案例演示和调用/
2.7.4 应用案例解析说明/
2.8 本章小结/
第3章 Web应用开发/
3.1 编写JAX-RS程序/
3.1.1 Spring和Quarkus实现JAX-RS之异同/
3.1.2 Spring实现JAX-RS应用/
3.1.3 Quarkus实现JAX-RS应用/
3.1.4 Quarkus实现REST客户端应用/
3.2 创建响应式JAX-RS程序/
3.2.1 Spring和Quarkus实现响应式JAX-RS之异同/
3.2.2 Spring创建响应式JAX-RS程序/
3.2.3 Quarkus创建响应式JAX-RS程序/
3.3 增加OpenAPI和SwaggerUI功能/
3.3.1 OpenAPI和SwaggerUI简介/
3.3.2 Spring增加OpenAPI和SwaggerUI功能/
3.3.3 Quarkus增加OpenAPI和SwaggerUI功能/
3.4 编写Quarkus的Servlet应用/
3.4.1 Servlet规范/
3.4.2 Quarkus实现Servlet应用/
3.5 本章小结/
第4章 数据访问应用/
4.1 实现ORM数据持久化/
4.1.1 使用JPA实现数据持久化/
4.1.2 创建响应式数据访问实现数据持久化/
4.1.3 使用MyBatis实现数据持久化/
4.1.4 使用Java事务(Transaction)/
4.2 实现与Redis的缓存处理/
4.2.1 Redis简介及安装/
4.2.2 使用Redis Client实现缓存处理/
4.2.3 实现响应式Redis Client缓存/
4.3 NoSQL应用/
4.3.1 MongoDB简介/
4.3.2 创建MongoDB程序/
4.3.3 创建响应式MongoDB程序/
4.4 本章小结/
第5章 消息事件驱动应用/
5.1 基于JMS消息处理/
5.1.1 Artemis安装/
5.1.2 Spring整合JMS实现说明/
5.1.3 Quarkus整合JMS实现说明/
5.2 事件消息处理/
5.2.1 Spring和Quarkus整合事件消息异同/
5.2.2 Spring整合事件消息实现说明/
5.2.3 Quarkus整合事件消息实现说明/
5.3 调用Apache Kafka消息流/
5.3.1 Spring调用Kafka消息流/
5.3.2 Quarkus调用Kafka消息流/
5.4 响应式事件消息流处理/
5.4.1 响应式事件消息概述/
5.4.2 Spring和Quarkus整合响应式事件消息异同/
5.4.3 Spring整合响应式事件消息实现说明/
5.4.4 Quarkus整合响应式事件消息实现说明/
5.5 本章小结/
第6章 构建安全应用/
6.1 微服务Security方案概述/
6.2 Quarkus Security和Spring Security异同/
6.2.1 Spring框架的Security架构简介/
6.2.2 Quarkus框架的Security架构简介/
6.3 Spring Security解决方案/
6.3.1 Spring的Apache Shiro案例讲解/
6.3.2 Spring Security案例讲解/
6.4 Quarkus Security解决方案/
6.4.1 Quarkus安全解决方案概述/
6.4.2 Quarkus框架SSL安全认证/
6.4.3 Quarkus框架basic安全认证/
6.4.4 使用JWT来加密令牌/
6.4.5 采用Keycloak实现OIDC认证和授权/
6.4.6 采用Keycloak实现OAuth 2.0认证和授权/
6.5 本章小结/
第7章 Quarkus框架扩展Spring框架的功能/
7.1 Quarkus框架整合Spring框架的DI功能/
7.1.1 Spring框架的依赖注入(DI)概述及其Quarkus转换/
7.1.2 编写案例代码/
7.1.3 验证程序/
7.1.4 Quarkus转换Spring的注解内容/
7.2 Quarkus框架整合Spring框架的Web功能/
7.2.1 Spring Web框架/
7.2.2 编写案例代码/
7.2.3 验证程序/
7.2.4 原理说明/
7.3 Quarkus框架整合Spring框架的Data功能/
7.3.1 Spring Data框架介绍/
7.3.2 编写案例代码/
7.3.3 验证程序/
7.3.4 扩展说明/
7.4 Quarkus框架整合Spring框架的Security功能/
7.4.1 Spring Security框架介绍/
7.4.2 编写案例代