1.SpringBootJava长期以来一直在构建Spring应用程序。SpringBoot是Spring的一个特定版本,它使微服务构建更容易。SpringBoot的创建是为了自启动任何类型的Spring项目,而不仅仅是微服务。应用完成后,SpringBoot会混入web服务器,输出一个JAR文件,JVM除外。您可以将其视为原始Docker容器。这也是为什么很多负责构建微服务的开发者非常喜欢SpringBoot的原因。使用Spring开发微服务遵循与Web应用程序相同的MVC理念。该框架享有在多年Java开发过程中构建的所有深度连接,包括与所有主要和辅助数据存储、LDAP服务器以及消息传递工具(如ApacheKafka)的集成。还有很多维护运行中服务器集合的小功能,比如SpringVault,一个维护生产中服务器所需密码的工具。所有这些优势解释了为什么Java程序员多年来一直钟爱SpringBoot。2.EclipseMicroProfile2016年,Java企业社区决定清理Java企业版中的内容,让人们可以使用经典部分构建简单的微服务。他们移除了大量库,但保留了处理REST请求、解析JSON和管理依赖注入的功能代码,最终称为EclipseMicroProfile,其特点是快速和简单。从那时起,MicroProfile社区制定了一个协议,每季度发布一个新版本,同时添加新代码以保持微服务平稳、安全地运行。任何JavaEE开发人员都将非常熟悉开发过程和代码结构,并省去了配置方面的麻烦。3.Dropwizard2011年Dropwizard出现时,Dropwizard框架为开发者提供了一个非常简单的模型,其中包含了很多重要的模块。你可以根据自己的需要添加一些业务逻辑或者配置其他内容,最后你会发现JAR文件很小,启动很快。Dropwizard最大的限制可能是缺乏依赖注入。如果你想使用依赖注入来保持你的代码干净和松散耦合,你需要自己添加库,这与Spring不同,但现在Dropwizard也支持大多数功能,包括日志记录、健康检查和提供弹性代码。4.RedHat的WildFlyThorntail人员使用灵活的配置工具构建了他们自己的MicroProfile版本。该框架最初称为WildFlySwarm,但后来更名为WildFlyThorntail,Thorntail通过指定所需的功能帮助您创建自己的Maven构建文件,然后Maven负责组装所有内容。Thorntail还将通过扫描代码检测组件,也可以使用BOM(物料清单)文件覆盖。当它全部运行时,Thorntail将删除JavaEnterpriseEdition中未使用的部分并创建一个可以使用单个命令部署的小型JAR文件-这是一个非常简洁的功能,允许Thorntail项目将其称为Uber-JAR。这是遵循JavaEnterpriseEdition的另一种传统方式,它不会保留所有繁重的工作。5、HelidonHelidon去掉了Java企业版,保留了一个轻量级的、基于servlet的内核,吸引了大批粉丝。在Helidon,开发人员从Netty开始,并添加用于路由和错误处理的代码。它采用两种基本代码模型,即所谓的SE和MP版本。Node开发者可能更熟悉HelidonSE,因为它的函数调用由句点连接。使用JAX-RS的Java程序员会更熟悉HelidonMP。此外,Helidon还集成了一些口碑不错的工具,这也是它能够吸引大量开发者的原因。6.Cricket另一个快速开发API的框架是Cricket。Cricket很小,但它包含许多额外的功能,例如避免连接到数据库的键值数据存储和控制后台重复处理的调度程序。没有增加复杂性或其他依赖性,因此很容易将代码添加到Cricket并启动独立的微服务。7.Jersey开发web服务的标准方法之一是JavaAPIforRESTfulwebservices(akaJAX-RS),它是在Jersey框架中实现的通用规范。这种方法主要依赖于使用注解来指定路径映射和返回细节。从参数解析到JSON打包的所有其他事情都由Jersey处理。Jersey的主要优点是它实现了JAX-RS标准,这一特性非常流行,以至于一些开发人员习惯于将Jersey与SpringBoot一起使用。8.Play体验JVM跨语言能力的最佳方式之一是使用Play框架,它兼容Java或任何其他JVM语言。它的基础非常现代,具有异步、无状态模型,不会因试图跟踪用户及其会话数据的线程而使服务器过载。有许多附加功能可用于充实网站,例如OpenID、身份验证和文件上传支持。Play代码库已经发展了十多年,因此您还会发现诸如支持XML之类的古老功能。打法既成熟又轻盈,这样的组合颇具特色。9.Swagger构建一个API看起来就像编写一个监听端口的代码一样简单,但是Swagger的开发者并不这么认为。他们创建了一种完整的API规范语言OpenAPI,您可以使用它来描述您的API。这看起来像是一个额外的步骤,但Swagger团队也提供了将该规范转化为自动化测试、文档等的代码。Swagger配置文件中的API很简单,用于实现接口、记录接口并提供一个一套工具来测试其下构建的代码,甚至还有API治理机制。Swagger是一个api生态系统,它不仅限于Java。如果您的团队迁移到Node.js或其他数十种语言中的任何一种,可以使用SwaggerCodegen模块将OpenAPI规范转换为该语言的实现。10.不同的Restlet框架之间最大的区别之一是与其他服务或库的连接数。Restlet项目提供了更大的功能集和连接,它已经与JavaMail等库集成,避免了微服务对某些邮件服务器使用POP、IMAP或SMTP的需要;为了防止构建大型文本索引和元数据,它还集成了Lucene和Solr。Restlet中还有很多特性正在持续开发中。例如,您不需要使用JSON,因为它可以直接处理XML、CSV、YAML和其他一些文件格式,而且它允许用户从Chrome浏览器测试api。
