1、Spring Boot

Java 构建 Spring 应用程序已经有很长一段时间了,Spring Boot 是 Spring 的一个特定版本,它通过对配置细节的处理,使微服务构建更加简便。创建 Spring Boot 旨在自启动任何类型的 Spring 项目,而不仅仅是微服务。应用程序完成后,Spring Boot 将在 web 服务器中混合,并输出一个 JAR 文件,JVM 除外。你可以将其视为原始 Docker 容器。这也是许多负责构建微服务的开发者都非常喜欢 Spring Boot 的原因。

使用 Spring 开发微服务遵循与 Web 应用相同的 MVC 理念。该框架享有多年 Java 开发中建立的所有深度连接,包括所有主要和次要数据存储、LDAP 服务器和 Apache Kafka 等消息传递工具的集成。还有许多用于维护运行服务器集合的小特性,比如 Spring Vault,这是一种用于维护生产环境中服务器所需的密码的工具。所有这些优点都说明了为什么 Java 程序员多年来一直喜欢 Spring Boot 的原因。

2、Eclipse MicroProfile

2016 年,Java Enterprise 社区决定清理 Java Enterprise Edition 中的内容,以便人们可以使用经典部件构建简单的微服务。他们去除了大量的库,但保留了处理 REST 请求,解析 JSON 和管理依赖注入的功能代码,最终被称为 Eclipse MicroProfile,其特性为快速而简单。

从那以后,MicroProfile 社区制定了一个协议,每季度发布一个新版本,同时添加新代码以保持微服务平稳安全地运行。任何 Java EE 开发者都会非常熟悉开发过程和代码结构,而且还吧配置麻烦给省去了。

3、Dropwizard

当 Dropwizard 在 2011 年出现时,Dropwizard 框架为开发者提供了一个非常简单的模型,里面包含了许多重要的模块,你可以根据需求添加一些业务逻辑,或者配置其他内容,最后你会发现 JAR 文件非常小,并且能够快速启动。

Dropwizard 最大的限制可能是缺乏依赖注入。如果你希望使用依赖项注入来保持代码的整洁和松散耦合,则需要自己添加库,这点和 Spring 不同,但是现在 Dropwizard 也支持大多数功能,包括日志记录、健康检查和提供弹性代码。

4、WildFly Thorntail

Red Hat 的工作人员使用一个灵活的配置工具构建了他们自己的 MicroProfile 版本。该框架最初被称为 WildFly Swarm,但后来被重新命名为 WildFly Thorntail,Thorntail 通过指定所需的特性来帮助您创建自己的 Maven 构建文件,然后 Maven 负责组装所有东西。

Thorntail 还将通过扫描代码来检测组件,也可以使用 BOM(材料清单) 文件覆盖。当它全部运行时,Thorntail 将删除 Java Enterprise Edition 中不使用的部分,并创建一个很小的 JAR 文件,可以使用一个命令进行部署——这是一个非常巧妙的特性,允许 Thorntail 项目将其称为 Uber-JAR。这是遵循 Java Enterprise Edition 的另一种传统方法,它不会保留所有沉重的负担。

5、Helidon

Helidon 去除了 Java Enterprise Edition,保留轻量级的、基于 servlet 的核心,并吸引了大量的粉丝。在 Helidon 的,开发人员从 Netty,并添加代码进行路由和错误处理。它采用了代码的两个基本模型,即所谓的 SE 和 MP 版本。

Node 开发者可能更熟悉 Helidon SE,因为其具有由句点连接的函数调用。使用 JAX-RS 的 Java 程序员则更熟悉 Helidon MP。此外,Helidon 还集成了一些备受好评的工具,这些都是它能够吸引大量开发者的原因。

6、Cricket

另外一个用于快速 API 开发框架的是 Cricket。Cricket 很小,尽管它包括许多额外的功能,如键值数据存储,以避免连接数据库和调度程序来控制后台重复处理。没有添加复杂性或其他依赖项,因此很容易将代码添加到 Cricket 并启动独立的微服务。

7、Jersey

开发 web 服务的标准方法之一是 RESTful web 服务的 Java API(又名 JAX-RS),这是 Jersey 框架中实现的通用规范。这种方法主要依赖于使用注释来指定路径映射和返回细节。从参数解析到 JSON 打包的所有其他内容都由 Jersey 处理。

Jersey 的主要优点是它实现了 JAX-RS 标准,这个特性非常受欢迎,一些开发人员习惯将 Jersey 与 Spring Boot 结合在一起使用。

8、Play

体验 JVM 跨语言能力的最佳方式之一是使用 Play 框架,这是可以与 Java 或任何其他 JVM 语言兼容的。它的基础非常现代,具有异步、无状态的模型,不会让试图跟踪用户及其会话数据的线程使服务器过载。还有许多额外的特性可以用来充实网站,比如 OpenID、验证和文件上传支持。

Play 代码库已经发展了十多年,因此你还会发现类似于对 XML 的支持的这种古老的功能。play 既成熟又轻盈,这种组合还是比较有特色的。

9、Swagger

构建一个 API 看起来就像编写一个监听端口的代码一样简单,但是 Swagger 的开发人员不这么认为。他们已经创建了一个完整的 API 规范语言 OpenAPI,你可以使用它来说明你的 API。这似乎是一个额外的步骤,但是 Swagger 团队还提供了将该规范转换为自动化测试、文档等的代码。

Swagger 配置文件中的 API 很简单,用于实现接口、记录接口的,并提供一组工具来测试构建在其下的代码,甚至还有一种 API 治理机制。

Swagger 是一个 api 生态系统,它不局限于 Java。如果你的团队迁移到 Node.js 或其他几十种语言中的任何一种,都有一个 Swagger Codegen 模块将 OpenAPI 规范转换成该语言的实现。

10、Restlet

不同框架之间最大的区别之一是和其他服务或库的连接数量。Restlet 项目提供了更大的特性和连接集合,它已经与 JavaMail 之类的库集成,避免微服务需要对某些邮件服务器使用 POP、IMAP 或 SMTP;为防构建大量文本索引和元数据,还集成了 Lucene 和 Solr。

Restlet 中还有很多特性在持续开发。例如,你不需要使用 JSON,因为它可以直接处理 XML、CSV、YAML 和其他一些文件格式,此外,它还允许用户从 Chrome 浏览器测试 api。


“不积跬步,无以至千里”,希望未来的你能:有梦为马 随处可栖!加油,少年!

关注公众号:「Java 知己」,每天更新Java知识哦,期待你的到来!

  • 发送「Group」,与 10 万程序员一起进步。
  • 发送「面试」,领取BATJ面试资料、面试视频攻略。
  • 发送「玩转算法」,领取《玩转算法》系列视频教程。
  • 千万不要发送「1024」...

最热门的 10 个 Java 微服务框架的更多相关文章

  1. 现如今,最热门的13个Java微服务框架

    曾经的 服务器领域 有许多不同的芯片架构???有哪些芯片架构???和操作系统???,经过长期发展,Java的“一次编译,到处运行”使得它在服务器领域找到一席之地,成为程序员们的最爱. 本文,我们将和大 ...

  2. Java微服务框架一览

    引言:本文首先简单介绍了微服务的概念以及使用微服务所能带来的优势,然后结合实例介绍了几个常见的Java微服务框架. 微服务在开发领域的应用越来越广泛,因为开发人员致力于创建更大.更复杂的应用程序,而这 ...

  3. Java微服务框架

    Java的微服务框架dobbo.spring boot.redkale.spring cloud 消息中间件RabbitMQ.Kafka.RocketMQ

  4. Java 微服务框架 Redkale 入门介绍

    Redkale 功能 Redkale虽然只有1.xM大小,但是麻雀虽小五脏俱全.既可作为服务器使用,也可当工具包使用.作为独立的工具包提供以下功能:1.convert包提供JSON的序列化和反序列化功 ...

  5. Java 微服务框架选型(Dubbo 和 Spring Cloud?)

    微服务(Microservices)是一种架构风格,一个大型复杂软件应用由一个或多个微服务组成.系统中的各个微服务可被独立部署,各个微服务之间是松耦合的.每个微服务仅关注于完成一件任务并很好地完成该任 ...

  6. [转]Java微服务框架选型(Dubbo 和 Spring Cloud?)

    转载于 http://www.cnblogs.com/xishuai/p/dubbo-and-spring-cloud.html 微服务(Microservices)是一种架构风格,一个大型复杂软件应 ...

  7. Java 微服务框架选型 Dubbo 和 Spring Cloud

    微服务(Microservices)是一种架构风格,一个大型复杂软件应用由一个或多个微服务组成.系统中的各个微服务可被独立部署,各个微服务之间是松耦合的.每个微服务仅关注于完成一件任务并很好地完成该任 ...

  8. Java微服务(二):服务消费者与提供者搭建

    本文接着上一篇写的<Java微服务(一):dubbo-admin控制台的使用>,上篇文章介绍了docker,zookeeper环境的安装,并参考dubbo官网演示了dubbo-admin控 ...

  9. Java微服务(二):负载均衡、序列化、熔断

    本文接着上一篇写的<Java微服务(二):服务消费者与提供者搭建>,上一篇文章主要讲述了消费者与服务者的搭建与简单的实现.其中重点需要注意配置文件中的几个坑. 本章节介绍一些零散的内容:服 ...

随机推荐

  1. 如何通过 subprocess 持续获取输出内容

    在实际应用中会用到subprocess的Popen方法执行一些命令,而我们需要通过执行这个命令的来获取输出进行一些信息记录或者分析使用,如果是很快就可以执行完的那还好,有时需要持续跟踪内容的输出,比如 ...

  2. 计算机网络基础笔记 运输层协议UDP/TCP

    目录 UDP 首部结构 主要特点 TCP 首部结构 主要特点 TCP 可靠性实现 停止等待ARQ协议 连续ARQ协议&滑动窗口协议 拥塞控制 TCP 运输连接管理 连接建立:三次握手 连接释放 ...

  3. WSGI与uWSGI的应用场景与使用方法

    WSGI  /与/  uWSGI 在阿里云上部署项目时,在通信中我们都会用到wsgi与uWSGI,这此我就带大家来了解一下wsgi与uWSGI. 对了,上次有个朋友问我Django的生命周期是什么?我 ...

  4. C语言程序设计100例之(15):除法算式

    例15   除法算式 问题描述 输入正整数n(2≤n≤68),按从小到大输出所有形如abcde/fghi=n的表达式.其中a~i为1~9的一个排列. 输入格式 每行为一个正整数n (n <= 1 ...

  5. 禧云Redis跨机房双向同步实践

    编者荐语: 2019年4月16日跨机房Redis同步中间件(Rotter)上线,团餐率先商用: 以下文章来源于云纵达摩院 ,作者杨海波   禧云信息/研发中心/杨海波 20191115 关键词:Rot ...

  6. python3 连接 zookeeper

    zookeeper的增 删 改 查 watch监听. from kazoo.client import KazooClient import time,os import timeit os.chdi ...

  7. Python 从入门到进阶之路(七)

    之前的文章我们简单介绍了一下 Python 中异常处理,本篇文章我们来看一下 Python 中 is 和 == 的区别及深拷贝和浅拷贝. 我们先来看一下在 Python 中的双等号 == . == 是 ...

  8. Java描述设计模式(03):工厂方法模式

    本文源码:GitHub·点这里 || GitEE·点这里 一.工厂方法模式 1.生活场景 系统常见的数据导出功能:数据导出PDF.WORD等常见格式. 2.工厂方法模式 是类的创建模式,又叫做虚拟构造 ...

  9. [WPF 自定义控件]让Form在加载后自动获得焦点

    1. 需求 加载后让第一个输入框或者焦点是个很基本的功能,典型的如"登录"对话框.一般来说"登录"对话框加载后"用户名"应该马上获得焦点,用 ...

  10. Git - Git简介与客户端安装

    简介 Git是目前世界上最先进的分布式版本控制系统(没有之一)! 集中式版本控制系统(CVS/SVN),版本库是集中存放在中央服务器的,而一般工作的时候,用的都是自己的电脑,所以要先从中央服务器取得最 ...