科技>计算机>编程语言
企业级Java现代化:写给开发者的云原生简明指南  

企业级Java现代化:写给开发者的云原生简明指南  "

作者:张卫滨
ISBN:9787121443374
定价:¥79.0
字数:229千字
页数:164
出版时间:2022-10
开本:16开
版次:01-01
装帧:
出版社:电子工业出版社
简介

本书讨论了如何利用现代化的技术开发新一代的企业级Java应用。传统的单体应用已经难以适应云环境下的开发和部署,因此,作者首先介绍了在云环境下需要什么样的Java应用架构和开发实践。作者基于Quarkus、Spring Boot和Vert.x技术搭建了一个典型的云原生分布式应用,并将其容器化和部署至Kubernetes。Serverless是一种新兴的应用开发和部署模式,能够最大化地节省成本,作者以Knative平台为例,讲解了如何将我们开发的云原生应用部署至Serverless平台。在应用现代化的过程中,我们不仅要面临新应用的开发,更要处理已有的遗留应用,作者花费大量的篇幅介绍了对传统应用进行现代化改造的行动方案,其中涉及大量最佳实践,以及实用的技术和工具。

前言

推荐序 人类的发展从来不是一蹴而就的,而是通过不断发展渐进地演化而成的。然而,从宏观的视角看,总会有那么几个特殊的标志事件引发变革,有那么一些璀璨的人物掀起风云,使得人类社会的发展呈现一种陡然跃迁的态势,历史学家也因而得以将人类社会分割为不同的时代。 真的是陡然的跃迁吗?在大多数随波逐流的世人看来,确是如此。殊不知,这推动时代跃迁的力量一直是在缓慢增强的,只不过它仿若暗流一般悄悄地积蓄着力量。看上去如一片平静安宁的冰面,而在那冰面之下暗流涌动。待到力量积蓄至巅峰之时,突然爆发,冲出冰面,那种改天换地的磅礴气势,不由让人惊呼:新的时代到来了! 君不见,秦王扫六合,虎视何雄哉,莫非只有秦王嬴政的雄才大略才能铸此伟业?文艺复兴穿破了中世纪教廷统治的黑暗,使得西方世界从中古时代迈向近代,难道就只因但丁、达·芬奇、莎士比亚诸位璀璨的先驱突然启发了蒙昧的欧洲人民?诗曰:“如彼雨雪,先集维霰。”任何事件的发生都是由微而显的;所有表面的跃迁,皆由渐进积蓄的力量推动而成!事实证明,历史和文化的发展如此,IT 科技的发展又何尝不是如此?只有见微知著的人才能敏锐地感知到暗暗积蓄的力量,洞察到隐隐发生的变化。 IT 科技自从迈入互联网的信息时代,就一直处于瞬息万变之中,变化之迅捷,往往让人捉摸不透变化的方向。当我们将变视为不变,又或者将变视为常态,从而产生一种因袭的惰性时,一旦改变时代的变化发生,就难免错失良机。Web 从 1.0 时代迈入 2.0 时代,正是那些能够见微知著的信息“先知”最早、最快侦测到大势所趋,通过提前布局一举抢占了先手。在即将迈入元宇宙的 Web 3.0 时代,我们还要这么迟钝吗? IT 架构的发展同样如此。当 EJB 服务容器大行其道之时,有多少人想到 Spring 的出现几乎改变了 Java 企业级开发的面貌?当 Web Service+SOAP 看起来要成为 SOA 的通信协议标准时,又有多少人预知到 RESTful+Json 轻量级协议会成为分布式通信的首选,进而成为微服务的标配?当 Docker 引领容器化大潮时,我想,也不会有多少人能够前瞻一个崭新时代——云原生时代以此为标志拉开序幕。 借用历史的发展阶段,我们将 IT 的新一代应用称为“现代化应用”,而将这个过程称为“应用现代化”,它是实现数字化转型的最短路径。Java 作为企业级开发的主流语言,亦须顺应现代化发展,此即本书书名的由来。 然则,有多少 Java 程序员能够做到见微知著,提前踏上了现代化 Java 的历程?又有多少企业已启动应用现代化的战略规划,准备迎接数字化转型的挑战? 「DaoCloud 道客」一直跟进云原生发展的步伐。我们敏锐地感知到在云原生时代,现代化应用必然会呈现一种全新面貌。为此,我们打造了应用现代化专家团队,通过传承企业架构、领域驱动设计与敏捷开发文化,同时又引入云原生架构的先进技术,打造了契合时代跃迁方向的应用现代化体系。这套体系为企业开展数字化转型提供了战略规划、策略分析、战术实施的全方位指导。在应用现代化的征程中,我们充分认识到 Java 及 Java 框架作为企业级开发的主流语言与工具,已经成为决定实施应用现代化成败的关键;如何提升团队现代化 Java 的开发能力,也将成为现代化应用开发成功与否的决定因素。本书全面剖析和讲解了与应用现代化相关的 Java 先进技术,通过实战案例介绍了与云原生技术相关的 Java 工具,并形成了有效的方法指导。阅读本书,无疑能帮助 Java 程序员和传统企业在应用现代化的征程中占得先机。 易经曰:“知几其神乎!”意为见事情萌发的细微迹象,预知其变化,就能与神道相符。若你能早阅读本书,就能对现代化 Java 技术了然于胸,提前迈入应用现代化的赛道。君若为先行者,那么后来之人或许也会叹服你预知的神妙吧! 「DaoCloud 道客」应用现代化团队 2022年5月 译者序 “技术是日新月异的”,最近几年,相信读者对这句话有了更深刻的认识。伴随着微服务和容器等相关技术的发展,越来越多的热词不断进入我们的视线,比如容器化、编排、云原生、服务网格等。尤其是,在查看云原生计算基金会(CNCF)的技术全景图时,各个项目组成的密密麻麻的图标,与其说是在激励我们入门,还不如说是在对我们进行劝退。 但是,这一波技术的发展浪潮确实带来了应用的现代化,并且真正发挥出了云环境的威力,给企业和组织带来了切实可见的收益。“现代化”这个词,涵盖不断与时俱进的动态概念,具体到企业级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月于大连 序言 从平台到生态系统 在过去几年里,如果你没有“两耳不闻天下事”,肯定会注意到这样一件事情,那就是企业级领域正在朝着采用云技术的方向发展,微服务、Kubernetes、Linux容器等技术无不牵涉其中。尽管二十多年来,Java语言一直是企业开发人员的主力,但它在这个新的云计算世界中并没有在第一时间表现出如此强大的统治力。 Java以及使用它构建的框架和技术栈通常被视为单体应用的代表,启动缓慢,消耗大量的内存或磁盘空间,而且Java本身的动态特性似乎与Kubernetes的不变性假设相背离。对于以百万计的Java开发人员来说,这可能是一个严重的问题,尤其是当我们想要尝试基于另外一种语言重新创建由IDE、第三方库等组成的丰富的Java生态时更是如此。多年来这个生态帮助开发人员获得了极高的生产力。 好消息是,由开发人员和供应商组成的Java社区已经看到了云原生Java面临的挑战。Java语言、框架等方面的变化已被迅速接受,这使得Java开发人员能够将他们的技能带到这个全新的领域。这些技术包括Quarkus、GraalVM、Eclipse Vert.x、Spring Boot和OpenJDK。 然而,在云环境中有效地使用它们并不总是那么简单。CI/CD的作用是什么?Linux容器镜像和Kubernetes又该如何发挥它们的作用?监控、可观测性、微服务的健康检查等问题,即使对最有经验的开发人员来说,也是令人望而生畏的挑战。 在这本书中,Markus和Natale提供了针对大量问题的答案。阅读本书,你将了解和掌握Java领域中正在发生的变化,以便更好地拥抱云计算,还能学到云计算中那些你可能不熟悉但对确保分布式微服务良好运行的重要技术。无论你是有经验的Java开发人员还是新手,这本书都是你进入云计算和相关领域的一个很好的起点。 Mark Little Red Hat中间件工程副总裁 前言 我们为希望将面向Java的单体模型成功带入未来的开发人员编写本书。本书各章内容概述如下: 第1章介绍我们将在本书中使用的基本技术和概念。 第2章带领读者实现一个完整的基于微服务的架构,不同的组件使用了不同的Java框架。我们将会综述如何将典型的单体模式拆分成更加多样化和异构的环境。 第3章介绍一些基本的迁移策略,并展示目标开发平台的评估路径。 第4章讨论Java开发者如何从Kubernetes的能力中获益,以实现应用的现代化和功能增强。 第5章探讨已被行业证明的模式、标准化的工具和开源资源,它们将帮助我们创建经久不衰的系统,这样的系统能随着需求演进不断成长和变化。 第6章阐述Kubernetes中的基本任务,如日志、监控和调试应用程序。 第7章分析Java开发人员如何按照Serverless执行模式创建现代化的应用,阐述一些最常见的场景和架构,这些都是Java开发人员现在和未来可能会用到的。

目录

序言 前言 第1章 重新回顾企业级开发 什么是公有云与私有云?为何要使用云 “云原生”的含义 Kubernetes原生的开发 面向开发者的容器和编排 容器原生的运行时 Kubernetes的不同风格 管理开发的复杂性 DevOps与敏捷 小结 第2章 云原生Java之路 云原生工作坊 架构 使用Quarkus创建Inventory微服务 创建Quarkus Maven项目 创建领域模型 创建RESTful服务 在开发模式下运行应用 使用Spring Boot创建Catalog微服务 创建Maven项目 创建领域模型 创建数据资源库 创建RESTful服务 使用Vert.x创建Gateway服务 创建Vert.x Maven项目 创建API Gateway 使用Node.js和AngularJS创建前端 运行前端 小结 第3章 轻装前行 是三层还是分布式系统 技术更新、现代化和转型 6R 分解并容器化 将Kubernetes作为新的应用服务器 定义目标平台 强制迁移的步骤和工具 创建应用组合 为大事做准备 小结 第4章 基于Kubernetes的软件开发平台 开发人员与Kubernetes Kubernetes能够做什么 Kubernetes不能做什么 基础设施即代码 容器镜像 Dockerfile 构建容器镜像 运行容器 镜像仓库 部署至Kubernetes Pod Service Deployment Kubernetes与Java Jib JKube 小结 第5章 超越原样转移:处理遗留系统 管理遗留系统 评估要迁移的应用 评估要迁移的功能 迁移方式 保护遗留应用(Replatform) 构建新的应用(Refactor) 挑战 避免双重写入 长时间运行的事务 快速移除旧代码 集成 小结 第6章 构建Kubernetes原生的应用 寻找可扩展性和复杂性之间的平衡点 现代化架构的功能性需求 API驱动 服务发现 安全与授权 监控 跟踪 日志 CI/CD 调试微服务 端口转发 Quarkus远程开发模式 Telepresence 小结 第7章 未来之路:Serverless 什么是Serverless 架构的演进 使用场景:数据、AI与机器学习 使用场景:边缘计算和IoT Knative:适用于Kubernetes的Serverless 事件驱动的Serverless架构 面向Java应用的函数即服务 Java应用的函数部署 Boson Function CLI 小结 索引

作者简介

编辑推荐

作者寄语

电子资料

www.luweidong.cn

下一个