快速跳转

什么是 Java 应用现代化?

复制 URL

过去 27 年来,Java™ 一直是企业软件开发中极为流行的编程语言。全世界有无数使用这种广为人知的编程语言构建的系统。

传统的 Java 应用是单体式架构的。其软件包含有运行应用所需的所有内容,但单体式特性使开发人员在进行变更时难以保持敏捷性。基本上,开发人员要想要变更一下,就必须获取其中内容,然后对内容进行重新编译、测试和重新部署。 

通过应用现代化,开发人员可以将传统应用(如 Java 构建的应用)迁移到现代化平台,将单体式架构分解为更小、更易于维护的组件(如微服务),应用现代软件开发和部署实践,以及将新旧版本整合到一起,从而让传统应用重获敏捷。

采用更新传统应用的方式(而不是重写现有应用的代码)来进行现代化升级,可帮助企业节省时间和金钱。通过采用云原生和微服务架构,开发人员可以使 Java 应用更加高效,也可以让企业更有余力投入未来的计划。

 

Java 应用一直以来都固守单体式架构,因此需要大量开销来长期支持和管理。对云和容器环境中的 Java 应用进行现代化升级,能够帮助您继续挖掘应用价值,同时提高性能、可扩展性并降低成本。

由于 Java 应用具有可移植性并依托庞大的生态系统,加之它面向对象、独立于平台、稳定且向后兼容,Java 几十年来一直是企业环境中最受欢迎的选择。Java 可提供定义明确的应用编程接口(API)、广泛的开发人员工具,并且易于学习。

特别是最近,随着开发人员从传统的单体架构模式转向追求更轻、更模块化的服务和功能,应用开发发生了重大转变。这些服务和功能通常是使用云计算和容器编排平台(如 Kubernetes)而实现的。这种方法通常被描述为“云原生Java”。

要注意的是,Java 最初并不是为快速启动、低内存占用或容器而设计的,因此它必须不断发展。不过这当然有好的一面,对 Java 进行现代化后,就可以在云环境中享受其原来的各种好处。

优势

  • 简化的开发人员体验:在云环境中,开发人员只需按一下按钮即可在几分钟内配置资源。还有好用的集成工具可用来配置网络、存储或其他服务,这些都是预先配置好的,可以随时使用。
  • 高可用性和云提供商支持:云提供商支持服务水平协议(SLA),可让您在无需投入大量人力和成本的情况下,享受私有数据中心难以达到的高可用性。因此,对于想要运行各种应用而无需自行管理基础架构的企业来说,云服务是一个很有吸引力的选择。
  • 可扩展性和弹性:可扩展性是开发人员转向云计算的一大重要原因,因为这可让开发人员根据不断变化的需求按需增加或减少资源。在许多情况下,要在非云环境中实现相同级别的可扩展性可能会非常昂贵。
  • 全球性覆盖和托管的可用性区域:云环境支持全球性覆盖,在全球范围内提供低延迟服务。云提供商数据中心的布局都经过精心考量,这可让用户能够扩展自己应用的触达范围,将应用部署到世界不同地区,而这在以前既不现实,又不经济,甚至根本不可能。
  • 低成本:云计算不需要大量的前期支出,从而可以节省运行硬件的附带成本,如电力、场地和维护。云部署快速且轻松,同时云环境易于访问和学习,因此能够加快开发人员的生产效率、缩短了产品上市时间,进一步降低成本。

云原生 Java 应用指的是在云中而非本地机器上构建、部署和管理的任何应用或微服务。这种现代化的软件开发方法有助于公司创建更灵活、可扩展的软件,在不牺牲性能或安全性的前提下加快改进速度。 

云原生 Java 依靠许多云方法来进行开发,包括:

  • 使用容器(而不是虚拟机)对应用进行打包,并与其运行时环境隔离。在容器中,Java 应用与其运行所需的一切和谐地捆绑在一起,带来更高的效率、更快的速度和更优的用户体验。容器使得 Java 应用可以在云中任意数量的操作系统上运行。 
  • 采用持续集成和持续交付(CI/CD),使用自动化来最大限度减少人工干预的需要,并向用户提供频繁的更新。凭借可靠的 CI/CD 管道,处理应用的不同分支的开发人员能够确保在部署之前将所做的更改整合回一个“主干”中。通过这种方法,在协调来自不同个人开发环境(IDE)的更改时,就可使用自动化来减少耗时工作。
  • 通过采用 DevOps 框架,开发和 IT 运维可用一组深化的协作方法来实现服务交付,快速将想法转化为应用改进。这在涉及容器的云原生开发中尤为重要,而容器为开发、交付、集成和自动化提供了统一的环境。

云原生 Java 有多种方法,包括:

Linux 容器中的 Java 虚拟机

Java 虚拟机(JVM)使 Java 程序能够在包括 Linux 容器在内的任何位置运行。这种方法有几种可能的配置:虚拟机监控程序主机操作系统在云中的云服务器上运行;客户机操作系统在虚拟机监控程序 VM 上运行;docker 容器在客户机操作系统上运行 ;运行 Java 字节码的 JVM 在 docker 容器内的主机 CPU 上运行;或者,所有容器在共享内核的同一主机上运行。在某些配置中,这种方法确实存在内存管理方面的潜在挑战。 

MicroProfile

这种方法由 Quarkus 之类的框架提供支持,比其他方法更加轻量,但是需要用户熟练掌握 Kubernetes,以便用于处理云任务。MicroProfile 是一个由社区推动的、与供应商无关的规范,它针对微服务架构进行了优化,并因其与其他云原生技术的许多集成而备受青睐。 

原生镜像

原生镜像技术允许 Java 代码提前编译成一个独立的可执行文件,可提供近乎即时的启动时间、较低的内存使用率,以及可在系统之间移植等诸多优点。这种方法通常使用 Liberica Native Image Kit(NIK)作为编译器,将 Java 字节码转换为二进制代码,但它不能对每个程序进行优化。Spring Boot 3 是流行的 Spring 框架的一部分,它取代了实验性的 Spring Native,可以将 Java 应用编译成可执行文件。 

如果您对云原生 Java 应用开发感兴趣,不妨对几个框架进行进一步研究。例如下面几个示例:

Quarkus 是一个为 JVM 和原生编译而设计的全堆栈 Kubernetes 原生 Java 框架,用于专门针对容器优化 Java,并使其成为无服务器Kubernetes 环境的高效平台。

Micronaut 是一个基于JVM 的框架,专注于速度和模块化。相对于其他框架,Micronaut 的启动时间更快、内存占用更少,因为它是在编译时执行依赖项注入,而不是在运行时执行。

Spring Cloud Functions 是历史悠久的 Spring 开发框架的新版本,专为云部署而打造。该框架中的云函数可以支持反应式或命令式风格的混合,并可以 Web 服务和后台工作等多种方式部署。

Eclipse Vert.x 提供了用于在 JVM 上构建反应式应用的各种工具,使得应用可以根据工作负载需求进行扩展和收缩。为实现这一目标,它使用异步编程模型来处理使用事件循环的并发工作负载,以此来重点提升效率。

Dropwizard 是一个成熟的框架,具有良好的稳定性,而且原生支持对配置、应用指标、日志记录和操作工具等。Dropwizard 在用于改造现有应用时表现出色,因为它的结构与较旧的 Java 开发方法非常契合。 

最后,GoogleMicrosoft 都有可用于基本函数的入门级 Java 框架,所以如果您的需求相对简单,这些开源框架可能就是您所需要的。

不同的应用要遵循不同的现代化路径。开发人员可以根据每个应用的特征、企业当前和预期的需求来选择最适合的路径。

为此,如果您正在考虑对 Java 应用进行现代化、改变单体式架构并真正利用云部署模型,那么有三个主要的 Java 应用现代化途径:重新托管、更换平台和重构。

重新托管 - 虚拟化

重新托管(也称为直接迁移)是指在虚拟机(VM)中按原样部署现有应用。它主要是将运行在传统应用服务器上的 Java 应用,直接迁移到在混合云平台上运行的 VM 中。您应用服务器的单体式应用保持不变,并保留所有现有的集成和依赖项。

更换平台 - Openshift

更换平台的意思是将您的应用部署到基于 Kubernetes 的云平台(如红帽® OpenShift®)上的容器中

OpenShift 上重构 Java 应用允许您利用平台中固有的功能,例如:通过装箱、水平扩展、CI/CD 集成工具、集成监控工具等提高资源使用率。OpenShift 提供了丰富的工具来简化 Java 应用镜像的构建和部署过程,并且还能够通过引入 MicroProfile 和内容删除来引入现代云原生开发技术。

重构 - Openshift 应用基础

重构意味着将应用转换为微服务、集成新技术并在云平台上部署。重构会把 Java 应用服务重新开发成微服务,部署在混合云平台的服务网格中。随着时间的推移,各种服务可以重新构建完成,从而逐渐将功能从旧的应用架构迁移到新的应用架构。借助 Strangler 模式,单体式架构可以随着时间的推移转变为微服务,还可以在重构旧服务的同时添加新服务。

红帽 OpenShift 和应用基础提供了一个可以简化执行整个应用生命周期的平台。这一组合能够帮助您构建、部署和运行应用,同时兼顾安全性和跨混合云的可扩展性。

《规划您的 Java 应用现代化之旅》电子书封面图像

规划您的 Java 应用现代化之旅

红帽是开源 Java 和 Kubernetes 方面的专家,可以帮助您实现 Java 应用现代化并构建敏捷的云原生 IT 环境,从而支持不断变化的业务需求。我们可为您的应用现代化之旅提供完整、统一的开放混合云基础。

作为一个二十多年来备受信赖的开发平台,许多企业都依赖 Java 来打造多种多样的体验。红帽帮助无数开发人员维护和改进了现有的 Java 应用,针对云原生环境重新设计,以在经过测试的框架中提供创新服务。

红帽平台可为您提供应用现代化所需的灵活性、互操作性和一致性。红帽 OpenShift® 是安全至上的混合云平台,可让您安心地进行跨环境开发、部署和管理应用。此外,为了评估 Java 应用的云就绪状态,红帽还可提供应用迁移工具包(MTA),用实用的工具、报告和知识来帮助开发人员加速应用现代化和迁移项目。

即刻联系红帽,深入了解应用现代化,并查看您所在地区即将举办的活动,来亲身体验红帽技术。

《现代化企业 Java》封面图像

获取 O’Reilly 的电子书《现代化企业 Java》

扩展阅读

文章

什么是红帽 OpenShift Operator?

红帽 OpenShift Operator 自动执行 Kubernetes 原生应用实例的创建、配置和管理。

文章

为什么选择红帽 OpenShift Serverless?

红帽 OpenShift Serverless 可扩展 Kubernetes,以部署和管理无服务器工作负载。

文章

为什么选择红帽 OpenShift 服务网格?

使用红帽 OpenShift 服务网格,您能够以统一的方式连接、管理和查看基于微服务的应用。

详细了解 OpenShift

产品

企业级应用平台,包含一系列久经测试的服务,可在您选择的基础架构上将应用推向市场。

出色的软件定义存储,可以随着容器的增减,跨环境为数据提供永久的存储位置。

享受全面支持的沙盒,可在其中快速开发、训练和测试机器学习 (ML) 模型。

一个具有内置安全策略、用于控制 Kubernetes 集群和应用的控制台。

相关资源

培训

免费培训课程

"通过红帽来运行容器"技术概述

免费培训课程

利用微服务架构开发云原生应用

免费培训课程

容器、Kubernetes 和红帽 OpenShift 技术概述