前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java微框架的兴起,流行微服务框架点评

Java微框架的兴起,流行微服务框架点评

作者头像
程序你好
发布2018-07-23 09:23:01
2.5K0
发布2018-07-23 09:23:01
举报
文章被收录于专栏:程序你好程序你好

微服务框架

随着微服务和轻量级REST API的日益流行,我们目睹了Java的另一个趋势:Java微框架的崛起。Javalin, Micronaut, Spark 和其他很多东西让构建REST api变得轻而易举。在本文中,我将研究这个令人兴奋的领域,并分享我对它们使用的看法。

什么是微服务框架?

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

关注开发的简单性和速度

通常小得多的代码库

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

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

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

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

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

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

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

微框架之旅

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

Javalin

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

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

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

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

Javalin Hello World:

代码语言:java
复制
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

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

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

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

Spark Hello World:

代码语言:java
复制
import static spark.Spark.*;
public class HelloWorld {
public static void main(String[] args) {
get("/hello", (req, res) -> "Hello World");
}
}

官网:http://sparkjava.com/

Micronaut

micronaut

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

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

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

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

Micronaut Hello World:

代码语言:java
复制
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

ktor

易于使用,有趣和异步。

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

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

Ktor Hello World:

代码语言:java
复制
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<String>) {
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开发的方式感到特别兴奋。

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

如果我错过了您最喜欢的框架(或者在我的评论中没有给出公正的评价),请在评论区给我留言。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-06-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序你好 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 什么是微服务框架?
  • 为什么微框架越来越流行?
  • 微框架之旅
  • 其他值得注意的服务网框架
  • 我需要的不仅仅是一个微框架
  • 总结
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档