文章目录
- Grails
- Micronaut
- Vert.x
- Quarkus
- Play Framework
- Dropwizard
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。
作为一个Java开发者,Spring框架应该基本上都用过的,由于Spring框架太过于强大,导致我们可能只知道Spring框架,但其实还有很多优秀的框架可以供我们使用,本文将介绍6个和spring框架类似的框架。
Grails
Grails是一个基于Groovy语言的构建在Spring Boot之上的强大的面向JVM的Web应用框架。
Java 领域的许多现代 Web 框架都比需要的要复杂得多,并且不遵守DRY(Don’t Repeat Yourself )原则。
像Rails和Django这样的动态框架为更现代的Web应用程序思维方式铺平了道路。Grails建立在这些概念之上,大大降低了在Java平台上构建Web应用程序的复杂性。然而,它的不同之处在于,它通过构建已经建立的Java技术(如Spring和Hibernate)来实现。
官网:https://grails.org/
GitHub:https://github.com/grails
Grails是一个全栈框架,试图通过核心技术及其相关插件解决尽可能多的Web开发难题。Grails开箱即用的内容包括:
- GORM : 一个易于使用的对象映射库,支持SQL,MongoDB,Neo4j等。
- 可以查看呈现HTML和JSON的技术。
- 基于 Spring Boot 构建的控制器层。
- 具有数百个插件的插件系统。
- 可以使用灵活的配置创建 AngularJS、React等程序 。
- 基于 Gradle 交互式命令行构建系统和环境。
- 嵌入式Tomcat,可配置动态加载。
以上所有都通过Groovy语言的强大功能和领域特定语言(DSL)的广泛使用而变得易于使用,Grails是构建在Springboot之上的,它利用了Spring的功能,例如依赖注入。
Grails不仅仅是一个Web框架,它由各种子项目组成。下表总结了生态系统中的其他一些关键项目。
项目 | 项目描述 |
---|---|
GORM for Hibernate | SQL 数据库的对象映射实现 |
GORM for MongoDB | MongoDB数据库的对象映射实现 |
GORM for Neo4j | Neo4j图形数据库的对象映射实现 |
JSON Views | 用于在服务器端呈现 JSON 的视图技术 |
Groovy Server Pages | 用于在服务器上呈现 HTML 和其他标记的视图技术 |
Async Framework | 异步编程抽象,支持 RxJava、GPars 等 |
Micronaut
Micronaut由Grails框架的创建者开发,并从多年来使用Spring、Spring Boot和Grails构建从单体到微服务的实际应用程序中汲取灵感。Micronaut 是一个轻量级的Java全栈框架,具有低内存占用和快速启动的特点,适用于构建小型、高性能的微服务应用程序。与Spring Boot类似,具有依赖注入、AOP、Web开发和云原生等功能。
官网:https://micronaut.io/
Github:https://github.com/micronaut-projects
Micronaut 旨在提供所有构建微服务应用必要的工具,包括:
- 依赖注入和控制反转 (IoC)
- 规范优于配置和自动配置
- 配置和配置共享
- 服务发现
- HTTP 路由
- HTTP 客户端和客户端的负载均衡
同时,Micronaut 框架旨在通过提供以下功能来避免Spring、Spring Boot和Grails等框架的缺点:
- 更快的启动时间
- 降低内存占用
- 最少使用反射
- 最少使用代理
- 易于单元测试
- 不生成运行时字节码
这是通过在编译时预先计算框架基础结构来实现的,这减少了应用程序工作所需的运行时逻辑。
Vert.x
Vert.x 是一个由Eclipse基金会管理的工具集,用于在JVM上构建响应式应用程序。它是一个工具集,而不是一个框架,所以它可以组合和嵌入到其他框架。
官网:https://vertx.io/
GitHub:https://github.com/eclipse-vertx
Vert.x使用底层I/O库Netty ,它拥有以下特性:
- 支持多种编程语言:应用程序组件能够以Java、JavaScript、Groovy、Ruby、Scala、Kotlin和Ceylon编写。
- 简单的并发模型:所有代码都是单线程的,免除了多线程编程的麻烦。
- 简单的异步编程模型:用于编写真正可扩展的非阻塞应用程序。
- 跨越客户端和服务器端的分布式事件总线:事件总线甚至可以渗透到浏览器中的JavaScript中,从而可以创建所谓的实时Web应用程序。
- 角色模型和公共存储库,用于重用并共享组件。
- 丰富的生态系统:Eclipse Vert.x 堆栈包含用于构建现代端到端反应式服务的模块。从高效的反应式数据库客户端到事件流、消息传递和 Web 堆栈,Eclipse Vert.x 项目涵盖了下图中所有内容:
Quarkus
传统的Java堆栈是为单体应用设计的,启动时间长,内存需求大,而当时还没有云、容器和Kubernetes的存在。Java框架需要发展以满足这个新世界的需求。
Quarkus的创建是为了使Java开发人员能够为现代的、云原生的世界创建应用程序。Quarkus是一个为GraalVM和HotSpot定制的Kubernetes原生Java框架,由最佳的Java库和标准精心打造。其目标是使Java成为Kubernetes和无服务器环境的领先平台,同时为开发者提供一个框架,以解决更广泛的分布式应用架构问题。
官网:https://quarkus.io/
GitHub:https://github.com/quarkusio
Quarkus特性:
- 容器优先:Quarkus为GraalVM和HotSpot定制你的应用程序。令人惊讶的快速启动时间,令人难以置信的低RSS内存(不仅仅是堆的大小!),在Kubernetes等容器协调平台中提供近乎即时的扩展和高密度的内存利用。
- 云原生:在 Kubernetes 等环境中采用 12 因素架构。Quarkus和Kubernetes的组合为创建可伸缩、快速和轻量级的应用程序提供了理想的环境。Quarkus通过工具、预构建集成、应用程序服务等显著提高了开发人员的生产率。
- 统一命令式和响应式:Quarkus的设计是为了在开发应用程序时将熟悉的指令式和非阻塞的响应式代码无缝结合起来。
- 最好的类库和标准:Quarkus提供了一个有凝聚力的、有趣的、全栈式的框架,它利用了各类不断增长的50多个你喜欢和使用的最好的库。所有这些都在一个标准的主干上。基于的框架有RESTEasy 和 JAX-RS、Hibernate ORM 和 JPA、Netty、Eclipse Vert.x、Eclipse MicroProfile、Apache Camel等等。
- 微服务优先 :为 Java 应用带来闪电般的快速启动时间和代码周转。
- 受开发者喜爱:一个内聚的平台,统一的配置、生成本地可执行文件简单方便。零配置,瞬间重新加载,简化80%的常用代码,灵活处理剩余的20%。
上图是Quarkus性能测试对比图,可以看到无论是内存占用和响应时间,Quarkus都有很大优势。
Play Framework
Play Framework 是基于一个轻量级的、无状态的、Web 友好的架构。Play 建立在 Akka,Play 提供可预测的和最小的资源消耗(CPU,内存,线程)的高度可扩展的应用程序。
作为一个全栈框架,Play 包含构建 Web 应用程序和 REST 服务所需的所有组件,例如集成的 HTTP 服务器、表单处理、跨站点请求伪造 (CSRF) 保护、强大的路由机制、I18n 支持等的。 Play 可以直接支持日常任务和热重载来节省宝贵的开发时间。
Play 结合了生产力和性能,可以轻松使用 Java 和 Scala 构建可扩展的 Web 应用程序。 借助 Play,应用程序可以通过无状态和非阻塞架构实现可预测的扩展。 Play 默认采用 RESTful,包括资产编译器、JSON 和 WebSocket 支持,非常适合现代 Web 和移动应用程序。
官网:https://www.playframework.com/
GitHub:https://github.com/playframework/playframework
Play Framework 具有以下特点:
- 简单的开发周期,该框架可自动编译和重新装载已改变的源文件。
- 智能绑定HTTP参数到Java方法参数。
- 基于Apache Mina的快速HTTP服务器。
- 一个基于Groovy的强大的模板引擎,可实现多层继承,定制用户标签等功能。
- 优秀的错误报告功能:发生异常时,该框架会直接显示出错误的源代码,甚至是模板代码。
Dropwizard
Dropwizard是一个开源的Java框架,用于开发易于运维、高性能的RESTful网络服务。它由Yammer开发,增强了基于JVM的后端服务,集合了来自Java生态系统中的稳定和成熟的程序库,组成了简单、轻量级的程序包,使得用户可以专注于把事情做好。Dropwizard是开箱即用的,它支持复杂的配置、应用环境、日志和运维工具,使得用户和用户的团队可以在最短的时间内交付一流品质的HTTP+JSON网络服务。
官网:https://www.dropwizard.io/
GitHub:https://github.com/dropwizard/dropwizard
Dropwizard框架的优点:
-
快速开发:Dropwizard框架提供了一系列的开箱即用的组件和工具,包括HTTP服务器、JDBC连接池、JSON序列化、API文档生成等,大大简化了Web应用程序的开发过程,开发者可以更加专注于业务逻辑的实现。
-
易于扩展:Dropwizard框架基于Jackson、Jersey、Jetty和Hibernate等流行的开源库构建,这些库都是可扩展的。Dropwizard框架可以通过自定义插件和组件来扩展和定制,例如添加新的API端点或将新的服务集成到应用程序中。
-
轻量级:与其他Java Web框架相比,Dropwizard框架非常轻量级。它基于Jetty HTTP服务器,使用简单的配置文件和约定,不需要额外复杂的配置,可以快速启动和运行。
-
易于部署:Dropwizard框架采用可执行Jar包的形式进行打包和部署,可以轻松地在任何环境中运行,例如本地开发机器、云平台或Docker容器等。
-
高可靠性和可维护性:Dropwizard框架通过遵循最佳实践和软件工程原则,提高了Web应用程序的可维护性和可靠性。它支持配置文件集中管理、应用程序监控、异常处理和日志记录等功能,帮助开发者更好地维护和管理应用程序。
这些框架在不同的场景和需求下具有各自的优势和特点,感兴趣的可以自行学习一下。