最好的8個Java RESTful框架。本站提示廣大學習愛好者:(最好的8個Java RESTful框架)文章只能為提供參考,不一定能成為您想要的結果。以下是最好的8個Java RESTful框架正文
曩昔的每year,出現出愈來愈多的Java框架。就像JavaScript,每一個人都以為他們曉得一個好的框架的功效應當是怎樣樣的。連我的老祖母如今也應用 一個我歷來沒有據說過並且能夠永久不會應用的框架。打趣歸打趣,可以做簡直任何事的癡肥的框架市場曾經飽和,,然則若何評判呢?這篇文章旨在供給今朝最好的 Java RESTfulful 框架。我只引見輕量級的產物, 略過了那些癡肥的過度設計的框架。同時,我只想要他們穩固和成熟,供給簡略,輕量級的特色。我只在引見Play frameworks時打破這條規矩,來由稍後給出。在未來的項目中應用哪一個 Java RESTful框架完整取決於你以後的需求。為了便於你棄取,我將列出最凸起的框架功效,願望這能節儉一些你的時光。
Dropwizard
出生時光: 2011
評分: 4.5/5
Dropwizard 供給了穩固成熟的Java庫, 並封裝成一個簡略的輕量級的包。
Dropwizard 介於框架和庫之間。它供給了一個開辟web運用法式的全體所需。因為內置模塊化,一個運用法式可以堅持小而精悍的特色,削減開辟和保護的時光,削減累贅。
Dropwizard 應用已有的 Jetty HTTP 庫,嵌入到你的項目中,無需內部的server。一切的Dropwizard項目都有一個 main 辦法來治理內建的 HTTP server.
鏈接
官方站點 GITHUB 文檔
長處
疾速的項目構建和啟動
模塊化
弗成思議的快(至多依據內建的 metric 測得的成果)
Jetty for HTTP, Jersey for REST, 和 Jackson for JSON
也支撐其它的庫, 好比 Mustache, Logback, JDBI, Hibernate Validator, Guava, …
應用Metrics支撐監控
Main辦法啟動 Jetty server,可以輕易地調試和保護
社區力度強
缺陷
Dropwizard文檔是重要的常識起源,但談不上優良。你能夠須要搜刮和挖掘第三方類庫的文檔。
由於某些緣由毛病被看成通俗文本, 假如你願望呼應成果老是JSON,這能夠有成績
確保應用最新的Dropwizard, 一些老版本應用了放棄的第三方庫。 並且晚期的Dropwizzard也很難進級
例子
package com.example.helloworld; import io.dropwizard.Application; import io.dropwizard.setup.Bootstrap; import io.dropwizard.setup.Environment; import com.example.helloworld.resources.HelloWorldResource; import com.example.helloworld.health.TemplateHealthCheck; public class HelloWorldApplication extends Application<HelloWorldConfiguration> { public static void main(String[] args) throws Exception { new HelloWorldApplication().run(args); } @Override public String getName() { return "hello-world" ; } @Override public void initialize(Bootstrap<HelloWorldConfiguration> bootstrap) { // nothing to do yet } @Override public void run(HelloWorldConfiguration configuration, Environment environment) { // nothing to do yet } }
注解
小我不想為年夜的項目推舉這個框架。不外假如你想測驗考試的話,你不會掉望的。重要是這個框架應用最好的古代的Java web 組件,組裝成一個簡略易用的框架。
不幸的是這也帶來了它的成績。 將這些庫糅合起來能夠招致弗成預感的成績。這也是我為何給它減失落0.5顆星,而沒有評為滿分5顆星。
Jersey
出生時光: 2012 (Jersey 2.X)
評分: 5/5
Jersey RESTful 框架是開源的RESTful框架, 完成了JAX-RS (JSR 311 & JSR 339) 標准。它擴大了JAX-RS 完成, 供給了更多的特征和對象, 可以進一步地簡化 RESTful service 和 client 開辟。雖然絕對新怡,它曾經是一個產物級的 RESTful service 和 client 框架。
鏈接
官方站點 GITHUB 文檔
長處
優良的文檔和例子
疾速
超等輕易的路由
膩滑的 JUnit 集成
就小我而言, 當開辟 RESTful service 時, JAX-RS 完成要好過 MVC 框架。
可以集成到其它庫/框架 (Grizzly, Netty). 這也能夠是許多產物應用它的緣由。
支撐異步鏈接
不愛好 servlet container? 應用Jersey的時刻可以不消它們。
WADL, XML/JSON support
包括在Glassfish中
缺陷
Jersey 2.0+應用了有些龐雜的依附注入完成
能夠不是一件好事。Jersey 1.X 應用較老的 JAX-RS 完成
一年夜堆第三方庫只支撐 Jersey 1.X, 在 Jersey 2.X 弗成用
例子
package org.glassfish.jersey.examples.helloworld; import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.Produces; @Path ( "helloworld" ) public class HelloWorldResource { public static final String CLICHED_MESSAGE = "Hello World!" ; @GET @Produces ( "text/plain" ) public String getHello() { return CLICHED_MESSAGE; } }
注解
Jersey 是我的選擇, 5顆星。
Ninja Web Framework
出生時光: 2012
評分: 3.5/5
Ninja Web Framework是全棧的 java web framework。穩固, 疾速, 靠得住, 產物級.
它供給了開辟,測試,宣布,保護 RESTful web運用的一切(Servlets, Guice, JPA, Flyway migrations, Maven, etc.).
就像 DropWizzard, Ninja Web Framework 是一個集成的軟件棧。你不用樹立你本身的,只需應用 Maven archetype生成一個新的項目,導入到IDE中便可以開端編碼了。
鏈接
官方站點 GITHUB 文檔
長處
快
疾速的項目構建和啟動
模塊化
XML, HTML, JSON襯著
也支撐其它的庫 (如 Guice, Logback, Guava, etc.)
很好的數據耐久化懈弛存
不愛好 servlet container? U可以選擇你愛好的容器
假如基本就不愛好容器,可使用 standalone 形式, 應用Jetty作為一個自履行的jar
缺陷
異樣,就像DropWizzard, 文檔有然則不敷好。我花了好長時光去懂得它。這個框架也依附許多其它的庫,有時刻想獲得所需的信息很費事。
不怎樣知名,社區小。 有流言說這個框架是由那些切換到Scala的 Play 2.X 用戶創立的
例子
package controllers; public class ApplicationController { public Result index() { Person person = new Person(); person.name = "John Johnson" ; return Results.json().render(person); } }
注解
看起來不錯,然則在它成熟之前我照樣把它丟在一邊吧。
Play Framework
出生時光: 2011
評分: 4/5
應用Play Framework 很輕易地創立,構建和宣布 web 運用法式,支撐 Java & Scala。它應用Akka, 基於一個輕量級的無狀況的架構。它應當運用於年夜范圍地低CPU和內存消費的運用。
鏈接
官方站點 GITHUB 文檔
長處
易於開辟
快,然則沒有其它的一些框架快
基於 Netty, 支撐非壅塞的 I/O. 並行處置長途挪用的時刻很優良
社區很年夜
疾速的項目構建和啟動
模塊化
MVC
REST, JSON/XML, Web Sockets, non-blocking I/O
只需刷新閱讀器便可以看到最新的轉變
支撐Async
有出書的書
缺陷
版本2.0 是最有爭議的Java框架。 切換至Switch to Scala made some Java developers outraged.
不向後兼容; Play 2.X 重寫了
號稱輕量級,但有些癡肥
SBT構建對象. 號稱 Maven 殺手, 然則從沒有優良到調換它。難以進修和設置裝備擺設
非 servlet
Breaking changes across releases
例子
package controllers import play.api._ import play.api.mvc._ class Application extends Controller { def hello(name: String) = Action { Ok( "Hello " + name + "!" ) } }
注解
埋怨歸埋怨,我照樣一向愛好和首選這個框架。不幸的是,我只能給它4顆星。我深信 基於JAX-RS的框架更合適 RESTful web services.
RestExpress
出生時光: 2009
評分: 3/5
RestExpress是一個非容器的輕量級的 Netty HTTP棧的包裝, 以便更輕易地創立 Java RESTful services.
RestExpress 目的是支撐最好的 RESTful 理論。
鏈接
GITHUB
長處
真實的微框架
頂級的機能,快,靠得住
XML/JSON
最老的也是最穩固的 RESTful 框架之一
缺陷
沒有文檔
簡直沒有支撐
很小的社區
例子
package com.example; import java.io.IOException; import io.netty.handler.codec.http.HttpMethod; import org.restexpress.RestExpress; public class Main { public static RestExpress startServer(String[] args) throws IOException { RestExpress server = new RestExpress(); MyResource r = new MyResource(); server.uri( "/myapp/myresource" , r) .method(HttpMethod.GET) .noSerialization(); server.uri( "/myapp/myresource" , r) .method(HttpMethod.POST); server.bind( 8080 ); return server; } public static void main(String[] args) throws Exception { RestExpress server = startServer(args); System.out.println( "Hit enter to stop it..." ); System.in.read(); server.shutdown(); } }
注解
雖然這個框架超等快,我也不想推舉它。文檔缺少和沒有支撐使它成為一個欠佳的框架。看在速度的份上給它3顆星。
Restlet
出生時光: 2005
評分: 4.5/5
Restlet 贊助Java法式員樹立年夜范圍的疾速的相符 RESTful 架構形式的web api。
它供給了壯大的路由和 filtering 體系。同一的client/server Java API. 知足一切重要的平台 (Java SE/EE, Google AppEngine, OSGi, GWT, Android) 和供給了有數的擴大以知足法式員的需求。
據我說知,它是第一個 java RESTful web 框架。許多公司都在用它,然則你能夠從未據說過它,似乎它曾經弗成見了。
鏈接
官方站點 GITHUB 文檔
長處
壯大
企業級的框架
多平台 Java SE, Java EE, Google Web Toolkit, Google AppEngine, Android, OSGi environments
支撐JAX-RS (就像 Jersey)
年夜部門高等 RESTful 支撐
模塊化
支撐其它庫
開辟一向活潑
智能的url綁定, 全功效的 URI 路由
有相干的書本
缺陷
異常峻峭的進修曲線
封閉的社區,雖然 StackOverflow 上照樣開放的
不再風行,更多的是由於 Play Framework 和 Jersey
例子
public class Part03 extends ServerResource { public static void main(String[] args) throws Exception { // Create the HTTP server and listen on port 8182 new Server(Protocol.HTTP, 8182 , Part03. class ).start(); } @Get ( "txt" ) public String toString() { return "hello, world" ; } }
注解
雖然這個框架還一向風行,但到它的和以後的完成度,我不克不及給它5顆星。
Restx
出生時光: 2013
評分: 3.5/5
Restx 是一個輕量級的,模塊化的,特征浩瀚的,超快的開源 Java REST 框架。
鏈接
官方站點 GITHUB 文檔
長處
疾速,輕量級
輕易搭建
真實的微框架
模塊化
支撐其它庫
支撐MongoDB
缺陷
不友愛的使人困惑的文檔。關於這類框架我希冀能有好一點的文檔
太young
今朝還不支撐異步Async
例子
@GET ( "/message/{id}" ) public Message sayHello(String id, // path param String who // query param ) { return new Message().setMessage(String.format( "hello %s, it's %s" , who, DateTime.now().toString( "HH:mm:ss" ))); } @POST ( "/message/{id}" ) public Message sayHello(String id, // path param Message msg // body param ) { return msg.setMessage(String.format( "%s @ %s" , msg.getMessage(), DateTime.now().toString( "HH:mm:ss" ))); }
注解
真心來說我沒有在這個框架上消費太多時光。不值得在另外一個框架上消費太多精神,我意思是說,Java框架市場曾經愈來愈碎片化了,就像 JavaScript 市場,應當停滯這類趨向了。
Spark Framework
出生時光: 2011
評分: 3.5/5
不要和 Apache 的年夜數據框架 Spark 弄混, 這裡的 Spark 框架是一個輕量級的 Java web 框架,用來停止疾速的開辟(50% Spark用戶應用 Spark 創立 REST APIs)。 它受 Ruby 框架 Sinatra 啟示。
它有一個不到1M的最小化的內核, 供給了一切根本的特征, 用來構建 RESTful 或許傳統的 web 運用法式。
鏈接
官方站點 GITHUB 文檔
長處
快,輕量級
優良的疾速原型
易於搭建
常常和AngularJS搭配應用
真實的微框架
應用 Jetty
可以用在容器中或許自力運轉
缺陷
文檔可以更好,它不合適初學者
不合適年夜型項目
社區小
例子
import static spark.Spark.*; public class HelloWorld { public static void main(String[] args) { get( "/hello" , (req, res) -> "Hello World" ); } }
注解
這個框架合適初始開辟。重要用作小小項目或許原型。