vlambda博客
学习文章列表

Java的后端开发框架

Java的后端开发框架

很久之前写Java服务端程序是从Servlet开始的。大学四年在图书馆与各种开发框架书籍擦肩而过,因为完全不会把这些没听过的框架与Java关联起来。虽然最后还是一不小心踢开了后端开发的大门,而且当时没有使用任何框架就完成了服务端开发,也是厉害了。但是也浪费了很多宝贵的时间在各种书籍中寻找我想要的东西。本文主要介绍Java的一些服务端的开发框架,都是与基础的Web服务相关的后端框架的作用就是帮你解决软件底层的处理逻辑,不用太专注于与软件的编码,而使工程师更加专注于业务的实现。

SpringBoot

官网:https://spring.io/projects/spring-boot

SpringBoot是一个基于Spring的容器框架,开箱即用,其生态非常强大,是当下最热门的企业级开发框架之一。围绕SpringBoot产生的一堆企业开发中间件集合又称作SpringCloud(大概有90多个组件,而且一直保持增长中),这些中间件都采用了SpringBoot框架作为底层来实现的,基本上满足企业开发的各种需求。该框架官方支持Java,kotlin,Groovy等语言。

我个人觉得kotlin以及Groovy是动态语言,相比较Java而言,没有静态强类型的特性,会在编辑的时候可能没有提示,导致后期编译虽然可以通过,但是没有检查相关语法会导致各种错误百出。所以还是建议使用Java来实现比较好,除非编者能很好的理解Kotlin的语法,可以做到不依赖编辑器提示就能做到完美,那也是推荐的,毕竟都是现代化的语言,还是有很多很好的特性。

Micronaut

官网:https://micronaut.io/

Micronaut 是一个现代化的基于 JVM 的全栈框架,用于构建模块化且易于测试的微服务或无服务程序。

同时,Micronaut 使用 Netty,并且对响应式编程提供一流的支持。对于 JVM 领域的全栈框架来说,Micronaut 是一个非常有前途的新成员。

Micronaut 旨在提供构建微服务所需要的一切工具,包含:

依赖注入(DI)和控制翻转(IoC)。合理的默认值和自动配置。配置及配置共享。服务发现。HTTP 路由。具有负载均衡的 HTTP 客户端。同时,Micronaut 也致力于避免像 Spring、Spring Boot 和 Grails 中的弊端,通过:快速启动。减少内存占用。极少的反射使用。极少的代理使用。简单的单元测试。在以前,像 Spring 和 Grails 这些框架并不是被设计来在 server-less、安卓 Apps 或低内存占用的场景中运行。相反,Micronaut 则是为此而生。

Micronaut 通过使用 Java 的 annotation processor 来实现以上功能,annotation processor 可以在任何支持其的 JVM 上使用,包括在使用 Netty 构建的 HTTP Server 和 Client 上。

为了提供和 Spring 以及 Grails 相似的编程模型,这些 annotation processor 预编译了必要的元数据(Metadata)来进行依赖注入、定义 AOP 代理以及配置你的应用程序,使其能够在微服务环境中运行。

Blade

官网:https://lets-blade.com/

轻量级、高性能、简洁优雅的 Web 框架。这个框架有一套完整的从Controller到ORM层的框架集合。Blade是一个MVC框架,与Spring很相似,也是有容器管理,控制反转等特性。其ORM框架叫anima。与SpringCloud家族相比,Blade没有非常强大的生态与文档,但是作为简单的后端框架,基本的都是有的,其他的可以自己结合中间件实现也是差不多的,当然这需要一点底层原理知识来支持。此外这个框架是只支持Java,不支持其他语言。

Sparkjava

官网:http://sparkjava.com/

一个微型的Web框架,支持kotlin以及Java。风格与SpringBoot及Blade完全不同,有点像go或者nodejs系框架。sparkjava的设计初衷是,可以简单容易地创建REST API或Web应用程序。它是一个灵活、简洁的框架,大小只有1MB。Spark允许用户自己选择设计应用程序的模板引擎以及选择最适合他们项目的库,比如,HTML解析功能就有Freemarker、Mustaches、Velocity、Jade、Handlebars、Pebble或Water等选项可供选择,而且很少需要配置或样板文件。不过,灵活简单的代价是,用户可选的功能减少。总之,Spark剔除了许多Java的臃肿之物,提供了一个最小化的、灵活的Web框架。但由于精简程度较高,它缺少了一些功能,不适合用于大型Web应用程序的开发。

Javalin

官网:https://javalin.io/

与sparkjava一样都是微型的框架,两者编程风格很相似。

Mybatis-plus

官网:https://mybatis.plus/

MyBatis-Plus是基于Mybatis的扩展,具有其他ORM框架的各种优点与缺点。Mybatis被称之为半自动的ORM的框架,那么Mybatis-Plus就是一款全自动的ORM框架。Mybatis-Plus支持xml格式的动态sql语句,也支持面向接口接口的增删改查。从Mapper到Service都可以操作直接数据库,此外Model也可以直接操作数据库,非常方便与强大,底层的核心原理都是基于Java反射。一般推荐企业级开发使用SpringBoot+Mybatis-Plus【我推荐的,个人喜好】。

Rexdb

官网:http://db.rex-soft.org/

Rexdb是一款使用Java语言编写的,开放源代码的ORM持久层框架。它可以处理查询、更新、批处理、调用、事物和JTA事物等数据库操作,支持多种类型的对象作为预编译参数,并自动完成结果集到对象的映射。Rexdb具有功能全面、使用简单、性能良好等特点,适用于大多数开发场景。Rexdb在同类框架中具备最高效的执行效率。特点就是需要写sql语句。没办法做到不写SQL语句,所以这个框架也说自己的效率比mybatis之类的高很多。

这个框架是国产的,代码大概有9000行。去年作者所在的团队去参加培训了,只有作者一人留在办公室的时候就通读了这个框架的代码,收获良多,也弄清楚了ORM框架的本质与设计原理以及实现方案。通过阅读优秀框架的源码,对编码水平的提高确实大有裨益。仅仅学会使用框架而不知其原理,就会遇到很多坑而不知道怎么解决,如果知道原理,那么就能很轻松避开。

BeetlSQL

官网:http://ibeetl.com/

BeetSql是一个全功能DAO工具, 同时具有Hibernate 优点 & Mybatis优点功能,适用于承认以SQL为中心,同时又需求工具能自动能生成大量常用的SQL的应用。

Anima

官网:https://github.com/biezhi/anima

anima是blade作者开发的一款ORM框架,风格与flask sqlalchemy很相似,不需要写任何sql语句。

总结

上面介绍的都是一些作者折腾过的框架,当然还有很多其他优秀的框架没有折腾,所以也没有介绍。每个框架都有自己的特点,各有所取之处。看场景选择合适的框架是比较明智的选择。正如ORM框架的不写SQL与写SQL两种风格各有优点。前者利用Java反射,以性能损耗的代价换取开发者的方便快捷,后者以SQL语句冗长繁琐的代价来换取软件性能的提高。


以内容上纯粹是作者个人总结,仅供参考。

推荐阅读