Java 框架的历史与技术演进新十年 (2014-2024)


Lambert 发布于 2024-12-14 / 22 阅读 / 0 评论 /
注意⚠️:本文只是我个人在了解十年间 Java 框架历史与技术演进过程中的小记,颇具主观。 自 2014 年 Spring Cloud 发布以来,Java 框架的生态系统持续发展

注意⚠️:本文只是我个人在了解十年间 Java 框架历史与技术演进过程中的小记,颇具主观。

自 2014 年 Spring Cloud 发布以来,Java 框架的生态系统持续发展并引入了许多新的技术和框架,以适应现代应用程序开发,特别是云原生、微服务、容器化等趋势。

在 2014 到 2024 年之间,Java 框架的演进表现为以下两个方面的创新和更新:

  • 新兴的 Java 框架 (2014-2024)
  • Spring 框架本身的演进 (2014-2024)
  • GraalVM (2019)
  • Java 框架的演进趋势总结 (2014-2024)

1. 新兴的 Java 框架 (2014-2024)

1. JHipster (2013)

JHipster 是一个生成器,用于生成 Spring Boot + Angular/React/Vue 前后端分离的应用程序。它帮助开发者快速构建一个完整的 Java 企业应用和前端应用架构,支持微服务架构、Spring Cloud、OAuth 2.0、JWT 和 Docker。

JHipster - en.wikipedia.org

  • 目标:通过自动化生成代码,JHipster 帮助开发者快速启动全栈应用,简化了开发和架构决策。

  • 核心特点

  • 全栈生成:生成 Spring Boot 后端与 Angular/React/Vue 前端的完整代码。

  • 微服务支持:支持基于 Spring Cloud 的微服务架构。

  • 集成 Docker 和 Kubernetes:帮助开发者将应用容器化,并集成到现代的云平台。

https://github.com/jhipster/generator-jhipster

2. Vert.x - 异步框架(2014)

Vert.x 是一个多语言的、轻量级的异步框架,它不仅支持 Java,还支持 JavaScript、Groovy 等多种编程语言。尽管它早在 2014 年就发布了,但它在云原生、微服务和事件驱动架构的环境中受到了越来越多的关注。

https://github.com/eclipse-vertx/vert.x

Eclipse Vert.x™ Reactive applications on the JVM
https://vertx.io/

  • 目标:Vert.x 旨在提供一个高性能、非阻塞的框架,能够处理大规模并发连接,特别适合构建实时应用。

  • 核心特点

  • 非阻塞 I/O:Vert.x 使用非阻塞的事件循环模型处理 I/O 操作,因此能够处理数十万的并发连接。

  • 多语言支持:除了 Java,Vert.x 还支持 JavaScript、Groovy、Ruby 等其他语言,适用于多语言开发的团队。

  • 易于扩展:Vert.x 支持轻量级的微服务和事件驱动的架构,并且具有很强的横向扩展能力。

  • 适用场景

  • 高并发、低延迟的系统。

  • 微服务架构和事件驱动的应用。

  • 实时聊天、实时通知等需要大规模并发连接的应用。

What’s new in Vert.x 5 - https://vertx.io/blog/whats-new-in-vert-x-5/

3. Jakarta EE - 继承 J2EE,拥抱现代化(2017)

https://jakarta.ee/

https://en.wikipedia.org/wiki/Jakarta_EE

Jakarta EE 是 Java EE(J2EE)的继承者。2017 年,Java EE 被转交给了 Eclipse 基金会,并重新命名为 Jakarta EE。Jakarta EE 在保持企业级应用特性的同时,进行了多项改进,使其更适应现代开发需求。

  • 目标:Jakarta EE 旨在继承 Java EE 的企业级特性,同时进行现代化改造,使其能够与微服务架构、容器化和云原生应用相兼容。

  • 核心特点

  • 微服务支持:Jakarta EE 与 MicroProfile(轻量级微服务开发规范)紧密集成,适合构建云原生微服务应用。

  • 云原生特性:Jakarta EE 引入了更轻量级的架构和更现代的 API,使得企业级应用能够更加灵活地部署在容器化和云环境中。

  • 适用场景

  • 传统企业级应用的现代化迁移。

  • 需要支持云原生和微服务架构的企业应用。

4. Helidon - 轻量级微服务框架(2018)

https://helidon.io/

https://github.com/helidon-io/helidon

Helidon由 Oracle 发布的一个轻量级 Java 微服务框架,专注于快速、简洁地构建云原生的微服务。

  • 目标:Helidon 旨在提供一个简洁、高效的方式来开发和部署微服务,尤其是容器化的云原生应用。

  • 核心特点

  • 两种编程模型:Helidon 提供了两种编程模型,Helidon SE(轻量级、基于函数式编程的模型)和 Helidon MP(基于 Jakarta EE 和 MicroProfile 的模型)。

  • 原生镜像支持:Helidon 支持 GraalVM 原生镜像,减少了启动时间和内存消耗。

  • 内置微服务特性:Helidon 提供了服务发现、负载均衡、配置管理等内建的微服务支持。

  • 适用场景

  • 云原生微服务和容器化应用。

  • 希望通过简单、灵活的框架快速构建微服务的开发者。

5. Quarkus - 云原生 Java 框架(2019)

Quarkus 是由 Red Hat 开发的一个新兴框架,专为 云原生容器化 开发而设计,特别适用于 KubernetesOpenShift 环境。它在 2019 年发布,并逐渐成为 Java 开发中的一颗新星。

https://github.com/quarkusio/quarkus

  • 目标:Quarkus 旨在为开发者提供一个轻量级、快速启动和高性能的框架,适应云原生、微服务和无服务器架构的需求。

  • 核心特点

  • 极快的启动时间和低内存占用:Quarkus 是为了现代云原生应用而设计,特别注重低内存占用和快速启动,这使得它特别适合容器化和 Kubernetes 环境。

  • 支持 GraalVM:Quarkus 与 GraalVM 紧密集成,支持原生镜像构建,使得 Java 应用可以编译成原生代码,进一步提升启动速度和内存效率。

  • 开发者友好:Quarkus 提供了“开发模式”,支持热重载(hot-reload)和实时反馈,极大地提升了开发效率。

  • 集成支持:Quarkus 提供了与很多流行的框架和库(如 Hibernate、Camel、Kafka、ActiveMQ、Redis)无缝集成,支持 Reactive 编程模型和微服务架构。

  • 适用场景

  • 云原生应用和容器化微服务。

  • 无服务器架构和功能快速启动的场景。

  • 希望优化 Java 应用启动时间和内存占用的场景。

2. Spring 框架本身的演进

Spring 框架在过去十年中的演进反映了对现代开发趋势的响应,尤其是在微服务、云原生和容器化时代。Spring 本身经历了几个重要的演变:

1. Spring Boot(2013年)

  • Spring Boot 的推出简化了 Spring 应用的构建,自动化配置和约定大于配置的理念大大提升了开发效率。

  • 它将 Spring 开发变得更加简洁,支持嵌入式应用服务器(如 Tomcat、Jetty),避免了开发者配置外部服务器的麻烦。

  • Spring Boot Actuator 提供了生产环境所需的监控、日志等功能。

2. Spring Cloud(2014年)

  • Spring Cloud 旨在为开发微服务应用提供一整套解决方案,解决了分布式系统中面临的一些复杂问题(如服务注册与发现、负载均衡、断路器、配置管理等)。

  • 它成为构建云原生应用和微服务架构的标配框架,并支持与容器化平台(如 Docker 和 Kubernetes)的深度集成。

3. Spring WebFlux(2016年)

  • Spring WebFlux 是 Spring 5 中引入的响应式编程模块,支持异步和非阻塞的编程模型,使用 Reactive Streams

  • 该模块专为构建 高并发、低延迟 的 Web 应用设计,适合需要处理大量并发连接的场景。

4. Spring Native(2020年)

# Native Images with Spring Boot and GraalVM

  • Spring Native 是一个帮助将 Spring 应用编译为 GraalVM 原生镜像的项目。它旨在提高应用的启动速度和减少内存占用,支持现代云原生应用的需求。

  • 它的推出使得 Spring 应用能够更好地与 容器化微服务架构 环境兼容,进一步推动了 Spring 的现代化。

5. Spring 6 和 Spring Boot 3(2022年)

  • Spring 6 和 Spring Boot 3 是 Spring 生态的重大版本更新,它们标志着 Spring 框架全面进入 JDK 17+ 时代。

# Spring Boot 3 and Spring Framework 6.0 – What’s New

  • 主要改进包括对 Jakarta EE 9 的迁移、引入对 GraalVM Native Image 的更好支持、以及与现代编程模型(如 Java 17 的新特性)更紧密的集成。

3. GraalVM (2019)

GraalVM 是一个多语言虚拟机,可以执行 Java、JavaScript、Python、Ruby、R 和 WebAssembly 等多种语言。GraalVM 提供了一种新方式,允许 Java 应用编译为原生镜像(native images),从而极大提升启动速度和降低内存占用。

# Build Java Modules into a Native Executable

https://github.com/oracle/graal

  • 目标:通过 GraalVM,Java 开发者可以将应用程序编译成本地代码,获得更快的启动时间和更低的内存消耗,尤其适合容器化和无服务器架构。

  • 核心特点

  • 原生镜像:GraalVM 可以将 Java 应用程序编译为原生镜像,这使得启动时间和内存占用大幅降低。

  • 多语言支持:GraalVM 支持多语言,并且具有跨语言调用的能力,极大地增强了 Java 与其他语言(如 JavaScript、Python)的互操作性。

  • 性能优化:通过 JIT(即时编译)和 AOT( Ahead-Of-Time)编译,GraalVM 提供了更高效的执行性能。

  • 适用场景:需要高性能、快速启动和低内存占用的 Java 应用,特别是在容器化和无服务器架构中非常有用。

4. Java 框架的演进趋势总结 (2014-2024)

在过去十年,Java 框架的演进呈现出以下几个显著趋势:

1. 云原生与容器化

  • 随着 Kubernetes 和 Docker 的普及,Java 框架加大了对 容器化云原生架构 的支持。框架如 Quarkus 优化了内存使用和启动时间,使 Java 应用更适合容器化和云环境。Java 框架不断向云原生、微服务和容器化环境转型。

  • Spring Boot 3Helidon 也加强了对云原生开发的支持,支持多云平台、微服务以及无服务器架构。

2. 轻量级框架与微服务架构

  • 微服务架构的流行推动了许多轻量级框架(如 HelidonQuarkus)的崛起,这些框架提供了快速启动和低内存占用的特性,非常适合微服务开发。

  • 这些框架通过自动化配置、依赖注入和原生镜像支持,帮助开发者构建高效、灵活的微服务系统。

3. 响应式编程与高并发

  • 随着对高吞吐量和低延迟的需求增大,响应式编程逐渐成为主流。Spring WebFluxVert.x 等框架提供了响应式编程模型,特别适用于处理大量并发请求和实时数据流。

4. 多语言与跨平台

  • GraalVM 的出现打破了传统 Java 的局限,支持多语言的执行,使 Java 应用能够与其他语言(如 JavaScript、Python)进行无缝交互。它使得 Java 可以更灵活地融入现代多语言开发的环境中。GraalVM 和原生镜像的支持使得 Java 应用能够更好地适应现代云原生架构。

写于:2024年12月14日 周六



是否对你有帮助?

评论