译者序

“技术是日新月异的”,最近几年,相信读者对这句话有了更深刻的认识。伴随着微服务和容器等相关技术的发展,越来越多的热词不断进入我们的视线,比如容器化、编排、云原生、服务网格等。尤其是,在查看云原生计算基金会(C N C F)的技术全景图时,各个项目组成的密密麻麻的图标,与其说是在激励我们入门,还不如说是在对我们进行劝退。

但是,这一波技术的发展浪潮确实带来了应用的现代化,并且真正发挥出了云环境的威力,给企业和组织带来了切实可见的收益。“现代化”这个词,涵盖不断与时俱进的动态概念,具体到企业级Java应用领域,当EJB烦琐的开发和部署流程成为应用快速开发和部署的障碍时,我们所说的现代化是使用像Spring、Hibernate/MyBatis这样的轻量级开源技术,对其进行改造升级;当单体应用庞大的代码量和难以演进的架构不断减缓我们的开发速度或延后产品的上市时间时,我们所说的现代化是采用微服务和容器化技术,将应用进行分布式和服务化改造。正是这样的探索和技术进步,推动我们这个领域不断向前。

在Oracle和社区的推动下,Java语言本身也在以史无前例的速度快速演进着。半年一个版本的速度,让我们不断惊呼,上一个版本的特性还没研究明白,下一个版本就接踵而至了。相对于Java语言(也就是传统上的Java SE)的快速发展,企业级Java(也就是传统的Java/Jakarta EE)的发展可以说是命运多舛了。Java EE被Oracle扫地出门之后,虽然得到了开源社区的收留,但是缺少Oracle官方的加持,面对众多强势的开源项目,它想在企业级Java领域重现昔日荣光变得越来越困难。但是,社区依然在朝着标准化企业级Java开发的方向在努力。

本书所致力于研究的就是面对应用现代化的需求时,如何利用开源社区和标准化的方式进行新一代应用的开发。在新技术方面,作者不仅介绍了如何对Spring Boot/Quarkus应用进行容器化和Kubernetes(简称K8s)部署,还讲解了最流行的Serverless架构及其在企业级Java领域的运用。尤其难能可贵的是,作者还花费大量的篇幅为我们介绍如何处理遗留系统,比如,如何通过使用新的技术和工具,让这些我们又爱又恨的“老大难”应用也能充分体验云原生所带来的收益。

虽然国内很多企业依然停留在Spring和Java 8的应用阶段,但是放眼望去,Java语言和社区正在经历着巨大和深刻的变革,一批新的开源项目,如Quarkus、Micronaut,正在悄悄发展,凭借其与云原生和容器化技术更好的融合与集成,也许会带来颠覆性的变化。GraalVM相关技术则彻底消除了Java面对Serverless场景的劣势,虽然它现在还有一定的局限性,但是未来可能会是一个我们不得不关注的方向。这样的社区和发展势头,正是我们技术爱好者所乐意看到的。

在翻译本书的过程中,我力争达到准确和通畅,但限于水平和时间,肯定还有一些不足或纰漏之处,热忱期待读者提出意见和建议。读者可以通过levinzhang1981@126.com联系到我。希望本书能够对读者有用,祝阅读愉快。

张卫滨

2022年7月于大连