Java轻量级REST库

15

我正在开发一个Java Web应用程序,希望找到一个轻量版的REST。

我已经看过了RESTlet(www.restlet.org)和Struts 2的REST插件,但我还没有决定。我倾向于使用RESTlet,因为它似乎更加轻量。

有人在没有任何框架或使用框架的情况下实现了RESTful层吗?

由于新的Web层,您遇到过任何性能问题吗?

引入REST是否给您的项目增加了不可控制或不合理的复杂性?(某些复杂性是可以理解的,但我指的是仅仅为了添加REST而过度设计)


请参见 http://meta.stackexchange.com/questions/71068/a-few-possible-duplicate-questions-about-java-rest-what-should-we-do。 - ripper234
6个回答

19

我是JAX-RS的超级粉丝 - 我认为他们在规范方面做得非常好。我在许多项目中使用它,非常愉快地与之合作。

JAX-RS允许您使用具有简单注释的POJO创建REST资源,处理URI映射、HTTP方法和内容协商,所有这些都与依赖注入集成得很好。没有复杂的API需要学习;只需要核心的REST概念(URI、头/响应状态码和内容协商)。FWIW从控制器角度来看,JAX-RS有点像Rails

有许多JAX-RS实现 - 请参见这个线程进行讨论

我的个人建议是使用Jersey,因为它拥有最大、最活跃的社区,具有最佳的功能(WADL支持、隐式视图、spring集成、不错的REST客户机API);但如果您正在使用JBoss/SEAM,您可能会发现RESTeasy更好地集成了一些功能。


8
我是Restlet的忠实粉丝,但我通常使用它来实现主要角色是作为RESTful Web服务的应用程序。听起来你想在现有应用程序中添加一个RESTful API。如果是这样的话,JAX-RS(或Enunciate)基于注释的方法可能更适合你的项目。
至于Restlet,我可以告诉你,我对开发人员和社区印象非常好;他们非常活跃、积极、响应迅速,并致力于提供稳定、高效、可靠和有效的框架。我最喜欢的单一方面是它是REST范例的一个从头开始的实现;因此,Restlet应用程序的外部API和内部实现之间没有阻抗不匹配。我也非常喜欢它的灵活性——它可以在Java应用程序容器/服务器(如JBoss、Tomcat、Jetty等)内运行,也可以独立运行,带有嵌入式HTTP服务器库。

3

我很熟悉使用Enunciate。它使用简单的注解来提供REST和/或SOAP端点。

http://enunciate.codehaus.org

Ryan Heaton也一直提供着顶级支持。


3
你知道现在有一个用于访问RESTful服务的新JCP API,同时还有:

JAX-RS JCP311 https://jsr311.dev.java.net/

开源版本被称为Project Jersey。


Jersey[1] 是 JSR-311 的一种实现。它可以单独下载,也可以作为 Glassfish[3](Sun的开源应用服务器)的一部分下载。Restlet[4] 即将推出的 2.0 版本也实现了 JSR-311。 [1] https://jersey.dev.java.net/ [2] http://jsr311.dev.java.net/ [3] http://glassfish.dev.java.net/ [4] http://restlet.org/ - Avi Flax
JSR-311 不是用于访问 RESTful 服务,而是用于提供/实现 RESTful 服务。访问 RESTful 服务意味着它充当客户端,不过 Jersey 提供了一个 REST 客户端库。 - Hendy Irawan

1

我正在为gliffy.com开发REST API,我们最终选择了自己开发。我们不想引入Struts 2、Spring或其他框架。我看了看RESTLet,发现它非常混乱和复杂。

Apache有一个JAX-RS规范的实现,但它还没有最终确定,并且也有一些奇怪的地方。我们暂时计划开源我们的解决方案,但这需要几个月的时间。

然而,自己开发很容易。Servlet规范提供了你所需的一切,你可以通过Hibernate轻松连接到数据库(请参见http://www.naildrivin5.com/daveblog5000/?p=39以了解如何设置JPA而不使用EJB3)。


1

我发现Restlet是一种非常优雅的架构。由于我在.NET世界中工作,所以它对我来说不是一个选项,但是我能够按照Restlet相同的基本原则构建自己的框架。 我已经发现将我们的WCF基于契约的SOA应用程序转换为基于REST的应用程序显着简化了应用程序。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接