最热门的10个Java微服务框架

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架构师的道路上披荆斩棘。需要资料的欢迎加入学习交流群:9285,05736

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/503129.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java的文件流操作

文件系统 FileSystem类的对象表示Java程序中的文件系统。 FileSystem对象用于执行两个任务: Java程序和文件系统之间的接口。 一个工厂用于创建许多类型的文件系统相关对象和服务。 FileSystem对象与平台相关。 创建文件系统 要获取默认的FileSystem对象&…

学习Java编程,英语对我们来说有多重要?

Java软件开发需要学英语吗?学软件开发大家都知道,动手写代码远远比那些个只看理论知识要强得多。很多人因为不懂软件开发流程,就会觉得软件开发肯定很难,实际上不然,软件开发并没有想象中的那么难,也完全没…

Java基础学习需要掌握哪些内容?

对于零基础或者打算开始学习Java编程的同学,首先要去学习Java基础课程的内容,那么Java基础课程有哪些呢?无非就是需要知道Java概述、Java语言基础、面向对象、异常处理、常用类、数组和集合、IO流、线程、反射等。 Java概述:你要知…

Java中高效判断数组中是否包含某个元素

如何检查一个数组(无序)是否包含一个特定的值?这是一个在Java中经常用到的并且非常有用的操作。同时,这个问题在Stack Overflow中也是一个非常热门的问题。在投票比较高的几个答案中给出了几种不同的方法,但是他们的时间复杂度也是各不相同的…

最常问的Java面试题,有Get吗?

1. import java和javax有什么区别 刚开始的时候JavaAPI所必需的包是java开头的包,javax当时只是扩展API包来说使用。然而随着时间的推移,javax逐渐的扩展成为Java API的组成部分。但是,将扩展从javax包移动到java包将是太麻烦了,…

Java的类型擦除

一、各种语言中的编译器是如何处理泛型的 通常情况下,一个编译器处理泛型有两种方式: 1.Code specialization。在实例化一个泛型类或泛型方法时都产生一份新的目标代码(字节码or二进制代码)。例如,针对一个泛型list&…

如何高效学习java呢?

1.基础阶段的学习 在这个学习阶段你应该找一个好的基础学习视频,对着视频认真进行学习,每天自己要逼着自己学习,大学很容易让人颓废。边看还要变敲代码,不要用ide用记事本有利于后期的代码编写习惯,还要做好笔记哦。 …

Java中数组的初始化

一、什么是初始化 在Java程序开发中,使用数组之前都会对其进行初始化,这是因为数组是引用类型,声明数组只是声明一个引用类型的变量,并不是数组对象本身,只要让数组变量指向有效的数组对象,程序中就可使用…

JAVA基础知识需要注意的细节

int 4字节 float 4字节(保留8位有效数字,并且后面必须跟f) double 8字节(保留16位有效数字,可以不用跟d,基本上13.56指的就是double类型数据) byte 1字节 short 2字节 long 8字节 控制台输出为12.0的时候要 么是…

Java程序员如何不断提高自己的专业技能

1、一定要看书 现在学习Java变得比以前容易多了,除了有大量的视频教程外,还有专业的java培训机构,这都使学习变得更加傻瓜化,然而我要说的是,Java虽然变得越来越容易学,然而那只代表入门容易,并…

Java学习路线,你值得了解

Java学习路线,了解一下! 需要资料的欢迎加入学习交流群:9285,05736

_linux中curl命令详解-linux运维

linux中curl命令的使用详情:1、【curl url】获取该网址的文本信息;2、【curl -i url】获取该网址的文本信息以及协议头部信息;3、【curl -x proxy url】使用代理获取网页文本信息。linux中curl命令的使用详情:1、curl url(获取该网…

Java的重载与覆盖,傻傻分不清!

重载和覆盖是JAVA多态性的不同表现方式,其中重载是在一个类中多态性的一种表现,是指在一个类中定义了多个同名的方法,他们或有不同参数个数或有不同参数类型。 在使用重载时需注意以下几点: 1)重载是通过参数来区分的…

python字符串_教你快速了解 Python 字符串

我们知道字符串是 Python 中最常用的数据类型。我们可以使用引号(或")来创建字符串。创建字符串很简单,只要为变量分配一个值即可。例如:var1 Hello World! var2 "Python Runoob"Python 访问字符串中的值Python 不支持单字符类型&#…

那些年踩过的Java异常,简直了!

1、NullPointerException 空指针异常,操作一个 null 对象的方法或属性时会抛出这个异常。具体看这篇文章:Java 避免空指针的 5 个案例。 2、OutOfMemoryError 内存异常异常,这不是程序能控制的,是指要分配的对象的内存超出了当前最…

字体怎么安装到电脑上_文章还在使用电脑上的固定字体?这款字体软件超好用...

在我们平日里的工作以及生活当中,我们经常会看到一些文字的文档。但是,有的时候我们会因为文字在文档内太多单一,从而觉得枯燥乏味一点了都没有。尤其是在用电脑读文本小说、或者是说明文档的的时候,字体千篇一律,看着…

Java枚举类型

一、枚举定义 枚举不能定义在静态方法中 一般自定义的枚举类型都属于Enum的子类型EnumType 它默认就有两个静态方法(类方法):values()和valueOf() values()返回的是EnumType类型的实例数组 valueOf()返回的是EnumType类型的实例 二、举例:自定义Co…

捡到的苹果手机怎么解id锁_苹果手机软解和硬解的区别

苹果手机出现激活锁很多人去搜索答案,或者去问手机维修店的人,没有一人能准确说的让你明白清楚,还是那句老话,复杂的问题一句两句是说不清楚的,在你没搞懂之前不要心浮气躁,这次就用大白话给有疑问的用户理…

golang select default continue_Golang+VSCode环境配置

安装golang、gitgolang官网下载Go语言安装包,安装。默认在 C:Go官网下载git,安装。默认在C:Program FilesGit配置环境变量用户环境变量新建 GOBIN 值为 工作目录bin (以后存的的是编译好的可执行文件)新建 GOPATH 值为 工作目录&a…

java面向对象多态特性

一、多态的概念 多态是继封装,继承之后,面向对象的三大特性。 现实事物经常会体现出多种形态,如学生,学生是人的一种,则一个具体的张三同学既是学生也是人,即出现两种形态。 java作为面向对象的语言&…