打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Java微框架的兴起,流行的微服务框架介绍


什么是微服务框架?

微框架是一种极简主义的web应用程序框架。与传统的大型应用程序框架不同的是:

关注开发的简单性和速度

通常小得多的代码库

缺乏一些高级特性,如模板引擎、高级安全特性等。

它不是一个科学的定义和一些框架。例如,在两者的边界上,它是轻量级的,比我们说的Spring要小得多,但是在另一方面,它是很好的特色和非平凡的。

值得补充的是,并不是Java发明的微框架。早期的例子之一是来自Ruby(2007)的Sinatra,它激发了相当多的Java微框架。我相信有些读者会熟悉甚至更早的例子-如果你是,请在评论区给我留言!

为什么微框架越来越流行?

首先,微框架还不是主流。这可能很快就会改变,特别是随着对服务器架构的兴趣的快速增长。Serverless真正受益于小型和轻量级部署—如果您希望在这种上下文中使用Java,那么微框架似乎是一个很好的选择。

另一个推动其流行的因素是容器(Docker)、容器管理系统(Kubernetes)以及API网关等模式的日益采用。突然间,服务不再需要像以前那样处理许多问题。

如果微框架本身不容易使用,那么这一切都无关紧要。新项目令人惊叹。我是企业Spring Boot的忠实拥护者,但我不能否认Javalin的优雅。难以置信的是,今天的微框架创建者仅用几千行代码就能完成的事情!

微框架之旅

说得够多了,让我们看看我最喜欢的项目,看看它们有多简单。

Javalin

一个用于Java和Kotlin的简单web框架。

这是我第一次接触“现代”Java微框架。Javalin是在Kotlin编写的,它支持Java和Kotlin。如果您想编写一个漂亮的REST API,那么Javalin是一种乐趣。

Javalin正在积极开发中,每隔几周就会发布新版本。

Javalin Hello World:

import io.javalin.Javalin;

public class HelloWorld {

public static void main(String[] args) {

Javalin app = Javalin.start(7000);

app.get('/', ctx -> ctx.result('Hello World'));

}

}

Javalin官网:https://javalin.io/

Spark Java

Spark -在Kotlin和Java 8中创建web应用程序的微型框架,只需最少的努力。

早在2011年Java就采用了微框架。Spark非常小,重点突出,可能是这里提到的框架中最常用的。

Spark正在积极开发,每隔几个月就会发布bug修复和维护。新功能的添加频率较低。

Spark Hello World:

import static spark.Spark.*;

public class HelloWorld {

public static void main(String[] args) {

get('/hello', (req, res) -> 'Hello World');

}

}

官网:http://sparkjava.com/

Micronaut

Micronaut用于构建模块化、易于测试的微服务应用程序的现代、基于jvm的全栈框架。

有了Micronaut,我们就离屏障越来越近了被认为是微框架的东西和不被认为是微框架的东西。这个框架非常简单,但是它比大多数竞争对手都多。我认为它是一种非常精简版的Spring Boot。

Micronaut的伟大之处在于他们对云的关注。在AWS上工作并使编写serverless应用程序变得很容易,这是他们优先考虑的问题。

1.0.0版本的第一个里程碑版本是在2018年5月30日发布的,所以我们还处在早期阶段。我认为Micronaut很有可能成为下一个大事件,所以关注一下这个!

Micronaut Hello World:

import io.micronaut.runtime.Micronaut;

public class Application {

public static void main(String[] args) {

Micronaut.run(Application.class);

}

}

import io.micronaut.http.annotation.Controller;

import io.micronaut.http.annotation.Get;

@Controller('/hello')

public class HelloController {

@Get('/')

public String index() {

return 'Hello World';

}

}

官网地址:http://micronaut.io/

Ktor

易于使用,有趣和异步。

不是Java,而是Kotlin微框架。Ktor是由JetBrains公司赞助和开发的,JetBrains是Kotlin的创造者,它致力于使开发变得简单和有趣。我还没有机会测试它,但是基于Kotlin爱好者和JetBrains的支持,值得一提。

Ktor还没有发布1.0.0版本,但应该是在今年的某个时候。

Ktor Hello World:

import io.ktor.application.*

import io.ktor.http.*

import io.ktor.response.*

import io.ktor.routing.*

import io.ktor.server.engine.*

import io.ktor.server.netty.*

fun main(args: Array) {

val server = embeddedServer(Netty, port = 8080) {

routing {

get('/') {

call.respondText('Hello World!', ContentType.Text.Plain)

}

get('/demo') {

call.respondText('HELLO WORLD!')

}

}

}

server.start(wait = true)

}

官网:http://ktor.io/

其他值得注意的服务网框架

很难对所有Java微框架进行概述。以下是我没有进一步探究的一些问题,但仍然可以进行研究和考虑:

Ratpack—Ratpack是一组用于构建可伸缩HTTP应用程序的Java库。它是一个精干而强大的基础,而不是一个包罗万象的框架。

Jooby -可伸缩、快速、模块化的Java微web框架。

Akka HTTP——Akka HTTP模块在Akka -actor和Akka -stream之上实现完整的服务器和客户端HTTP栈。它不是web框架,而是提供和使用基于http的服务的更通用的工具包。

Dropwizard是一个用于开发操作系统友好、高性能、基于rest的web服务的Java框架。

Jodd - Jodd是一组微型框架和开发人员友好的工具和实用工具。简单的代码。小尺寸。良好的表现。无论什么。使用你喜欢什么。

Armeria -是一个开源的异步HTTP/2 RPC/REST客户端/服务器库,构建在Java 8、Netty、Thrift和gRPC之上。

Ninja - Ninja是一个完整的Java web框架。坚如磐石,速度快,效率高。

Pippo——它是一个开放源码(Apache License)的Java微型web框架,具有最小的依赖性和快速的学习曲线。

Rapidoid——Rapidoid是一个非常快速的HTTP服务器和现代Java web框架/应用程序容器,非常关注高生产率和高性能。

在这个列表之外,我建议您查看Ratpack、Jooby和Dropwizard。特别是前两个框架与微框架哲学非常紧密地联系在一起。

我需要的不仅仅是一个微框架

如果你需要一些轻量级,但功能齐全的东西,我可以推荐两个主要的选择:

Spring Boot - Spring Boot使创建基于生产级的独立的Spring应用程序变得容易,您可以“直接运行”这些应用程序。

Vert.x - Eclipse绿色。x是在JVM上构建反应性应用程序的工具包。

总结

使用微框架工作既有趣又富有成效。有时,我们很容易总是选择Spring Boot,却忘记了Java和Kotlin的创新正在发生。我对Micronaut和Javalin以及它们可能影响未来JVM开发的方式感到特别兴奋。

终极云支持和终极简单真的吸引我。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
更新之后出现The import java.io cannot be resolved错误
还不知道这 11 个超酷的编程新工具你就 out 了!
2021 年 10 大微服务框架
java在指定路径下创建文件,并写入文件内容
编程语言的优缺点
通过Java HTTP连接将网络图片下载到本地
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服